From 4c3215bf1b09a832be65e8cd5e336fe4d7af4d8a Mon Sep 17 00:00:00 2001 From: themode Date: Mon, 22 Mar 2021 19:37:16 +0100 Subject: [PATCH] Fix packet writing when compression is disabled --- .../minestom/server/utils/PacketUtils.java | 26 ++++++++++--------- 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/src/main/java/net/minestom/server/utils/PacketUtils.java b/src/main/java/net/minestom/server/utils/PacketUtils.java index aff8b65cc..3fa5eeb07 100644 --- a/src/main/java/net/minestom/server/utils/PacketUtils.java +++ b/src/main/java/net/minestom/server/utils/PacketUtils.java @@ -203,20 +203,22 @@ public final class PacketUtils { final int dataLength = packetBuf.readableBytes(); final int compressionThreshold = MinecraftServer.getCompressionThreshold(); - final boolean compression = compressionThreshold > 0 && dataLength >= compressionThreshold; + final boolean compression = compressionThreshold > 0; if (compression) { - // Compression - ByteBuf compressedBuf = directBuffer ? BufUtils.getBuffer(true) : Unpooled.buffer(); - Utils.writeVarIntBuf(compressedBuf, dataLength); - final Deflater deflater = DEFLATER.get(); - compress(deflater, null, packetBuf, compressedBuf); - packetBuf = compressedBuf; - } else { - // No compression - ByteBuf uncompressedLengthBuffer = Unpooled.buffer(); - Utils.writeVarIntBuf(uncompressedLengthBuffer, 0); - packetBuf = Unpooled.wrappedBuffer(uncompressedLengthBuffer, packetBuf); + if (dataLength >= compressionThreshold) { + // Packet large enough + ByteBuf compressedBuf = directBuffer ? BufUtils.getBuffer(true) : Unpooled.buffer(); + Utils.writeVarIntBuf(compressedBuf, dataLength); + final Deflater deflater = DEFLATER.get(); + compress(deflater, null, packetBuf, compressedBuf); + packetBuf = compressedBuf; + } else { + // Packet too small + ByteBuf uncompressedLengthBuffer = Unpooled.buffer(); + Utils.writeVarIntBuf(uncompressedLengthBuffer, 0); + packetBuf = Unpooled.wrappedBuffer(uncompressedLengthBuffer, packetBuf); + } } // Write the final length of the packet