diff --git a/plugin/src/main/java/com/denizenscript/denizen/nms/interfaces/EnchantmentHelper.java b/plugin/src/main/java/com/denizenscript/denizen/nms/interfaces/EnchantmentHelper.java index 93bb31374e..1991370151 100644 --- a/plugin/src/main/java/com/denizenscript/denizen/nms/interfaces/EnchantmentHelper.java +++ b/plugin/src/main/java/com/denizenscript/denizen/nms/interfaces/EnchantmentHelper.java @@ -35,6 +35,10 @@ public int getMaxCost(Enchantment enchantment, int level) { throw new UnsupportedOperationException(); } + public String getFullName(Enchantment enchantment, int level) { + throw new UnsupportedOperationException(); + } + public float getDamageBonus(Enchantment enchantment, int level, String type) { throw new UnsupportedOperationException(); } diff --git a/plugin/src/main/java/com/denizenscript/denizen/objects/EnchantmentTag.java b/plugin/src/main/java/com/denizenscript/denizen/objects/EnchantmentTag.java index 7f80d6232c..8c18a3b63e 100644 --- a/plugin/src/main/java/com/denizenscript/denizen/objects/EnchantmentTag.java +++ b/plugin/src/main/java/com/denizenscript/denizen/objects/EnchantmentTag.java @@ -12,6 +12,7 @@ import com.denizenscript.denizencore.objects.ObjectTag; import com.denizenscript.denizencore.objects.core.ElementTag; import com.denizenscript.denizencore.objects.core.MapTag; +import com.denizenscript.denizencore.objects.core.ScriptTag; import com.denizenscript.denizencore.scripts.ScriptRegistry; import com.denizenscript.denizencore.tags.Attribute; import com.denizenscript.denizencore.tags.ObjectTagProcessor; @@ -176,6 +177,34 @@ public static void registerTags() { return new ElementTag(object.enchantment.getKey().toString()); }); + // <--[tag] + // @attribute ]> + // @returns ElementTag + // @description + // Returns the full name for this enchantment for a given level, like "Sharpness V". + // For vanilla enchantments, uses language translation keys. + // --> + registerTag("full_name", (attribute, object) -> { + return new ElementTag(object.enchantment.getKey().toString()); + }); + + // <--[tag] + // @attribute + // @returns ScriptTag + // @description + // Returns the script that created this enchantment type, if any. + // --> + registerTag("script", (attribute, object) -> { + if (!object.enchantment.getKey().getNamespace().equals("denizen")) { + return null; + } + EnchantmentScriptContainer.EnchantmentReference ref = EnchantmentScriptContainer.registeredEnchantmentContainers.get(object.enchantment.getKey().getKey()); + if (ref == null) { + return null; + } + return new ScriptTag(ref.script); + }); + // <--[tag] // @attribute // @returns ElementTag(Number) 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 46334d0aac..2138afff6b 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 @@ -188,7 +188,7 @@ public void adjust(Mechanism mechanism) { // Removes the specified enchantments from the item (as a list of EnchantmentTags). // Give no value input to remove all enchantments. // @tags - // + // // // --> if (mechanism.matches("remove_enchantments")) { diff --git a/plugin/src/main/java/com/denizenscript/denizen/scripts/containers/core/EnchantmentScriptContainer.java b/plugin/src/main/java/com/denizenscript/denizen/scripts/containers/core/EnchantmentScriptContainer.java index 401f42da78..dfe7245fdb 100644 --- a/plugin/src/main/java/com/denizenscript/denizen/scripts/containers/core/EnchantmentScriptContainer.java +++ b/plugin/src/main/java/com/denizenscript/denizen/scripts/containers/core/EnchantmentScriptContainer.java @@ -275,7 +275,7 @@ public BaseComponent[] getFullName(int level) { return result; } String tagged = autoTagForLevel(fullNameTaggable, level); - result = FormattedTextHelper.parse(tagged, ChatColor.WHITE); + result = FormattedTextHelper.parse(tagged, ChatColor.GRAY); fullNamePerLevel.put(level, result); return result; } diff --git a/v1_17/src/main/java/com/denizenscript/denizen/nms/v1_17/helpers/EnchantmentHelperImpl.java b/v1_17/src/main/java/com/denizenscript/denizen/nms/v1_17/helpers/EnchantmentHelperImpl.java index 484c19db8f..802e85fa85 100644 --- a/v1_17/src/main/java/com/denizenscript/denizen/nms/v1_17/helpers/EnchantmentHelperImpl.java +++ b/v1_17/src/main/java/com/denizenscript/denizen/nms/v1_17/helpers/EnchantmentHelperImpl.java @@ -3,8 +3,10 @@ import com.denizenscript.denizen.nms.interfaces.EnchantmentHelper; import com.denizenscript.denizen.nms.v1_17.Handler; import com.denizenscript.denizen.scripts.containers.core.EnchantmentScriptContainer; +import com.denizenscript.denizen.utilities.FormattedTextHelper; import com.denizenscript.denizen.utilities.debugging.Debug; import com.denizenscript.denizencore.utilities.ReflectionHelper; +import net.md_5.bungee.api.ChatColor; import net.minecraft.core.Registry; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; @@ -171,6 +173,11 @@ public int getMaxCost(Enchantment enchantment, int level) { return ((CraftEnchantment) enchantment).getHandle().getMaxCost(level); } + @Override + public String getFullName(Enchantment enchantment, int level) { + return FormattedTextHelper.stringify(Handler.componentToSpigot(((CraftEnchantment) enchantment).getHandle().getFullname(level)), ChatColor.GRAY); + } + @Override public float getDamageBonus(Enchantment enchantment, int level, String type) { MobType mobType = MobType.UNDEFINED;