Skip to content

Commit

Permalink
use modern enchantment names
Browse files Browse the repository at this point in the history
  • Loading branch information
mcmonkey4eva committed Nov 6, 2019
1 parent 185d5c2 commit 6260808
Showing 1 changed file with 20 additions and 11 deletions.
@@ -1,5 +1,6 @@
package com.denizenscript.denizen.objects.properties.item;

import com.denizenscript.denizen.utilities.Utilities;
import com.denizenscript.denizen.utilities.debugging.Debug;
import com.denizenscript.denizen.objects.ItemTag;
import com.denizenscript.denizencore.objects.core.ElementTag;
Expand All @@ -10,6 +11,7 @@
import com.denizenscript.denizencore.tags.Attribute;
import com.denizenscript.denizencore.utilities.CoreUtilities;
import org.bukkit.Material;
import org.bukkit.NamespacedKey;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.inventory.meta.EnchantmentStorageMeta;

Expand Down Expand Up @@ -73,13 +75,13 @@ public ObjectTag getObjectAttribute(Attribute attribute) {
// @group properties
// @description
// Returns a list of enchantments on the item, with their levels listed too.
// In the format of ENCHANTMENT,LEVEL - For example: DAMAGE_ALL,3
// In the format of ENCHANTMENT,LEVEL - For example: sharpness,3
// -->
if (attribute.startsWith("enchantments.with_levels")) {
Set<Map.Entry<Enchantment, Integer>> enchantments = getEnchantments();
ListTag enchants = new ListTag();
for (Map.Entry<Enchantment, Integer> enchantment : enchantments) {
enchants.add(enchantment.getKey().getName() + "," + enchantment.getValue());
enchants.add(enchantment.getKey().getKey().getKey() + "," + enchantment.getValue());
}
return enchants.getObjectAttribute(attribute.fulfill(2));
}
Expand Down Expand Up @@ -114,7 +116,8 @@ public ObjectTag getObjectAttribute(Attribute attribute) {
Set<Map.Entry<Enchantment, Integer>> enchantments = getEnchantments();
if (enchantments.size() > 0) {
for (Map.Entry<Enchantment, Integer> enchantment : enchantments) {
if (enchantment.getKey().getName().equalsIgnoreCase(attribute.getContext(2))) {
if (enchantment.getKey().getName().equalsIgnoreCase(attribute.getContext(2))
|| enchantment.getKey().getKey().getKey().equalsIgnoreCase(attribute.getContext(2))) {
return new ElementTag(enchantment.getValue())
.getObjectAttribute(attribute.fulfill(2));
}
Expand All @@ -136,7 +139,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().getName());
enchants.add(enchantment.getKey().getKey().getKey());
}
return enchants.getObjectAttribute(attribute.fulfill(1));
}
Expand All @@ -161,7 +164,7 @@ public String getPropertyString() {
if (enchants.size() > 0) {
StringBuilder returnable = new StringBuilder();
for (Map.Entry<Enchantment, Integer> enchantment : enchants) {
returnable.append(enchantment.getKey().getName()).append(",").append(enchantment.getValue()).append("|");
returnable.append(enchantment.getKey().getKey().getKey()).append(",").append(enchantment.getValue()).append("|");
}
return returnable.substring(0, returnable.length() - 1);
}
Expand Down Expand Up @@ -200,16 +203,18 @@ public void adjust(Mechanism mechanism) {
}
if (item.getItemStack().getType() == Material.ENCHANTED_BOOK) {
EnchantmentStorageMeta meta = (EnchantmentStorageMeta) item.getItemStack().getItemMeta();
for (Enchantment ench : meta.getStoredEnchants().keySet()) {
if (names == null || names.contains(CoreUtilities.toLowerCase(ench.getName()))) {
for (Enchantment ench : new ArrayList<>(meta.getStoredEnchants().keySet())) {
if (names == null || names.contains(CoreUtilities.toLowerCase(ench.getName())) ||
names.contains(CoreUtilities.toLowerCase(ench.getKey().getKey()))) {
meta.removeStoredEnchant(ench);
}
}
item.getItemStack().setItemMeta(meta);
}
else {
for (Enchantment ench : item.getItemStack().getEnchantments().keySet()) {
if (names == null || names.contains(CoreUtilities.toLowerCase(ench.getName()))) {
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()))) {
item.getItemStack().removeEnchantment(ench);
}
}
Expand All @@ -222,7 +227,7 @@ public void adjust(Mechanism mechanism) {
// @input ListTag
// @description
// Sets the item's enchantments.
// For a list of valid enchantment names, refer to <@link url https://hub.spigotmc.org/javadocs/spigot/org/bukkit/enchantments/Enchantment.html>
// In the format of ENCHANTMENT,LEVEL - For example: sharpness,3
// @tags
// <ItemTag.enchantments>
// <ItemTag.enchantments.levels>
Expand All @@ -241,7 +246,11 @@ public void adjust(Mechanism mechanism) {
}
else {
try {
Enchantment ench = Enchantment.getByName(data[0].toUpperCase());
NamespacedKey key = Utilities.parseNamespacedKey(data[0]);
Enchantment ench = Enchantment.getByKey(key);
if (ench == null) {
ench = Enchantment.getByName(data[0].toUpperCase());
}
if (ench != null) {
if (item.getItemStack().getType() == Material.ENCHANTED_BOOK) {
EnchantmentStorageMeta meta = (EnchantmentStorageMeta) item.getItemStack().getItemMeta();
Expand Down

0 comments on commit 6260808

Please sign in to comment.