From 8aa67691933c34984626ede4f22ecd3a4674c0ba Mon Sep 17 00:00:00 2001 From: Nassim Jahnke Date: Mon, 29 Apr 2024 23:11:10 +0200 Subject: [PATCH] Handle empty items in item lists --- .../rewriter/StructuredDataConverter.java | 25 +++++++++++-------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_20_5to1_20_3/rewriter/StructuredDataConverter.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_20_5to1_20_3/rewriter/StructuredDataConverter.java index dbfdb1ce5..7dd4e2c7d 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_20_5to1_20_3/rewriter/StructuredDataConverter.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_20_5to1_20_3/rewriter/StructuredDataConverter.java @@ -755,18 +755,23 @@ public final class StructuredDataConverter { final ListTag itemsTag = new ListTag<>(CompoundTag.class); for (final Item item : items) { final CompoundTag savedItem = new CompoundTag(); - final String name = toMappedItemName(item.identifier()); - savedItem.putString("id", name); - if (backupInconvertibleData && name.isEmpty()) { - savedItem.putInt(ITEM_BACKUP_TAG_KEY, item.identifier()); - } - savedItem.putByte("Count", (byte) item.amount()); + if (item != null) { + final String name = toMappedItemName(item.identifier()); + savedItem.putString("id", name); + if (backupInconvertibleData && name.isEmpty()) { + savedItem.putInt(ITEM_BACKUP_TAG_KEY, item.identifier()); + } + savedItem.putByte("Count", (byte) item.amount()); - final CompoundTag itemTag = new CompoundTag(); - for (final StructuredData data : item.structuredData().data().values()) { - writeToTag(data, itemTag); + final CompoundTag itemTag = new CompoundTag(); + for (final StructuredData data : item.structuredData().data().values()) { + writeToTag(data, itemTag); + } + savedItem.put("tag", itemTag); + } else { + savedItem.putString("id", "air"); } - savedItem.put("tag", itemTag); + itemsTag.add(savedItem); } tag.put(key, itemsTag);