Preserve empty enchantment tags for glow effect

Adapted from Spigot commit cc9a1a417f1ac95a7957db8636e31c8fc2baf4e9.
This commit is contained in:
drXor 2023-12-23 12:50:04 +11:00 committed by md_5
parent 465ec3fb42
commit 57d7ef433c
No known key found for this signature in database
GPG Key ID: E8E901AC7C617C11

View File

@ -304,7 +304,7 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta {
this.customModelData = meta.customModelData; this.customModelData = meta.customModelData;
this.blockData = meta.blockData; this.blockData = meta.blockData;
if (meta.hasEnchants()) { if (meta.enchantments != null) {
this.enchantments = new LinkedHashMap<Enchantment, Integer>(meta.enchantments); this.enchantments = new LinkedHashMap<Enchantment, Integer>(meta.enchantments);
} }
@ -676,7 +676,7 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta {
} }
static void applyEnchantments(Map<Enchantment, Integer> enchantments, NBTTagCompound tag, ItemMetaKey key) { static void applyEnchantments(Map<Enchantment, Integer> enchantments, NBTTagCompound tag, ItemMetaKey key) {
if (enchantments == null || enchantments.size() == 0) { if (enchantments == null) {
return; return;
} }
@ -825,7 +825,12 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta {
@Override @Override
public boolean removeEnchant(Enchantment ench) { public boolean removeEnchant(Enchantment ench) {
Preconditions.checkArgument(ench != null, "Enchantment cannot be null"); 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 @Override