diff --git a/paper-server/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/paper-server/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java index 8b6e83035..060f0c5f1 100644 --- a/paper-server/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java +++ b/paper-server/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java @@ -507,11 +507,17 @@ public final class CraftMagicNumbers implements UnsafeValues { private ItemStack deserializeItem(CompoundTag compound) { final int dataVersion = compound.getIntOr("DataVersion", 0); compound = PlatformHooks.get().convertNBT(References.ITEM_STACK, DataFixers.getDataFixer(), compound, dataVersion, this.getDataVersion()); // Paper - possibly use dataconverter + if (compound.getStringOr("id", "minecraft:air").equals("minecraft:air")) { + return CraftItemStack.asCraftMirror(net.minecraft.world.item.ItemStack.EMPTY); + } return CraftItemStack.asCraftMirror(net.minecraft.world.item.ItemStack.parse(CraftRegistry.getMinecraftRegistry(), compound).orElseThrow()); } @Override public @org.jetbrains.annotations.NotNull Map serializeStack(final ItemStack itemStack) { + if (itemStack.isEmpty()) { + return Map.of("id", "minecraft:air", SharedConstants.DATA_VERSION_TAG, this.getDataVersion(), "schema_version", 1); + } final CompoundTag tag = CraftItemStack.asNMSCopy(itemStack).save(CraftRegistry.getMinecraftRegistry()).asCompound().orElseThrow(); NbtUtils.addCurrentDataVersion(tag);