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