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 16d2d739d..d6775de46 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 @@ -103,6 +103,8 @@ import java.util.UUID; import java.util.logging.Level; import org.checkerframework.checker.nullness.qual.Nullable; +import static com.viaversion.viaversion.util.MathUtil.clamp; + public final class BlockItemPacketRewriter1_20_5 extends ItemRewriter { public static final String[] MOB_TAGS = {"NoAI", "Silent", "NoGravity", "Glowing", "Invulnerable", "Health", "Age", "Variant", "HuntingCooldown", "BucketVariantTag"}; @@ -461,12 +463,12 @@ public final class BlockItemPacketRewriter1_20_5 extends ItemRewriter dataKey) { final ListTag itemsTag = tag.getListTag(key, CompoundTag.class); if (itemsTag != null) { - final Item[] items = itemsTag.stream().map(this::itemFromTag).filter(Objects::nonNull).toArray(Item[]::new); + final Item[] items = itemsTag.stream().limit(256).map(this::itemFromTag).filter(Objects::nonNull).toArray(Item[]::new); data.set(dataKey, items); } } @@ -947,10 +958,17 @@ public final class BlockItemPacketRewriter1_20_5 extends ItemRewriter length ? s.substring(0, length) : s; + } + private void updateBees(final StructuredDataContainer data, final ListTag beesTag) { final Bee[] bees = beesTag.stream().map(bee -> { final CompoundTag entityData = bee.getCompoundTag("EntityData"); @@ -981,7 +999,16 @@ public final class BlockItemPacketRewriter1_20_5 extends ItemRewriter loreTag = displayTag.getListTag("Lore", StringTag.class); if (loreTag != null) { - data.set(StructuredDataKey.LORE, loreTag.stream().map(t -> ComponentUtil.jsonStringToTag(t.getValue())).toArray(Tag[]::new)); + // 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)); } final NumberTag colorTag = displayTag.getNumberTag("color");