From 57d7ef433ce20f1d03ee185dd94b6daf52cee96f Mon Sep 17 00:00:00 2001 From: drXor Date: Sat, 23 Dec 2023 12:50:04 +1100 Subject: [PATCH] Preserve empty enchantment tags for glow effect Adapted from Spigot commit cc9a1a417f1ac95a7957db8636e31c8fc2baf4e9. --- .../bukkit/craftbukkit/inventory/CraftMetaItem.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java index 31fd181c2..a2a195488 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java @@ -304,7 +304,7 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { this.customModelData = meta.customModelData; this.blockData = meta.blockData; - if (meta.hasEnchants()) { + if (meta.enchantments != null) { this.enchantments = new LinkedHashMap(meta.enchantments); } @@ -676,7 +676,7 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { } static void applyEnchantments(Map enchantments, NBTTagCompound tag, ItemMetaKey key) { - if (enchantments == null || enchantments.size() == 0) { + if (enchantments == null) { return; } @@ -825,7 +825,12 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { @Override public boolean removeEnchant(Enchantment ench) { Preconditions.checkArgument(ench != null, "Enchantment cannot be null"); - return hasEnchants() && enchantments.remove(ench) != null; + boolean enchantmentRemoved = hasEnchants() && enchantments.remove(ench) != null; + // If we no longer have any enchantments, then clear enchantment tag + if (enchantmentRemoved && enchantments.isEmpty()) { + enchantments = null; + } + return enchantmentRemoved; } @Override