diff --git a/src/main/java/net/raphimc/viaproxy/proxy/session/ProxyConnection.java b/src/main/java/net/raphimc/viaproxy/proxy/session/ProxyConnection.java index 379ffd9..26223d5 100644 --- a/src/main/java/net/raphimc/viaproxy/proxy/session/ProxyConnection.java +++ b/src/main/java/net/raphimc/viaproxy/proxy/session/ProxyConnection.java @@ -27,6 +27,8 @@ import io.netty.buffer.ByteBufUtil; import io.netty.buffer.Unpooled; import io.netty.channel.*; import io.netty.util.AttributeKey; +import net.lenni0451.mcstructs.nbt.INbtTag; +import net.lenni0451.mcstructs.nbt.tags.CompoundTag; import net.lenni0451.mcstructs.text.components.StringComponent; import net.raphimc.netminecraft.constants.ConnectionState; import net.raphimc.netminecraft.constants.MCPackets; @@ -287,12 +289,20 @@ public class ProxyConnection extends NetClient { } else if (this.c2pConnectionState == ConnectionState.CONFIGURATION) { final ByteBuf disconnectPacket = Unpooled.buffer(); PacketTypes.writeVarInt(disconnectPacket, MCPackets.S2C_CONFIG_DISCONNECT.getId(this.clientVersion.getVersion())); - PacketTypes.writeString(disconnectPacket, messageToJson(message)); + if (this.clientVersion.isOlderThanOrEqualTo(VersionEnum.r1_20_2)) { + PacketTypes.writeString(disconnectPacket, messageToJson(message)); + } else { + PacketTypes.writeUnnamedTag(disconnectPacket, messageToNbt(message)); + } future = this.c2p.writeAndFlush(disconnectPacket); } else if (this.c2pConnectionState == ConnectionState.PLAY) { final ByteBuf disconnectPacket = Unpooled.buffer(); PacketTypes.writeVarInt(disconnectPacket, MCPackets.S2C_DISCONNECT.getId(this.clientVersion.getVersion())); - PacketTypes.writeString(disconnectPacket, messageToJson(message)); + if (this.clientVersion.isOlderThanOrEqualTo(VersionEnum.r1_20_2)) { + PacketTypes.writeString(disconnectPacket, messageToJson(message)); + } else { + PacketTypes.writeUnnamedTag(disconnectPacket, messageToNbt(message)); + } future = this.c2p.writeAndFlush(disconnectPacket); } else { future = this.c2p.newSucceededFuture(); @@ -312,4 +322,10 @@ public class ProxyConnection extends NetClient { return obj.toString(); } + private static INbtTag messageToNbt(final String message) { + final CompoundTag tag = new CompoundTag(); + tag.add("text", new StringComponent(message)); + return tag; + } + }