From bb9a6e99042ba413e17d2387bcd53503f5b71b72 Mon Sep 17 00:00:00 2001 From: md_5 Date: Mon, 29 Apr 2024 07:38:24 +1000 Subject: [PATCH] SPIGOT-7646: Don't duplicate PDC in customTag / retain old values --- .../org/bukkit/craftbukkit/inventory/CraftMetaItem.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java index 5d80d3650..8217b5025 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java @@ -372,6 +372,12 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { for (String key : keys) { persistentDataContainer.put(key, compound.get(key).copy()); } + + customTag.remove(BUKKIT_CUSTOM_TAG.NBT); + } + + if (customTag.isEmpty()) { + customTag = null; } }); @@ -778,6 +784,7 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { }); } + NBTTagCompound customTag = (this.customTag != null) ? this.customTag.copy() : null; if (!persistentDataContainer.isEmpty()) { NBTTagCompound bukkitCustomCompound = new NBTTagCompound(); Map rawPublicMap = persistentDataContainer.getRaw(); @@ -1583,7 +1590,7 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { builder.put(BUKKIT_CUSTOM_TAG.BUKKIT, persistentDataContainer.serialize()); } - if (customTag != null && !customTag.isEmpty()) { + if (customTag != null) { try { ByteArrayOutputStream buf = new ByteArrayOutputStream(); NBTCompressedStreamTools.writeCompressed(customTag, buf);