diff --git a/src/main/java/nl/pim16aap2/armoredElytra/handlers/AnvilHandler.java b/src/main/java/nl/pim16aap2/armoredElytra/handlers/AnvilHandler.java index 23a8bdf..41f8351 100644 --- a/src/main/java/nl/pim16aap2/armoredElytra/handlers/AnvilHandler.java +++ b/src/main/java/nl/pim16aap2/armoredElytra/handlers/AnvilHandler.java @@ -1,8 +1,10 @@ package nl.pim16aap2.armoredElytra.handlers; import nl.pim16aap2.armoredElytra.ArmoredElytra; +import nl.pim16aap2.armoredElytra.nbtEditor.INBTEditor; import nl.pim16aap2.armoredElytra.util.Action; import nl.pim16aap2.armoredElytra.util.ArmorTier; +import nl.pim16aap2.armoredElytra.util.ConfigLoader; import nl.pim16aap2.armoredElytra.util.EnchantmentContainer; import nl.pim16aap2.armoredElytra.util.Util; import nl.pim16aap2.armoredElytra.util.XMaterial; @@ -24,9 +26,14 @@ import java.util.logging.Level; public class AnvilHandler extends ArmoredElytraHandler implements Listener { + private final ConfigLoader configLoader; + private final INBTEditor nbtEditor; + public AnvilHandler(final ArmoredElytra plugin, final boolean creationEnabled) { super(plugin, creationEnabled); + configLoader = plugin.getConfigLoader(); + nbtEditor = plugin.getNbtEditor(); } public AnvilHandler(final ArmoredElytra plugin) @@ -66,13 +73,13 @@ public class AnvilHandler extends ArmoredElytraHandler implements Listener if (Util.isChestPlate(matTwo)) return creationEnabled ? Action.CREATE : Action.NONE; - ArmorTier tier = ArmoredElytra.getInstance().getNbtEditor().getArmorTier(itemOne); + ArmorTier tier = nbtEditor.getArmorTier(itemOne); if (tier != ArmorTier.NONE) { // If the armored elytra is to be enchanted using an enchanted book... if (matTwo == Material.ENCHANTED_BOOK) - return Action.ENCHANT; + return configLoader.allowAddingEnchantments() ? Action.ENCHANT : Action.BLOCK; // If the armored elytra is to be repaired using its repair item... if (ArmorTier.getRepairItem(tier) == matTwo) @@ -80,7 +87,7 @@ public class AnvilHandler extends ArmoredElytraHandler implements Listener // If the armored elytra is to be combined with another armored elytra of the // same tier... - if (ArmoredElytra.getInstance().getNbtEditor().getArmorTier(itemTwo) == tier) + if (nbtEditor.getArmorTier(itemTwo) == tier) return creationEnabled ? Action.COMBINE : Action.NONE; // If the armored elytra is not of the leather tier, but itemTwo is leather, @@ -116,7 +123,7 @@ public class AnvilHandler extends ArmoredElytraHandler implements Listener { Action action = isValidInput(itemA, itemB); ArmorTier newTier = ArmorTier.NONE; - ArmorTier curTier = ArmoredElytra.getInstance().getNbtEditor().getArmorTier(itemA); + ArmorTier curTier = nbtEditor.getArmorTier(itemA); short durability = 0; EnchantmentContainer enchantments = EnchantmentContainer.getEnchantments(itemA, plugin); @@ -168,9 +175,7 @@ public class AnvilHandler extends ArmoredElytraHandler implements Listener final String name = getElytraResultName(itemA, action, newTier, event.getInventory().getRenameText()); final Color color = getItemColor(itemA, itemB); - result = ArmoredElytra.getInstance().getNbtEditor() - .addArmorNBTTags(result, newTier, plugin.getConfigLoader().unbreakable(), - name, color); + result = nbtEditor.addArmorNBTTags(result, newTier, configLoader.unbreakable(), name, color); event.setResult(result); return; @@ -180,15 +185,15 @@ public class AnvilHandler extends ArmoredElytraHandler implements Listener // If one of the input items is null and the other an armored elytra, remove the result. // This prevent some naming issues. if ((itemA == null ^ itemB == null) && - ArmoredElytra.getInstance().getNbtEditor().getArmorTier(itemA == null ? itemB : itemA) != ArmorTier.NONE) + nbtEditor.getArmorTier(itemA == null ? itemB : itemA) != ArmorTier.NONE) event.setResult(null); } private String getElytraResultName(final ItemStack baseItem, final Action action, final ArmorTier armorTier, final String renameText) { - final String tierName = ArmoredElytra.getInstance().getArmoredElytraName(armorTier); - if (renameText == null || !plugin.getConfigLoader().allowRenaming()) + final String tierName = plugin.getArmoredElytraName(armorTier); + if (renameText == null || !configLoader.allowRenaming()) return tierName; final ItemMeta meta = baseItem.getItemMeta(); @@ -236,7 +241,7 @@ public class AnvilHandler extends ArmoredElytraHandler implements Listener if (anvilInventory.getItem(0) != null && anvilInventory.getItem(1) != null && anvilInventory.getItem(2) != null && anvilInventory.getItem(2).getType() == Material.ELYTRA) { - ArmorTier armortier = ArmoredElytra.getInstance().getNbtEditor().getArmorTier(anvilInventory.getItem(2)); + ArmorTier armortier = nbtEditor.getArmorTier(anvilInventory.getItem(2)); // If there's an armored elytra in the final slot... if (armortier != ArmorTier.NONE && plugin.playerHasCraftPerm(player, armortier)) diff --git a/src/main/java/nl/pim16aap2/armoredElytra/util/ConfigLoader.java b/src/main/java/nl/pim16aap2/armoredElytra/util/ConfigLoader.java index 73a3343..2d67816 100644 --- a/src/main/java/nl/pim16aap2/armoredElytra/util/ConfigLoader.java +++ b/src/main/java/nl/pim16aap2/armoredElytra/util/ConfigLoader.java @@ -39,6 +39,7 @@ public class ConfigLoader private boolean bypassWearPerm; private boolean bypassCraftPerm; private boolean allowRenaming; + private boolean allowAddingEnchantments; private final ArrayList> configOptionsList; private final ArmoredElytra plugin; @@ -143,6 +144,12 @@ public class ConfigLoader { "Whether or not to allow renaming of armored elytras in anvils." }; + String[] allowAddingEnchantmentsComment = + { + "Allow new enchantments to be added to armored elytras.", + "When false, no enchantments can be added to armored elytras, even those on the allowed list.", + "When true, only enchantments from the allowed list can be added." + }; // Set default list of allowed enchantments. @@ -205,6 +212,8 @@ public class ConfigLoader allowMultipleProtectionEnchantments = addNewConfigOption(config, "allowMultipleProtectionEnchantments", false, allowMultipleProtectionEnchantmentsComment); + allowAddingEnchantments = addNewConfigOption(config, "allowAddingEnchantments", true, + allowAddingEnchantmentsComment); allowRenaming = addNewConfigOption(config, "allowRenaming", true, allowRenamingComment); dropNetheriteAsChestplate = addNewConfigOption(config, "dropNetheriteAsChestplate", true, dropNetheriteAsChestplateComment); @@ -334,6 +343,11 @@ public class ConfigLoader return allowRenaming; } + public boolean allowAddingEnchantments() + { + return allowAddingEnchantments; + } + public boolean uninstallMode() { return uninstallMode;