From 6a6ddbcb6d95b27147bc78d1f2b5fa902ef7cbd7 Mon Sep 17 00:00:00 2001 From: CraftBukkit/Spigot Date: Sat, 23 Dec 2023 12:50:04 +1100 Subject: [PATCH] Preserve empty enchantment tags for glow effect Adapted from Spigot commit cc9a1a417f1ac95a7957db8636e31c8fc2baf4e9. By: drXor --- .../bukkit/craftbukkit/inventory/CraftMetaItem.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/paper-server/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java b/paper-server/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java index 31fd181c2..a2a195488 100644 --- a/paper-server/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java +++ b/paper-server/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