Skip to content

Commit

Permalink
item enchantments: fix 1.12 compat
Browse files Browse the repository at this point in the history
  • Loading branch information
mcmonkey4eva committed Nov 10, 2019
1 parent 5d0115a commit 456087a
Showing 1 changed file with 20 additions and 8 deletions.
@@ -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;
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -81,7 +90,7 @@ public ObjectTag getObjectAttribute(Attribute attribute) {
Set<Map.Entry<Enchantment, Integer>> enchantments = getEnchantments();
ListTag enchants = new ListTag();
for (Map.Entry<Enchantment, Integer> enchantment : enchantments) {
enchants.add(enchantment.getKey().getKey().getKey() + "," + enchantment.getValue());
enchants.add(getName(enchantment.getKey()) + "," + enchantment.getValue());
}
return enchants.getObjectAttribute(attribute.fulfill(2));
}
Expand Down Expand Up @@ -117,7 +126,7 @@ public ObjectTag getObjectAttribute(Attribute attribute) {
if (enchantments.size() > 0) {
for (Map.Entry<Enchantment, Integer> 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));
}
Expand All @@ -139,7 +148,7 @@ public ObjectTag getObjectAttribute(Attribute attribute) {
Set<Map.Entry<Enchantment, Integer>> enchantments = getEnchantments();
ListTag enchants = new ListTag();
for (Map.Entry<Enchantment, Integer> enchantment : enchantments) {
enchants.add(enchantment.getKey().getKey().getKey());
enchants.add(getName(enchantment.getKey()));
}
return enchants.getObjectAttribute(attribute.fulfill(1));
}
Expand All @@ -164,7 +173,7 @@ public String getPropertyString() {
if (enchants.size() > 0) {
StringBuilder returnable = new StringBuilder();
for (Map.Entry<Enchantment, Integer> 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);
}
Expand Down Expand Up @@ -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);
}
}
Expand All @@ -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);
}
}
Expand Down Expand Up @@ -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());
}
Expand Down

0 comments on commit 456087a

Please sign in to comment.