From 34bc5b9d36f936588361a2410ecaf18778c510f9 Mon Sep 17 00:00:00 2001 From: Nassim Jahnke Date: Tue, 23 Apr 2024 13:07:05 +0200 Subject: [PATCH] Put item name and lore through component rewriter An absolute classic moment where servers are putting hover events into not hoverable item names and lore --- .../Protocol1_20_5To1_20_3.java | 6 ++++- .../BlockItemPacketRewriter1_20_5.java | 22 ++++++++++++------- 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_20_5to1_20_3/Protocol1_20_5To1_20_3.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_20_5to1_20_3/Protocol1_20_5To1_20_3.java index 28c4f34bb..4cefb713b 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_20_5to1_20_3/Protocol1_20_5To1_20_3.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_20_5to1_20_3/Protocol1_20_5To1_20_3.java @@ -68,6 +68,7 @@ public final class Protocol1_20_5To1_20_3 extends AbstractProtocol tagRewriter = new TagRewriter<>(this); + private final ComponentRewriter componentRewriter = new ComponentRewriter1_20_5(this); public Protocol1_20_5To1_20_3() { super(ClientboundPacket1_20_3.class, ClientboundPacket1_20_5.class, ServerboundPacket1_20_3.class, ServerboundPacket1_20_5.class); @@ -86,7 +87,6 @@ public final class Protocol1_20_5To1_20_3 extends AbstractProtocol(this).register(ClientboundPackets1_20_3.STATISTICS); - final ComponentRewriter componentRewriter = new ComponentRewriter1_20_5(this); componentRewriter.registerComponentPacket(ClientboundPackets1_20_3.SYSTEM_CHAT); componentRewriter.registerComponentPacket(ClientboundPackets1_20_3.DISGUISED_CHAT); @@ -307,6 +307,10 @@ public final class Protocol1_20_5To1_20_3 extends AbstractProtocol getComponentRewriter() { + return componentRewriter; + } + @Override protected PacketTypesProvider createPacketTypesProvider() { return new SimplePacketTypesProvider<>( diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_20_5to1_20_3/rewriter/BlockItemPacketRewriter1_20_5.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_20_5to1_20_3/rewriter/BlockItemPacketRewriter1_20_5.java index f37d8ee28..8231071f9 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_20_5to1_20_3/rewriter/BlockItemPacketRewriter1_20_5.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_20_5to1_20_3/rewriter/BlockItemPacketRewriter1_20_5.java @@ -389,7 +389,7 @@ public final class BlockItemPacketRewriter1_20_5 extends ItemRewriter pagesTag = tag.getListTag("pages", StringTag.class); final CompoundTag filteredPagesTag = tag.getCompoundTag("filtered_pages"); if (pagesTag == null) { @@ -1087,11 +1087,11 @@ public final class BlockItemPacketRewriter1_20_5 extends ItemRewriter dataKey, final boolean allowEmpty) { final ListTag itemsTag = tag.getListTag(key, CompoundTag.class); @@ -1265,7 +1271,7 @@ public final class BlockItemPacketRewriter1_20_5 extends ItemRewriter loreTag = displayTag.getListTag("Lore", StringTag.class); if (loreTag != null) { // Apply limit as per new network codec. Some servers send these lores to do trickery with shaders - data.set(StructuredDataKey.LORE, loreTag.stream().limit(256).map(t -> ComponentUtil.jsonStringToTag(t.getValue())).toArray(Tag[]::new)); + data.set(StructuredDataKey.LORE, loreTag.stream().limit(256).map(t -> jsonToTag(connection, t)).toArray(Tag[]::new)); } final NumberTag colorTag = displayTag.getNumberTag("color");