diff --git a/Plugin/src/main/java/com/willfp/ecoenchants/command/AbstractCommand.java b/Plugin/src/main/java/com/willfp/ecoenchants/command/AbstractCommand.java new file mode 100644 index 00000000..45cb568d --- /dev/null +++ b/Plugin/src/main/java/com/willfp/ecoenchants/command/AbstractCommand.java @@ -0,0 +1,50 @@ +package com.willfp.ecoenchants.command; + +import com.willfp.ecoenchants.config.ConfigManager; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +import java.util.Arrays; +import java.util.List; + +public abstract class AbstractCommand implements CommandExecutor { + private static AbstractCommand instance; + + private final String name; + private final String permission; + private final boolean playersOnly; + + protected AbstractCommand(String name, String permission, boolean playersOnly) { + this.name = name; + this.permission = permission; + this.playersOnly = playersOnly; + + instance = this; + } + + public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { + if(!command.getName().equalsIgnoreCase(name)) return false; + + if(playersOnly && !(sender instanceof Player)) { + sender.sendMessage(ConfigManager.getLang().getMessage("not-player")); + return true; + } + + if (!sender.hasPermission(permission) && sender instanceof Player) { + sender.sendMessage(ConfigManager.getLang().getNoPermission()); + return true; + } + + onExecute(sender, Arrays.asList(args)); + + return true; + } + + public abstract void onExecute(CommandSender sender, List args); + + public static AbstractCommand getInstance() { + return instance; + } +} diff --git a/Plugin/src/main/java/com/willfp/ecoenchants/command/commands/CommandEcodebug.java b/Plugin/src/main/java/com/willfp/ecoenchants/command/commands/CommandEcodebug.java new file mode 100644 index 00000000..a3b51669 --- /dev/null +++ b/Plugin/src/main/java/com/willfp/ecoenchants/command/commands/CommandEcodebug.java @@ -0,0 +1,43 @@ +package com.willfp.ecoenchants.command.commands; + +import com.willfp.ecoenchants.EcoEnchantsPlugin; +import com.willfp.ecoenchants.command.AbstractCommand; +import com.willfp.ecoenchants.config.ConfigManager; +import com.willfp.ecoenchants.enchantments.EcoEnchants; +import org.bukkit.Bukkit; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.enchantments.Enchantment; +import org.bukkit.entity.Player; + +import java.lang.reflect.Field; +import java.util.Arrays; +import java.util.List; +import java.util.Map; + +public final class CommandEcodebug extends AbstractCommand { + private CommandEcodebug() { + super("ecodebug", "ecoenchants.ecodebug", true); + } + + @Override + public void onExecute(CommandSender sender, List args) { + Bukkit.getLogger().info("--------------- BEGIN DEBUG ----------------"); + Player player = (Player) sender; + Bukkit.getLogger().info("Running Version: " + EcoEnchantsPlugin.getInstance().getDescription().getVersion()); + Bukkit.getLogger().info("Held Item: " + player.getInventory().getItemInMainHand().toString()); + Bukkit.getLogger().info("EcoEnchants.getAll(): " + EcoEnchants.getAll().toString()); + Bukkit.getLogger().info("Enchantment.values(): " + Arrays.toString(Enchantment.values())); + try { + Field byNameField = Enchantment.class.getDeclaredField("byName"); + byNameField.setAccessible(true); + Map byName = (Map) byNameField.get(null); + Bukkit.getLogger().info("Enchantment.byName: " + byName.toString()); + } catch (NoSuchFieldException | IllegalAccessException e) { + e.printStackTrace(); + } + + Bukkit.getLogger().info("--------------- END DEBUG ----------------"); + } +} diff --git a/Plugin/src/main/java/com/willfp/ecoenchants/commands/CommandEcoreload.java b/Plugin/src/main/java/com/willfp/ecoenchants/command/commands/CommandEcoreload.java similarity index 64% rename from Plugin/src/main/java/com/willfp/ecoenchants/commands/CommandEcoreload.java rename to Plugin/src/main/java/com/willfp/ecoenchants/command/commands/CommandEcoreload.java index 92c9b822..2abb4e35 100644 --- a/Plugin/src/main/java/com/willfp/ecoenchants/commands/CommandEcoreload.java +++ b/Plugin/src/main/java/com/willfp/ecoenchants/command/commands/CommandEcoreload.java @@ -1,6 +1,7 @@ -package com.willfp.ecoenchants.commands; +package com.willfp.ecoenchants.command.commands; import com.willfp.ecoenchants.EcoEnchantsPlugin; +import com.willfp.ecoenchants.command.AbstractCommand; import com.willfp.ecoenchants.config.ConfigManager; import com.willfp.ecoenchants.display.EnchantDisplay; import com.willfp.ecoenchants.enchantments.EcoEnchants; @@ -13,20 +14,17 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.bukkit.event.HandlerList; -public class CommandEcoreload implements CommandExecutor { - public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { - if (command.getName().equalsIgnoreCase("ecoreload")) { - if (sender instanceof Player) { - if (!sender.hasPermission("ecoenchants.reload")) { - sender.sendMessage(ConfigManager.getLang().getNoPermission()); - return true; - } - } - reload(); - sender.sendMessage(ConfigManager.getLang().getMessage("reloaded")); - } +import java.util.List; - return false; +public final class CommandEcoreload extends AbstractCommand { + private CommandEcoreload() { + super("ecoreload", "ecoenchants.reload", false); + } + + @Override + public void onExecute(CommandSender sender, List args) { + reload(); + sender.sendMessage(ConfigManager.getLang().getMessage("reloaded")); } public static void reload() { diff --git a/Plugin/src/main/java/com/willfp/ecoenchants/command/commands/CommandEcoskip.java b/Plugin/src/main/java/com/willfp/ecoenchants/command/commands/CommandEcoskip.java new file mode 100644 index 00000000..ec9e824c --- /dev/null +++ b/Plugin/src/main/java/com/willfp/ecoenchants/command/commands/CommandEcoskip.java @@ -0,0 +1,38 @@ +package com.willfp.ecoenchants.command.commands; + +import com.willfp.ecoenchants.command.AbstractCommand; +import com.willfp.ecoenchants.config.ConfigManager; +import com.willfp.ecoenchants.display.EnchantDisplay; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; +import org.bukkit.persistence.PersistentDataType; + +import java.util.List; + +public final class CommandEcoskip extends AbstractCommand { + private CommandEcoskip() { + super("ecoskip", "ecoenchants.skip", true); + } + + @Override + public void onExecute(CommandSender sender, List args) { + Player player = (Player) sender; + ItemStack item = player.getInventory().getItemInMainHand(); + ItemMeta meta = item.getItemMeta(); + if(meta == null) { + return; + } + if(meta.getPersistentDataContainer().has(EnchantDisplay.KEY_SKIP, PersistentDataType.INTEGER)) { + meta.getPersistentDataContainer().remove(EnchantDisplay.KEY_SKIP); + player.sendMessage(ConfigManager.getLang().getMessage("skip-removed")); + } else { + meta.getPersistentDataContainer().set(EnchantDisplay.KEY_SKIP, PersistentDataType.INTEGER, 1); + player.sendMessage(ConfigManager.getLang().getMessage("skip-added")); + } + item.setItemMeta(meta); + } +} diff --git a/Plugin/src/main/java/com/willfp/ecoenchants/command/commands/CommandEnchantinfo.java b/Plugin/src/main/java/com/willfp/ecoenchants/command/commands/CommandEnchantinfo.java new file mode 100644 index 00000000..a82ef07b --- /dev/null +++ b/Plugin/src/main/java/com/willfp/ecoenchants/command/commands/CommandEnchantinfo.java @@ -0,0 +1,140 @@ +package com.willfp.ecoenchants.command.commands; + +import com.willfp.ecoenchants.command.AbstractCommand; +import com.willfp.ecoenchants.config.ConfigManager; +import com.willfp.ecoenchants.enchantments.EcoEnchant; +import com.willfp.ecoenchants.enchantments.EcoEnchants; +import org.apache.commons.lang.WordUtils; +import org.bukkit.ChatColor; +import org.bukkit.Material; +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.enchantments.Enchantment; + +import java.util.Arrays; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +public final class CommandEnchantinfo extends AbstractCommand { + private CommandEnchantinfo() { + super("enchantinfo", "ecoenchants.enchantinfo", false); + } + + @Override + public void onExecute(CommandSender sender, List args) { + if(args.size() == 0) { + sender.sendMessage(ConfigManager.getLang().getMessage("missing-enchant")); + return; + } + StringBuilder nameBuilder = new StringBuilder(); + + args.forEach((arg) -> { + nameBuilder.append(arg).append(" "); + }); + String searchName = nameBuilder.toString(); + searchName = searchName.substring(0, searchName.length() - 1); + + EcoEnchant enchantment = EcoEnchants.getByName(searchName); + + boolean notFound = enchantment == null; + + if(notFound) { + String message = ConfigManager.getLang().getMessage("not-found").replace("%name%", searchName); + sender.sendMessage(message); + return; + } + + String name; + String color; + List description; + + boolean isCurse = enchantment.isCursed(); + boolean isSpecial = false; + boolean isArtifact = false; + + if(enchantment.getType().equals(EcoEnchant.EnchantmentType.SPECIAL)) { + isSpecial = true; + } + if(enchantment.getType().equals(EcoEnchant.EnchantmentType.ARTIFACT)) { + isArtifact = true; + } + + if(isCurse) color = ChatColor.translateAlternateColorCodes('&', ConfigManager.getLang().getString("curse-color")); + else if(isSpecial) color = ChatColor.translateAlternateColorCodes('&', ConfigManager.getLang().getString("special-color")); + else if(isArtifact) color = ChatColor.translateAlternateColorCodes('&', ConfigManager.getLang().getString("artifact-color")); + else color = ChatColor.translateAlternateColorCodes('&', ConfigManager.getLang().getString("not-curse-color")); + + + name = enchantment.getName(); + description = EcoEnchants.getFromEnchantment(enchantment).getDescription(); + StringBuilder descriptionBuilder = new StringBuilder(); + description.forEach((line) -> { + descriptionBuilder.append(line).append(" "); + }); + String desc = descriptionBuilder.toString(); + + Set conflictNames = new HashSet<>(); + + Set conflicts = enchantment.getConflicts(); + + conflicts.forEach((enchantment1 -> { + if(EcoEnchants.getFromEnchantment(enchantment1) != null) { + conflictNames.add(EcoEnchants.getFromEnchantment(enchantment1).getName()); + } else { + conflictNames.add(ConfigManager.getLang().getString("vanilla." + enchantment1.getKey().getKey() + ".name")); + } + })); + + StringBuilder conflictNamesBuilder = new StringBuilder(); + conflictNames.forEach((name1) -> { + conflictNamesBuilder.append(name1).append(", "); + }); + String allConflicts = conflictNamesBuilder.toString(); + if(allConflicts.length() >= 2) { + allConflicts = allConflicts.substring(0, allConflicts.length() -2); + } else { + allConflicts = ChatColor.translateAlternateColorCodes('&', ConfigManager.getLang().getString("no-conflicts")); + } + + Set targets = enchantment.getTarget(); + + Set applicableItemsSet = new HashSet<>(); + + targets.forEach(material -> { + String matName = material.toString(); + matName = matName.toLowerCase(); + matName = matName.replaceAll("_", " "); + matName = WordUtils.capitalize(matName); + applicableItemsSet.add(matName); + }); + + StringBuilder targetNamesBuilder = new StringBuilder(); + applicableItemsSet.forEach((name1) -> { + targetNamesBuilder.append(name1).append(", "); + }); + String allTargets = targetNamesBuilder.toString(); + if(allTargets.length() >= 2) { + allTargets = allTargets.substring(0, allTargets.length() - 2); + } else { + allTargets = ChatColor.translateAlternateColorCodes('&', ConfigManager.getLang().getString("no-targets")); + } + + String maxLevel = String.valueOf(enchantment.getMaxLevel()); + + final String finalName = color + name; + final String finalDescription = desc; + final String finalTargets = allTargets; + final String finalConflicts = allConflicts; + final String finalMaxLevel = maxLevel; + + Arrays.asList(ConfigManager.getLang().getMessage("enchantinfo").split("\\r?\\n")).forEach((string -> { + string = string.replaceAll("%name%", finalName) + .replaceAll("%description%", finalDescription) + .replaceAll("%target%", finalTargets) + .replaceAll("%conflicts%", finalConflicts) + .replaceAll("%maxlevel%", finalMaxLevel); + sender.sendMessage(string); + })); + } +} diff --git a/Plugin/src/main/java/com/willfp/ecoenchants/commands/CommandEcodebug.java b/Plugin/src/main/java/com/willfp/ecoenchants/commands/CommandEcodebug.java deleted file mode 100644 index b3b00fed..00000000 --- a/Plugin/src/main/java/com/willfp/ecoenchants/commands/CommandEcodebug.java +++ /dev/null @@ -1,50 +0,0 @@ -package com.willfp.ecoenchants.commands; - -import com.willfp.ecoenchants.EcoEnchantsPlugin; -import com.willfp.ecoenchants.config.ConfigManager; -import com.willfp.ecoenchants.enchantments.EcoEnchants; -import org.bukkit.Bukkit; -import org.bukkit.command.Command; -import org.bukkit.command.CommandExecutor; -import org.bukkit.command.CommandSender; -import org.bukkit.enchantments.Enchantment; -import org.bukkit.entity.Player; - -import java.lang.reflect.Field; -import java.util.Arrays; -import java.util.Map; - -public class CommandEcodebug implements CommandExecutor { - public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { - if (command.getName().equalsIgnoreCase("ecodebug")) { - if (!(sender instanceof Player)) { - sender.sendMessage(ConfigManager.getLang().getMessage("not-player")); - return true; - } - - if (!sender.hasPermission("ecoenchants.ecodebug")) { - sender.sendMessage(ConfigManager.getLang().getNoPermission()); - return true; - } - - Bukkit.getLogger().info("--------------- BEGIN DEBUG ----------------"); - Player player = (Player) sender; - Bukkit.getLogger().info("Running Version: " + EcoEnchantsPlugin.getInstance().getDescription().getVersion()); - Bukkit.getLogger().info("Held Item: " + player.getInventory().getItemInMainHand().toString()); - Bukkit.getLogger().info("EcoEnchants.getAll(): " + EcoEnchants.getAll().toString()); - Bukkit.getLogger().info("Enchantment.values(): " + Arrays.toString(Enchantment.values())); - try { - Field byNameField = Enchantment.class.getDeclaredField("byName"); - byNameField.setAccessible(true); - Map byName = (Map) byNameField.get(null); - Bukkit.getLogger().info("Enchantment.byName: " + byName.toString()); - } catch (NoSuchFieldException | IllegalAccessException e) { - e.printStackTrace(); - } - - Bukkit.getLogger().info("--------------- END DEBUG ----------------"); - } - - return false; - } -} diff --git a/Plugin/src/main/java/com/willfp/ecoenchants/commands/CommandEcoskip.java b/Plugin/src/main/java/com/willfp/ecoenchants/commands/CommandEcoskip.java deleted file mode 100644 index 9102ce8c..00000000 --- a/Plugin/src/main/java/com/willfp/ecoenchants/commands/CommandEcoskip.java +++ /dev/null @@ -1,44 +0,0 @@ -package com.willfp.ecoenchants.commands; - -import com.willfp.ecoenchants.config.ConfigManager; -import com.willfp.ecoenchants.display.EnchantDisplay; -import org.bukkit.command.Command; -import org.bukkit.command.CommandExecutor; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; -import org.bukkit.inventory.ItemStack; -import org.bukkit.inventory.meta.ItemMeta; -import org.bukkit.persistence.PersistentDataType; - -public class CommandEcoskip implements CommandExecutor { - public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { - if (command.getName().equalsIgnoreCase("ecoskip")) { - if (!(sender instanceof Player)) { - sender.sendMessage(ConfigManager.getLang().getMessage("not-player")); - return true; - } - - if (!sender.hasPermission("ecoenchants.skip")) { - sender.sendMessage(ConfigManager.getLang().getNoPermission()); - return true; - } - - Player player = (Player) sender; - ItemStack item = player.getInventory().getItemInMainHand(); - ItemMeta meta = item.getItemMeta(); - if(meta == null) { - return true; - } - if(meta.getPersistentDataContainer().has(EnchantDisplay.KEY_SKIP, PersistentDataType.INTEGER)) { - meta.getPersistentDataContainer().remove(EnchantDisplay.KEY_SKIP); - player.sendMessage(ConfigManager.getLang().getMessage("skip-removed")); - } else { - meta.getPersistentDataContainer().set(EnchantDisplay.KEY_SKIP, PersistentDataType.INTEGER, 1); - player.sendMessage(ConfigManager.getLang().getMessage("skip-added")); - } - item.setItemMeta(meta); - } - - return false; - } -} diff --git a/Plugin/src/main/java/com/willfp/ecoenchants/commands/CommandEnchantinfo.java b/Plugin/src/main/java/com/willfp/ecoenchants/commands/CommandEnchantinfo.java deleted file mode 100644 index 6c32bc33..00000000 --- a/Plugin/src/main/java/com/willfp/ecoenchants/commands/CommandEnchantinfo.java +++ /dev/null @@ -1,144 +0,0 @@ -package com.willfp.ecoenchants.commands; - -import com.willfp.ecoenchants.config.ConfigManager; -import com.willfp.ecoenchants.enchantments.EcoEnchant; -import com.willfp.ecoenchants.enchantments.EcoEnchants; -import org.apache.commons.lang.WordUtils; -import org.bukkit.ChatColor; -import org.bukkit.Material; -import org.bukkit.command.Command; -import org.bukkit.command.CommandExecutor; -import org.bukkit.command.CommandSender; -import org.bukkit.enchantments.Enchantment; - -import java.util.Arrays; -import java.util.HashSet; -import java.util.List; -import java.util.Set; - -public class CommandEnchantinfo implements CommandExecutor { - public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { - if (command.getName().equalsIgnoreCase("enchantinfo")) { - if (!sender.hasPermission("ecoenchants.enchantinfo")) { - sender.sendMessage(ConfigManager.getLang().getNoPermission()); - return true; - } - - if(args.length == 0) { - sender.sendMessage(ConfigManager.getLang().getMessage("missing-enchant")); - return true; - } - StringBuilder nameBuilder = new StringBuilder(); - - Arrays.asList(args).forEach((arg) -> { - nameBuilder.append(arg).append(" "); - }); - String searchName = nameBuilder.toString(); - searchName = searchName.substring(0, searchName.length() - 1); - - EcoEnchant enchantment = EcoEnchants.getByName(searchName); - - boolean notFound = enchantment == null; - - if(notFound) { - String message = ConfigManager.getLang().getMessage("not-found").replace("%name%", searchName); - sender.sendMessage(message); - return true; - } - - String name; - String color; - List description; - - boolean isCurse = enchantment.isCursed(); - boolean isSpecial = false; - boolean isArtifact = false; - - if(enchantment.getType().equals(EcoEnchant.EnchantmentType.SPECIAL)) { - isSpecial = true; - } - if(enchantment.getType().equals(EcoEnchant.EnchantmentType.ARTIFACT)) { - isArtifact = true; - } - - if(isCurse) color = ChatColor.translateAlternateColorCodes('&', ConfigManager.getLang().getString("curse-color")); - else if(isSpecial) color = ChatColor.translateAlternateColorCodes('&', ConfigManager.getLang().getString("special-color")); - else if(isArtifact) color = ChatColor.translateAlternateColorCodes('&', ConfigManager.getLang().getString("artifact-color")); - else color = ChatColor.translateAlternateColorCodes('&', ConfigManager.getLang().getString("not-curse-color")); - - - name = enchantment.getName(); - description = EcoEnchants.getFromEnchantment(enchantment).getDescription(); - StringBuilder descriptionBuilder = new StringBuilder(); - description.forEach((line) -> { - descriptionBuilder.append(line).append(" "); - }); - String desc = descriptionBuilder.toString(); - - Set conflictNames = new HashSet<>(); - - Set conflicts = enchantment.getConflicts(); - - conflicts.forEach((enchantment1 -> { - if(EcoEnchants.getFromEnchantment(enchantment1) != null) { - conflictNames.add(EcoEnchants.getFromEnchantment(enchantment1).getName()); - } else { - conflictNames.add(ConfigManager.getLang().getString("vanilla." + enchantment1.getKey().getKey() + ".name")); - } - })); - - StringBuilder conflictNamesBuilder = new StringBuilder(); - conflictNames.forEach((name1) -> { - conflictNamesBuilder.append(name1).append(", "); - }); - String allConflicts = conflictNamesBuilder.toString(); - if(allConflicts.length() >= 2) { - allConflicts = allConflicts.substring(0, allConflicts.length() -2); - } else { - allConflicts = ChatColor.translateAlternateColorCodes('&', ConfigManager.getLang().getString("no-conflicts")); - } - - Set targets = enchantment.getTarget(); - - Set applicableItemsSet = new HashSet<>(); - - targets.forEach(material -> { - String matName = material.toString(); - matName = matName.toLowerCase(); - matName = matName.replaceAll("_", " "); - matName = WordUtils.capitalize(matName); - applicableItemsSet.add(matName); - }); - - StringBuilder targetNamesBuilder = new StringBuilder(); - applicableItemsSet.forEach((name1) -> { - targetNamesBuilder.append(name1).append(", "); - }); - String allTargets = targetNamesBuilder.toString(); - if(allTargets.length() >= 2) { - allTargets = allTargets.substring(0, allTargets.length() - 2); - } else { - allTargets = ChatColor.translateAlternateColorCodes('&', ConfigManager.getLang().getString("no-targets")); - } - - String maxLevel = String.valueOf(enchantment.getMaxLevel()); - - final String finalName = color + name; - final String finalDescription = desc; - final String finalTargets = allTargets; - final String finalConflicts = allConflicts; - final String finalMaxLevel = maxLevel; - - Arrays.asList(ConfigManager.getLang().getMessage("enchantinfo").split("\\r?\\n")).forEach((string -> { - string = string.replaceAll("%name%", finalName) - .replaceAll("%description%", finalDescription) - .replaceAll("%target%", finalTargets) - .replaceAll("%conflicts%", finalConflicts) - .replaceAll("%maxlevel%", finalMaxLevel); - sender.sendMessage(string); - })); - } - - return false; - } -} diff --git a/Plugin/src/main/java/com/willfp/ecoenchants/loader/Loader.java b/Plugin/src/main/java/com/willfp/ecoenchants/loader/Loader.java index cd558b35..f14d8d60 100644 --- a/Plugin/src/main/java/com/willfp/ecoenchants/loader/Loader.java +++ b/Plugin/src/main/java/com/willfp/ecoenchants/loader/Loader.java @@ -4,10 +4,10 @@ import com.comphenix.protocol.ProtocolLibrary; import com.willfp.ecoenchants.EcoEnchantsPlugin; import com.willfp.ecoenchants.anvil.AnvilListeners; import com.willfp.ecoenchants.bstats.Metrics; -import com.willfp.ecoenchants.commands.CommandEcodebug; -import com.willfp.ecoenchants.commands.CommandEcoreload; -import com.willfp.ecoenchants.commands.CommandEcoskip; -import com.willfp.ecoenchants.commands.CommandEnchantinfo; +import com.willfp.ecoenchants.command.commands.CommandEcodebug; +import com.willfp.ecoenchants.command.commands.CommandEcoreload; +import com.willfp.ecoenchants.command.commands.CommandEcoskip; +import com.willfp.ecoenchants.command.commands.CommandEnchantinfo; import com.willfp.ecoenchants.config.ConfigManager; import com.willfp.ecoenchants.display.EnchantDisplay; import com.willfp.ecoenchants.display.packets.PacketOpenWindowMerchant; @@ -380,10 +380,10 @@ public class Loader { */ Bukkit.getLogger().info("Loading Commands..."); - Bukkit.getPluginCommand("ecoreload").setExecutor(new CommandEcoreload()); - Bukkit.getPluginCommand("ecodebug").setExecutor(new CommandEcodebug()); - Bukkit.getPluginCommand("enchantinfo").setExecutor(new CommandEnchantinfo()); - Bukkit.getPluginCommand("ecoskip").setExecutor(new CommandEcoskip()); + Bukkit.getPluginCommand("ecoreload").setExecutor(CommandEcoreload.getInstance()); + Bukkit.getPluginCommand("ecodebug").setExecutor(CommandEcodebug.getInstance()); + Bukkit.getPluginCommand("enchantinfo").setExecutor(CommandEnchantinfo.getInstance()); + Bukkit.getPluginCommand("ecoskip").setExecutor(CommandEcoskip.getInstance()); Bukkit.getLogger().info(""); /*