From 340ccd57f70ebe1631994b0c44ca5224de9e2719 Mon Sep 17 00:00:00 2001 From: blablubbabc Date: Mon, 10 Jun 2024 08:35:53 +1000 Subject: [PATCH] SPIGOT-7735: Fix serialization of player heads with note block sound --- .../org/bukkit/craftbukkit/inventory/CraftMetaItem.java | 3 ++- .../org/bukkit/craftbukkit/inventory/CraftMetaSkull.java | 7 +++++-- 2 files changed, 7 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 a122128cd..12beb5d63 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java @@ -591,7 +591,7 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { String unhandled = SerializableMeta.getString(map, "unhandled", true); if (unhandled != null) { - ByteArrayInputStream buf = new ByteArrayInputStream(Base64.getDecoder().decode(internal)); + ByteArrayInputStream buf = new ByteArrayInputStream(Base64.getDecoder().decode(unhandled)); try { NBTTagCompound unhandledTag = NBTCompressedStreamTools.readCompressed(buf, NBTReadLimiter.unlimitedHeap()); unhandledTags.copy(DataComponentPatch.CODEC.parse(MinecraftServer.getDefaultRegistryAccess().createSerializationContext(DynamicOpsNBT.INSTANCE), unhandledTag).result().get()); @@ -1817,6 +1817,7 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { CraftMetaMap.MAP_ID.TYPE, CraftMetaPotion.POTION_CONTENTS.TYPE, CraftMetaSkull.SKULL_PROFILE.TYPE, + CraftMetaSkull.NOTE_BLOCK_SOUND.TYPE, CraftMetaSpawnEgg.ENTITY_TAG.TYPE, CraftMetaBlockState.BLOCK_ENTITY_TAG.TYPE, CraftMetaBook.BOOK_CONTENT.TYPE, diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaSkull.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaSkull.java index da39f00de..f18c7df62 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaSkull.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaSkull.java @@ -288,13 +288,16 @@ class CraftMetaSkull extends CraftMetaItem implements SkullMeta { @Override Builder serialize(Builder builder) { super.serialize(builder); + if (this.profile != null) { - return builder.put(SKULL_OWNER.BUKKIT, new CraftPlayerProfile(this.profile)); + builder.put(SKULL_OWNER.BUKKIT, new CraftPlayerProfile(this.profile)); } + NamespacedKey namespacedKeyNB = this.getNoteBlockSound(); if (namespacedKeyNB != null) { - return builder.put(NOTE_BLOCK_SOUND.BUKKIT, namespacedKeyNB.toString()); + builder.put(NOTE_BLOCK_SOUND.BUKKIT, namespacedKeyNB.toString()); } + return builder; } }