From 2daa1aa39e7f4b41bb72b057fb1ab800fc88d031 Mon Sep 17 00:00:00 2001 From: Nassim Jahnke Date: Thu, 20 Jun 2024 13:48:58 +0200 Subject: [PATCH] Handle infinite effect duration in 1.19.4->1.19.3 Fixes #796 --- .../rewriter/EntityPacketRewriter1_19_4.java | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/v1_19_4to1_19_3/rewriter/EntityPacketRewriter1_19_4.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_19_4to1_19_3/rewriter/EntityPacketRewriter1_19_4.java index c5880673..6564d8e2 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/v1_19_4to1_19_3/rewriter/EntityPacketRewriter1_19_4.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_19_4to1_19_3/rewriter/EntityPacketRewriter1_19_4.java @@ -17,6 +17,9 @@ */ package com.viaversion.viabackwards.protocol.v1_19_4to1_19_3.rewriter; +import com.viaversion.nbt.tag.CompoundTag; +import com.viaversion.nbt.tag.ListTag; +import com.viaversion.nbt.tag.NumberTag; import com.viaversion.viabackwards.api.entities.storage.EntityReplacement; import com.viaversion.viabackwards.api.rewriters.EntityRewriter; import com.viaversion.viabackwards.protocol.v1_19_4to1_19_3.Protocol1_19_4To1_19_3; @@ -30,9 +33,6 @@ import com.viaversion.viaversion.api.type.types.version.Types1_19_4; import com.viaversion.viaversion.libs.gson.JsonElement; import com.viaversion.viaversion.protocols.v1_19_1to1_19_3.packet.ClientboundPackets1_19_3; import com.viaversion.viaversion.protocols.v1_19_3to1_19_4.packet.ClientboundPackets1_19_4; -import com.viaversion.nbt.tag.CompoundTag; -import com.viaversion.nbt.tag.ListTag; -import com.viaversion.nbt.tag.NumberTag; import com.viaversion.viaversion.util.TagUtil; public final class EntityPacketRewriter1_19_4 extends EntityRewriter { @@ -127,6 +127,16 @@ public final class EntityPacketRewriter1_19_4 extends EntityRewriter { + wrapper.passthrough(Types.VAR_INT); // Entity id + wrapper.passthrough(Types.VAR_INT); // Effect id + wrapper.passthrough(Types.BYTE); // Amplifier + + // Handle inifinite duration. Use a value the client still accepts without bugging out the display while still being practically infinite + final int duration = wrapper.read(Types.VAR_INT); + wrapper.write(Types.VAR_INT, duration == -1 ? 999999 : duration); + }); } @Override