Packet51MapChunk: Move chunk compression to the writer thread

This commit is contained in:
Dereku 2026-02-07 07:23:23 +07:00
parent e726216267
commit e85a63e9a0

View file

@ -3,11 +3,12 @@ package net.minecraft.network.packets;
import net.minecraft.network.NetHandler;
import net.minecraft.world.World;
import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.util.zip.DataFormatException;
import java.util.zip.Deflater;
import java.util.zip.DeflaterOutputStream;
import java.util.zip.Inflater;
public class Packet51MapChunk extends Packet {
@ -19,6 +20,9 @@ public class Packet51MapChunk extends Packet {
public int zSize;
public byte[] chunk;
private int chunkSize;
// Patch start
public byte[] uncompressedChunk;
// Patch end
public Packet51MapChunk() {
this.isChunkDataPacket = true;
@ -32,17 +36,20 @@ public class Packet51MapChunk extends Packet {
this.xSize = var4;
this.ySize = var5;
this.zSize = var6;
byte[] var8 = var7.getChunkData(var1, var2, var3, var4, var5, var6);
Deflater var9 = new Deflater(-1);
// Patch start
//byte[] var8 = var7.getChunkData(var1, var2, var3, var4, var5, var6);
//Deflater var9 = new Deflater(-1);
try {
var9.setInput(var8);
var9.finish();
this.chunk = new byte[var4 * var5 * var6 * 5 / 2];
this.chunkSize = var9.deflate(this.chunk);
} finally {
var9.end();
}
//try {
// var9.setInput(var8);
// var9.finish();
// this.chunk = new byte[var4 * var5 * var6 * 5 / 2];
// this.chunkSize = var9.deflate(this.chunk);
//} finally {
// var9.end();
//}
this.uncompressedChunk = var7.getChunkData(var1, var2, var3, var4, var5, var6);
// Patch end
}
@ -71,6 +78,15 @@ public class Packet51MapChunk extends Packet {
}
public void writePacketData(DataOutputStream var1) throws IOException {
// Patch start
ByteArrayOutputStream compressed = new ByteArrayOutputStream();
try (DeflaterOutputStream dos = new DeflaterOutputStream(compressed)) {
dos.write(this.uncompressedChunk);
} catch (IOException ignore) {
}
this.chunk = compressed.toByteArray();
this.chunkSize = this.chunk.length;
// Patch end
var1.writeInt(this.xPosition);
var1.writeShort(this.yPosition);
var1.writeInt(this.zPosition);