diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/v1_20_3to1_20_5/rewriter/BlockItemPacketRewriter1_20_5.java b/common/src/main/java/com/viaversion/viaversion/protocols/v1_20_3to1_20_5/rewriter/BlockItemPacketRewriter1_20_5.java index 194468c3d..ec4f8410a 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/v1_20_3to1_20_5/rewriter/BlockItemPacketRewriter1_20_5.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/v1_20_3to1_20_5/rewriter/BlockItemPacketRewriter1_20_5.java @@ -1089,13 +1089,13 @@ public final class BlockItemPacketRewriter1_20_5 extends ItemRewriter pages = tag.getListTag("pages", StringTag.class); + tag.put(nbtTagName("pages"), pages == null ? new ListTag<>(StringTag.class) : pages.copy()); + if (pages == null) { pages = new ListTag<>(Collections.singletonList(new StringTag(ComponentUtil.emptyJsonComponent().toString()))); tag.put("pages", pages); @@ -481,6 +483,32 @@ public class ItemPacketRewriter1_9 extends ItemRewriter backup = tag.removeUnchecked(nbtTagName("pages")); + if (backup != null) { + if (!backup.isEmpty()) { + tag.put("pages", backup); + } else { + tag.remove("pages"); + if (tag.isEmpty()) { + item.setTag(null); + } + } + } else { + // Fallback to normal pages tag + ListTag pages = tag.getListTag("pages", StringTag.class); + if (pages != null) { + for (int i = 0; i < pages.size(); i++) { + final StringTag page = pages.get(i); + page.setValue(ComponentUtil.convertJsonOrEmpty(page.getValue(), SerializerVersion.V1_9, SerializerVersion.V1_8).toString()); + } + } + } + } + } boolean newItem = item.identifier() >= 198 && item.identifier() <= 212; newItem |= item.identifier() == 397 && item.data() == 5;