From bdc33146dc0a6a6687e173a5f00b0fbda2ac5c0e Mon Sep 17 00:00:00 2001 From: xii69 Date: Sat, 19 Sep 2026 07:48:34 +0330 Subject: [PATCH] Added hasEnchantments method for better code style Throwing an exception instead of replacing the given value with the maximum / minumum allowed in Vanilla commands Added configuration options for NachoSpigot commands --- .../command/defaults/EnchantCommand.java | 2 +- .../command/defaults/VanillaCommand.java | 5 ++--- .../java/org/bukkit/inventory/ItemStack.java | 11 ++++++++++ .../com/windpvp/windspigot/WindSpigot.java | 21 +++++++++++-------- .../windspigot/config/WindSpigotConfig.java | 9 ++++++++ 5 files changed, 35 insertions(+), 13 deletions(-) diff --git a/WindSpigot-API/src/main/java/org/bukkit/command/defaults/EnchantCommand.java b/WindSpigot-API/src/main/java/org/bukkit/command/defaults/EnchantCommand.java index cda8f8890..3027bdf54 100644 --- a/WindSpigot-API/src/main/java/org/bukkit/command/defaults/EnchantCommand.java +++ b/WindSpigot-API/src/main/java/org/bukkit/command/defaults/EnchantCommand.java @@ -98,7 +98,7 @@ public boolean execute(CommandSender sender, String commandLabel, String[] args) Map enchantments = item.getEnchantments(); boolean conflicts = false; - if (!force && !enchantments.isEmpty()) { // TODO: Improve this to use a "hasEnchantments" call + if (!force && !item.hasEnchantments()) { for (Map.Entry entry : enchantments.entrySet()) { Enchantment enchant = entry.getKey(); diff --git a/WindSpigot-API/src/main/java/org/bukkit/command/defaults/VanillaCommand.java b/WindSpigot-API/src/main/java/org/bukkit/command/defaults/VanillaCommand.java index 95b0290e0..59b1486d7 100644 --- a/WindSpigot-API/src/main/java/org/bukkit/command/defaults/VanillaCommand.java +++ b/WindSpigot-API/src/main/java/org/bukkit/command/defaults/VanillaCommand.java @@ -82,11 +82,10 @@ public static double getDouble(CommandSender sender, String input) { public static double getDouble(CommandSender sender, String input, double min, double max) { double result = getDouble(sender, input); - // TODO: This should throw an exception instead. if (result < min) { - result = min; + throw new NumberFormatException(String.format("Number must be at least %s", min)); } else if (result > max) { - result = max; + throw new NumberFormatException(String.format("Number must be at most %s", max)); } return result; diff --git a/WindSpigot-API/src/main/java/org/bukkit/inventory/ItemStack.java b/WindSpigot-API/src/main/java/org/bukkit/inventory/ItemStack.java index 42618bfc6..a6a98a4f9 100644 --- a/WindSpigot-API/src/main/java/org/bukkit/inventory/ItemStack.java +++ b/WindSpigot-API/src/main/java/org/bukkit/inventory/ItemStack.java @@ -404,6 +404,17 @@ public Map getEnchantments() { return meta == null ? ImmutableMap.of() : meta.getEnchants(); } + // WindSpigot start + /** + * Checks if this ItemStack has any enchantments. + * + * @return True if this has any enchantments + */ + public boolean hasEnchantments() { + return !getEnchantments().isEmpty(); + } + // WindSpigot stop + /** * Adds the specified enchantments to this item stack. *

diff --git a/WindSpigot-Server/src/main/java/com/windpvp/windspigot/WindSpigot.java b/WindSpigot-Server/src/main/java/com/windpvp/windspigot/WindSpigot.java index 077d1ba38..a4c63db0f 100644 --- a/WindSpigot-Server/src/main/java/com/windpvp/windspigot/WindSpigot.java +++ b/WindSpigot-Server/src/main/java/com/windpvp/windspigot/WindSpigot.java @@ -85,19 +85,22 @@ private void initCmds() { PingCommand pingCommand = new PingCommand("ping"); commandMap.register(pingCommand.getName(), "", pingCommand); } - - // NachoSpigot commands - // TODO: add configuration for all of these - SetMaxSlotCommand setMaxSlotCommand = new SetMaxSlotCommand("sms"); // [Nacho-0021] Add setMaxPlayers within Bukkit.getServer() and SetMaxSlot Command - commandMap.register(setMaxSlotCommand.getName(), "ns", setMaxSlotCommand); + if (WindSpigotConfig.setMaxSlotCommand) { + SetMaxSlotCommand setMaxSlotCommand = new SetMaxSlotCommand("sms"); // [Nacho-0021] Add setMaxPlayers within Bukkit.getServer() and SetMaxSlot Command + commandMap.register(setMaxSlotCommand.getName(), "ns", setMaxSlotCommand); + } - SpawnMobCommand spawnMobCommand = new SpawnMobCommand("spawnmob"); - commandMap.register(spawnMobCommand.getName(), "ns", spawnMobCommand); + if (WindSpigotConfig.spawnMobCommand) { + SpawnMobCommand spawnMobCommand = new SpawnMobCommand("spawnmob"); + commandMap.register(spawnMobCommand.getName(), "ns", spawnMobCommand); + } - KnockbackCommand knockbackCommand = new KnockbackCommand("kb"); - commandMap.register(knockbackCommand.getName(), "ns", knockbackCommand); + if (WindSpigotConfig.knockbackCommand) { + KnockbackCommand knockbackCommand = new KnockbackCommand("kb"); + commandMap.register(knockbackCommand.getName(), "ns", knockbackCommand); + } } private void initStatistics() { diff --git a/WindSpigot-Server/src/main/java/com/windpvp/windspigot/config/WindSpigotConfig.java b/WindSpigot-Server/src/main/java/com/windpvp/windspigot/config/WindSpigotConfig.java index 0458c2b30..5f34faf95 100644 --- a/WindSpigot-Server/src/main/java/com/windpvp/windspigot/config/WindSpigotConfig.java +++ b/WindSpigot-Server/src/main/java/com/windpvp/windspigot/config/WindSpigotConfig.java @@ -161,6 +161,9 @@ static void loadComments() { // NachoSpigot stuff c.addComment("settings.save-empty-scoreboard-teams", "Toggles whether or not the server should save empty scoreboard teams"); + c.addComment("settings.command.setmaxslot", "Enables the /setmaxslot command"); + c.addComment("settings.command.spawnmob", "Enables the /spawnmob command"); + c.addComment("settings.command.knockback", "Enables the /knockback command"); c.addComment("settings.command.version", "Enables the /version command"); c.addComment("settings.command.plugins", "Enables the /plugins command"); c.addComment("settings.command.reload", "Enables the /reload command (It is recommended to not use /reload)"); @@ -438,11 +441,17 @@ private static void saveEmptyScoreboardTeams() { saveEmptyScoreboardTeams = getBoolean("settings.save-empty-scoreboard-teams", false); } + public static boolean setMaxSlotCommand; + public static boolean spawnMobCommand; + public static boolean knockbackCommand; public static boolean enableVersionCommand; public static boolean enablePluginsCommand; public static boolean enableReloadCommand; private static void commands() { + setMaxSlotCommand = getBoolean("settings.command.setmaxslot", true); + spawnMobCommand = getBoolean("settings.command.spawnmob", true); + knockbackCommand = getBoolean("settings.command.knockback", true); enableVersionCommand = getBoolean("settings.command.version", true); enablePluginsCommand = getBoolean("settings.command.plugins", true); enableReloadCommand = getBoolean("settings.command.reload", false);