@@ -33,19 +33,17 @@ public abstract class BaseCommand implements CommandExecutor {
|
||||
}
|
||||
|
||||
protected void playBlockShortcutSound(Player player, Material material, Sound fallbackSound) {
|
||||
Sound sound = resolvePlaceSound(material);
|
||||
Sound sound = fallbackSound;
|
||||
if (sound == null) {
|
||||
sound = fallbackSound;
|
||||
sound = resolvePlaceSound(material);
|
||||
}
|
||||
|
||||
if (sound != null) {
|
||||
player.playSound(player.getLocation(), sound, 1.0F, 1.0F);
|
||||
}
|
||||
playShortcutSound(player, sound);
|
||||
}
|
||||
|
||||
protected void playShortcutSound(Player player, Sound sound) {
|
||||
if (sound != null) {
|
||||
player.playSound(player.getLocation(), sound, 1.0F, 1.0F);
|
||||
player.playSound(player.getLocation(), sound, 0.65F, 1.0F);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@ import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.NamespacedKey;
|
||||
import org.bukkit.Sound;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
@@ -70,6 +71,7 @@ public class BlocksMenuCommand extends BaseCommand implements Listener {
|
||||
return;
|
||||
}
|
||||
player.openInventory(menu);
|
||||
playShortcutSound(player, Sound.UI_BUTTON_CLICK);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -85,6 +87,7 @@ public class BlocksMenuCommand extends BaseCommand implements Listener {
|
||||
}
|
||||
|
||||
player.openInventory(menu);
|
||||
playShortcutSound(player, Sound.UI_BUTTON_CLICK);
|
||||
}
|
||||
|
||||
private int renderSections(Inventory menu, Player player, org.bukkit.configuration.ConfigurationSection sectionsConfig) {
|
||||
|
||||
@@ -2,8 +2,6 @@ package cn.infstar.essentialsC.commands;
|
||||
|
||||
import cn.infstar.essentialsC.EssentialsC;
|
||||
import cn.infstar.essentialsC.LangManager;
|
||||
import cn.infstar.essentialsC.ModuleManager;
|
||||
import cn.infstar.essentialsC.tpsbar.TpsBarService;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandSender;
|
||||
@@ -37,17 +35,7 @@ public class HelpCommand extends BaseCommand implements TabCompleter {
|
||||
EssentialsC.getLangManager().reload();
|
||||
plugin.getModuleManager().reload();
|
||||
CommandRegistry.clearCache();
|
||||
if (plugin.getMaintenanceManager() != null && plugin.getModuleManager().isEnabled(ModuleManager.MAINTENANCE)) {
|
||||
plugin.getMaintenanceManager().reload();
|
||||
}
|
||||
TpsBarService tpsBarService = plugin.getTpsBarManager();
|
||||
if (tpsBarService != null) {
|
||||
if (plugin.getModuleManager().isEnabled(ModuleManager.TPSBAR)) {
|
||||
tpsBarService.reloadSettings();
|
||||
} else {
|
||||
tpsBarService.shutdown();
|
||||
}
|
||||
}
|
||||
plugin.reloadRuntimeModules();
|
||||
sender.sendMessage(getLang().getPrefixedString("messages.config-reloaded"));
|
||||
return true;
|
||||
}
|
||||
@@ -68,17 +56,7 @@ public class HelpCommand extends BaseCommand implements TabCompleter {
|
||||
EssentialsC.getLangManager().reload();
|
||||
plugin.getModuleManager().reload();
|
||||
CommandRegistry.clearCache();
|
||||
if (plugin.getMaintenanceManager() != null && plugin.getModuleManager().isEnabled(ModuleManager.MAINTENANCE)) {
|
||||
plugin.getMaintenanceManager().reload();
|
||||
}
|
||||
TpsBarService tpsBarService = plugin.getTpsBarManager();
|
||||
if (tpsBarService != null) {
|
||||
if (plugin.getModuleManager().isEnabled(ModuleManager.TPSBAR)) {
|
||||
tpsBarService.reloadSettings();
|
||||
} else {
|
||||
tpsBarService.shutdown();
|
||||
}
|
||||
}
|
||||
plugin.reloadRuntimeModules();
|
||||
sender.sendMessage(getLang().getPrefixedString("messages.config-reloaded"));
|
||||
return true;
|
||||
}
|
||||
@@ -360,7 +338,7 @@ public class HelpCommand extends BaseCommand implements TabCompleter {
|
||||
private List<String> completeMaintenanceArgs(String partialInput) {
|
||||
List<String> completions = new ArrayList<>();
|
||||
String partial = partialInput.toLowerCase();
|
||||
for (String option : List.of("on", "off", "status", "reload")) {
|
||||
for (String option : List.of("on", "off", "status", "reload", "add", "remove", "list")) {
|
||||
if (option.startsWith(partial)) {
|
||||
completions.add(option);
|
||||
}
|
||||
|
||||
@@ -8,6 +8,8 @@ import org.bukkit.entity.Player;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
|
||||
public class MaintenanceCommand extends BaseCommand implements TabCompleter {
|
||||
|
||||
@@ -37,7 +39,7 @@ public class MaintenanceCommand extends BaseCommand implements TabCompleter {
|
||||
return true;
|
||||
}
|
||||
|
||||
switch (args[0].toLowerCase()) {
|
||||
switch (args[0].toLowerCase(Locale.ROOT)) {
|
||||
case "on", "enable", "enabled" -> {
|
||||
maintenanceManager.setEnabled(true);
|
||||
sender.sendMessage(getLang().getPrefixedString("maintenance.messages.enabled"));
|
||||
@@ -53,6 +55,42 @@ public class MaintenanceCommand extends BaseCommand implements TabCompleter {
|
||||
sender.sendMessage(getLang().getPrefixedString("maintenance.messages.reloaded"));
|
||||
return true;
|
||||
}
|
||||
case "add" -> {
|
||||
if (args.length < 2) {
|
||||
sender.sendMessage(getLang().getPrefixedString("maintenance.messages.add-usage"));
|
||||
return true;
|
||||
}
|
||||
|
||||
String target = args[1];
|
||||
if (maintenanceManager.addWhitelistEntry(target)) {
|
||||
sender.sendMessage(getLang().getPrefixedString("maintenance.messages.whitelist-added",
|
||||
Map.of("player", target)));
|
||||
} else {
|
||||
sender.sendMessage(getLang().getPrefixedString("maintenance.messages.whitelist-exists",
|
||||
Map.of("player", target)));
|
||||
}
|
||||
return true;
|
||||
}
|
||||
case "remove" -> {
|
||||
if (args.length < 2) {
|
||||
sender.sendMessage(getLang().getPrefixedString("maintenance.messages.remove-usage"));
|
||||
return true;
|
||||
}
|
||||
|
||||
String target = args[1];
|
||||
if (maintenanceManager.removeWhitelistEntry(target)) {
|
||||
sender.sendMessage(getLang().getPrefixedString("maintenance.messages.whitelist-removed",
|
||||
Map.of("player", target)));
|
||||
} else {
|
||||
sender.sendMessage(getLang().getPrefixedString("maintenance.messages.whitelist-missing",
|
||||
Map.of("player", target)));
|
||||
}
|
||||
return true;
|
||||
}
|
||||
case "list" -> {
|
||||
sendWhitelist(sender, maintenanceManager);
|
||||
return true;
|
||||
}
|
||||
default -> {
|
||||
sender.sendMessage(getLang().getPrefixedString("maintenance.messages.usage"));
|
||||
return true;
|
||||
@@ -65,19 +103,58 @@ public class MaintenanceCommand extends BaseCommand implements TabCompleter {
|
||||
? "maintenance.status.enabled"
|
||||
: "maintenance.status.disabled");
|
||||
sender.sendMessage(getLang().getPrefixedString("maintenance.messages.status",
|
||||
java.util.Map.of("status", status)));
|
||||
Map.of(
|
||||
"status", status,
|
||||
"whitelist_count", String.valueOf(maintenanceManager.getWhitelistCount())
|
||||
)));
|
||||
}
|
||||
|
||||
private void sendWhitelist(CommandSender sender, MaintenanceManager maintenanceManager) {
|
||||
List<String> entries = maintenanceManager.getWhitelistEntries();
|
||||
if (entries.isEmpty()) {
|
||||
sender.sendMessage(getLang().getPrefixedString("maintenance.messages.whitelist-empty"));
|
||||
return;
|
||||
}
|
||||
|
||||
sender.sendMessage(getLang().getPrefixedString("maintenance.messages.whitelist-list",
|
||||
Map.of(
|
||||
"count", String.valueOf(entries.size()),
|
||||
"entries", String.join(", ", entries)
|
||||
)));
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> onTabComplete(CommandSender sender, Command command, String label, String[] args) {
|
||||
if (args.length != 1 || !sender.hasPermission(getPermission())) {
|
||||
if (!sender.hasPermission(getPermission())) {
|
||||
return List.of();
|
||||
}
|
||||
|
||||
String partial = args[0].toLowerCase();
|
||||
if (args.length == 1) {
|
||||
return complete(args[0], List.of("on", "off", "status", "reload", "add", "remove", "list"));
|
||||
}
|
||||
|
||||
if (args.length == 2 && args[0].equalsIgnoreCase("add")) {
|
||||
return complete(args[1], plugin.getServer().getOnlinePlayers().stream()
|
||||
.map(Player::getName)
|
||||
.toList());
|
||||
}
|
||||
|
||||
if (args.length == 2 && args[0].equalsIgnoreCase("remove")) {
|
||||
MaintenanceManager maintenanceManager = plugin.getMaintenanceManager();
|
||||
if (maintenanceManager == null) {
|
||||
return List.of();
|
||||
}
|
||||
return complete(args[1], maintenanceManager.getWhitelistEntries());
|
||||
}
|
||||
|
||||
return List.of();
|
||||
}
|
||||
|
||||
private List<String> complete(String input, List<String> options) {
|
||||
String partial = input.toLowerCase(Locale.ROOT);
|
||||
List<String> completions = new ArrayList<>();
|
||||
for (String option : List.of("on", "off", "status", "reload")) {
|
||||
if (option.startsWith(partial)) {
|
||||
for (String option : options) {
|
||||
if (option.toLowerCase(Locale.ROOT).startsWith(partial)) {
|
||||
completions.add(option);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package cn.infstar.essentialsC.commands;
|
||||
|
||||
import cn.infstar.essentialsC.EssentialsC;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import java.util.HashSet;
|
||||
@@ -20,17 +21,38 @@ public class VanishCommand extends BaseCommand {
|
||||
|
||||
if (vanishedPlayers.contains(uuid)) {
|
||||
vanishedPlayers.remove(uuid);
|
||||
showPlayerToAll(player);
|
||||
showPlayerToAll(plugin, player);
|
||||
player.sendMessage(getLang().getPrefixedString("messages.vanish-disabled"));
|
||||
} else {
|
||||
vanishedPlayers.add(uuid);
|
||||
hidePlayerFromAll(player);
|
||||
hidePlayerFromAll(plugin, player);
|
||||
player.sendMessage(getLang().getPrefixedString("messages.vanish-enabled"));
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
private void hidePlayerFromAll(Player player) {
|
||||
public static void hideVanishedPlayersFrom(EssentialsC plugin, Player observer) {
|
||||
for (Player vanished : plugin.getServer().getOnlinePlayers()) {
|
||||
if (!observer.equals(vanished) && isVanished(vanished)) {
|
||||
observer.hidePlayer(plugin, vanished);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void removeVanished(Player player) {
|
||||
vanishedPlayers.remove(player.getUniqueId());
|
||||
}
|
||||
|
||||
public static void clearAll(EssentialsC plugin) {
|
||||
for (Player player : plugin.getServer().getOnlinePlayers()) {
|
||||
if (isVanished(player)) {
|
||||
showPlayerToAll(plugin, player);
|
||||
}
|
||||
}
|
||||
vanishedPlayers.clear();
|
||||
}
|
||||
|
||||
private static void hidePlayerFromAll(EssentialsC plugin, Player player) {
|
||||
for (Player online : player.getServer().getOnlinePlayers()) {
|
||||
if (online != player) {
|
||||
online.hidePlayer(plugin, player);
|
||||
@@ -38,7 +60,7 @@ public class VanishCommand extends BaseCommand {
|
||||
}
|
||||
}
|
||||
|
||||
private void showPlayerToAll(Player player) {
|
||||
private static void showPlayerToAll(EssentialsC plugin, Player player) {
|
||||
for (Player online : player.getServer().getOnlinePlayers()) {
|
||||
if (online != player) {
|
||||
online.showPlayer(plugin, player);
|
||||
|
||||
@@ -13,7 +13,7 @@ public class WorkbenchCommand extends BaseCommand {
|
||||
@Override
|
||||
protected boolean execute(Player player, String[] args) {
|
||||
player.openWorkbench(null, true);
|
||||
playBlockShortcutSound(player, Material.CRAFTING_TABLE, Sound.BLOCK_CRAFTER_CRAFT);
|
||||
playBlockShortcutSound(player, Material.CRAFTING_TABLE, Sound.UI_BUTTON_CLICK);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user