Initial commit (Forge 1291).
This commit is contained in:
@ -0,0 +1,117 @@
|
||||
--- ../src-base/minecraft/net/minecraft/network/play/server/S26PacketMapChunkBulk.java
|
||||
+++ ../src-work/minecraft/net/minecraft/network/play/server/S26PacketMapChunkBulk.java
|
||||
@@ -24,10 +24,18 @@
|
||||
private byte[][] field_149260_f;
|
||||
private int field_149261_g;
|
||||
private boolean field_149267_h;
|
||||
- private static byte[] field_149268_i = new byte[0];
|
||||
- private static final String __OBFID = "CL_00001306";
|
||||
- private int maxLen = 0;
|
||||
- private Semaphore deflateGate;
|
||||
+ private byte[] field_149268_i = new byte[0]; // CraftBukkit - remove static
|
||||
+ // CraftBukkit start
|
||||
+ static final ThreadLocal<Deflater> localDeflater = new ThreadLocal<Deflater>()
|
||||
+ {
|
||||
+ @Override
|
||||
+ protected Deflater initialValue()
|
||||
+ {
|
||||
+ // Don't use higher compression level, slows things down too much
|
||||
+ return new Deflater(6);
|
||||
+ }
|
||||
+ };
|
||||
+ // CraftBukkit end
|
||||
|
||||
public S26PacketMapChunkBulk() {}
|
||||
|
||||
@@ -46,6 +54,15 @@
|
||||
{
|
||||
Chunk chunk = (Chunk)p_i45197_1_.get(k);
|
||||
S21PacketChunkData.Extracted extracted = S21PacketChunkData.func_149269_a(chunk, true, 65535);
|
||||
+
|
||||
+ if (field_149268_i.length < j + extracted.field_150282_a.length)
|
||||
+ {
|
||||
+ byte[] abyte = new byte[j + extracted.field_150282_a.length];
|
||||
+ System.arraycopy(field_149268_i, 0, abyte, 0, field_149268_i.length);
|
||||
+ field_149268_i = abyte;
|
||||
+ }
|
||||
+
|
||||
+ System.arraycopy(extracted.field_150282_a, 0, field_149268_i, j, extracted.field_150282_a.length);
|
||||
j += extracted.field_150282_a.length;
|
||||
this.field_149266_a[k] = chunk.xPosition;
|
||||
this.field_149264_b[k] = chunk.zPosition;
|
||||
@@ -53,34 +70,36 @@
|
||||
this.field_149262_d[k] = extracted.field_150281_c;
|
||||
this.field_149260_f[k] = extracted.field_150282_a;
|
||||
}
|
||||
- this.deflateGate = new Semaphore(1);
|
||||
- maxLen = j;
|
||||
- }
|
||||
-
|
||||
- private void deflate()
|
||||
- {
|
||||
- byte[] data = new byte[maxLen];
|
||||
- int offset = 0;
|
||||
- for (int x = 0; x < field_149260_f.length; x++)
|
||||
- {
|
||||
- System.arraycopy(field_149260_f[x], 0, data, offset, field_149260_f[x].length);
|
||||
- offset += field_149260_f[x].length;
|
||||
- }
|
||||
+ /* CraftBukkit start - Moved to compress()
|
||||
Deflater deflater = new Deflater(-1);
|
||||
|
||||
- try
|
||||
- {
|
||||
- deflater.setInput(data, 0, data.length);
|
||||
+ try {
|
||||
+ deflater.setInput(buildBuffer, 0, j);
|
||||
deflater.finish();
|
||||
- byte[] deflated = new byte[data.length];
|
||||
- this.field_149261_g = deflater.deflate(deflated);
|
||||
- this.field_149263_e = deflated;
|
||||
+ this.buffer = new byte[j];
|
||||
+ this.size = deflater.deflate(this.buffer);
|
||||
+ } finally {
|
||||
+ deflater.end();
|
||||
}
|
||||
- finally
|
||||
+ */
|
||||
+ }
|
||||
+
|
||||
+ // Add compression method
|
||||
+ public void compress()
|
||||
+ {
|
||||
+ if (this.field_149263_e != null)
|
||||
{
|
||||
- deflater.end();
|
||||
+ return;
|
||||
}
|
||||
+
|
||||
+ Deflater deflater = localDeflater.get();
|
||||
+ deflater.reset();
|
||||
+ deflater.setInput(this.field_149268_i);
|
||||
+ deflater.finish();
|
||||
+ this.field_149263_e = new byte[this.field_149268_i.length + 100];
|
||||
+ this.field_149261_g = deflater.deflate(this.field_149263_e);
|
||||
}
|
||||
+ // CraftBukkit end
|
||||
|
||||
public static int func_149258_c()
|
||||
{
|
||||
@@ -155,16 +174,7 @@
|
||||
|
||||
public void writePacketData(PacketBuffer p_148840_1_) throws IOException
|
||||
{
|
||||
- if (this.field_149263_e == null)
|
||||
- {
|
||||
- deflateGate.acquireUninterruptibly();
|
||||
- if (this.field_149263_e == null)
|
||||
- {
|
||||
- deflate();
|
||||
- }
|
||||
- deflateGate.release();
|
||||
- }
|
||||
-
|
||||
+ compress(); // CraftBukkit
|
||||
p_148840_1_.writeShort(this.field_149266_a.length);
|
||||
p_148840_1_.writeInt(this.field_149261_g);
|
||||
p_148840_1_.writeBoolean(this.field_149267_h);
|
Reference in New Issue
Block a user