diff --git a/plugin/src/main/java/com/denizenscript/denizen/objects/properties/item/ItemEnchantments.java b/plugin/src/main/java/com/denizenscript/denizen/objects/properties/item/ItemEnchantments.java index 17fa1aba26..bdb739055a 100644 --- a/plugin/src/main/java/com/denizenscript/denizen/objects/properties/item/ItemEnchantments.java +++ b/plugin/src/main/java/com/denizenscript/denizen/objects/properties/item/ItemEnchantments.java @@ -1,5 +1,7 @@ package com.denizenscript.denizen.objects.properties.item; +import com.denizenscript.denizen.nms.NMSHandler; +import com.denizenscript.denizen.nms.NMSVersion; import com.denizenscript.denizen.utilities.Utilities; import com.denizenscript.denizen.utilities.debugging.Debug; import com.denizenscript.denizen.objects.ItemTag; @@ -46,6 +48,13 @@ private ItemEnchantments(ItemTag _item) { item = _item; } + public static String getName(Enchantment enchantment) { + if (NMSHandler.getVersion().isAtLeast(NMSVersion.v1_13)) { + return enchantment.getKey().getKey(); + } + return enchantment.getName(); + } + ItemTag item; @Override @@ -81,7 +90,7 @@ public ObjectTag getObjectAttribute(Attribute attribute) { Set> enchantments = getEnchantments(); ListTag enchants = new ListTag(); for (Map.Entry enchantment : enchantments) { - enchants.add(enchantment.getKey().getKey().getKey() + "," + enchantment.getValue()); + enchants.add(getName(enchantment.getKey()) + "," + enchantment.getValue()); } return enchants.getObjectAttribute(attribute.fulfill(2)); } @@ -117,7 +126,7 @@ public ObjectTag getObjectAttribute(Attribute attribute) { if (enchantments.size() > 0) { for (Map.Entry enchantment : enchantments) { if (enchantment.getKey().getName().equalsIgnoreCase(attribute.getContext(2)) - || enchantment.getKey().getKey().getKey().equalsIgnoreCase(attribute.getContext(2))) { + || getName(enchantment.getKey()).equalsIgnoreCase(attribute.getContext(2))) { return new ElementTag(enchantment.getValue()) .getObjectAttribute(attribute.fulfill(2)); } @@ -139,7 +148,7 @@ public ObjectTag getObjectAttribute(Attribute attribute) { Set> enchantments = getEnchantments(); ListTag enchants = new ListTag(); for (Map.Entry enchantment : enchantments) { - enchants.add(enchantment.getKey().getKey().getKey()); + enchants.add(getName(enchantment.getKey())); } return enchants.getObjectAttribute(attribute.fulfill(1)); } @@ -164,7 +173,7 @@ public String getPropertyString() { if (enchants.size() > 0) { StringBuilder returnable = new StringBuilder(); for (Map.Entry enchantment : enchants) { - returnable.append(enchantment.getKey().getKey().getKey()).append(",").append(enchantment.getValue()).append("|"); + returnable.append(getName(enchantment.getKey())).append(",").append(enchantment.getValue()).append("|"); } return returnable.substring(0, returnable.length() - 1); } @@ -205,7 +214,7 @@ public void adjust(Mechanism mechanism) { EnchantmentStorageMeta meta = (EnchantmentStorageMeta) item.getItemStack().getItemMeta(); for (Enchantment ench : new ArrayList<>(meta.getStoredEnchants().keySet())) { if (names == null || names.contains(CoreUtilities.toLowerCase(ench.getName())) || - names.contains(CoreUtilities.toLowerCase(ench.getKey().getKey()))) { + names.contains(CoreUtilities.toLowerCase(getName(ench)))) { meta.removeStoredEnchant(ench); } } @@ -214,7 +223,7 @@ public void adjust(Mechanism mechanism) { else { for (Enchantment ench : new ArrayList<>(item.getItemStack().getEnchantments().keySet())) { if (names == null || names.contains(CoreUtilities.toLowerCase(ench.getName())) || - names.contains(CoreUtilities.toLowerCase(ench.getKey().getKey()))) { + names.contains(CoreUtilities.toLowerCase(getName(ench)))) { item.getItemStack().removeEnchantment(ench); } } @@ -246,8 +255,11 @@ public void adjust(Mechanism mechanism) { } else { try { - NamespacedKey key = Utilities.parseNamespacedKey(data[0]); - Enchantment ench = Enchantment.getByKey(key); + Enchantment ench = null; + if (NMSHandler.getVersion().isAtLeast(NMSVersion.v1_13)) { + NamespacedKey key = Utilities.parseNamespacedKey(data[0]); + ench = Enchantment.getByKey(key); + } if (ench == null) { ench = Enchantment.getByName(data[0].toUpperCase()); }