Fix blockRefCnt

test
mckuhei 2 years ago
parent eeb5c8dc71
commit 41e55c7e03

@ -130,7 +130,7 @@ public class Chunk
{ {
int var10 = var8 >> 4; int var10 = var8 >> 4;
getBlockStorage(var10).setExtBlockID(var6, var8 & 15, var7, var9); getBlockStorage(var10).setExtBlockID(var6, var8 & 15, var7, var9);
} }
} }
} }

@ -472,7 +472,7 @@ public class ChunkProviderGenerate implements IChunkProvider
int var7 = var4 + 1; int var7 = var4 + 1;
byte var8 = 3; byte var8 = 3;
int var9 = var4 + 1; int var9 = var4 + 1;
byte[] par3ArrayOfByte = storage.getBlockLSBArray(); byte[] par3ArrayOfByte = new byte[1 << 12];
this.biomesForGeneration = this.worldObj.getWorldChunkManager().getBiomesForGeneration(this.biomesForGeneration, x.multiply(BigInteger.valueOf(4)).subtract(BigInteger.valueOf(2)), z.multiply(BigInteger.valueOf(4)).subtract(BigInteger.valueOf(2)), var7 + 5, var9 + 5); this.biomesForGeneration = this.worldObj.getWorldChunkManager().getBiomesForGeneration(this.biomesForGeneration, x.multiply(BigInteger.valueOf(4)).subtract(BigInteger.valueOf(2)), z.multiply(BigInteger.valueOf(4)).subtract(BigInteger.valueOf(2)), var7 + 5, var9 + 5);
double[] noiseArray = initializeNoiseField(null, x.multiply(BigInteger.valueOf(var4)), y * var4, z.multiply(BigInteger.valueOf(var4)), var7, var8, var9); double[] noiseArray = initializeNoiseField(null, x.multiply(BigInteger.valueOf(var4)), y * var4, z.multiply(BigInteger.valueOf(var4)), var7, var8, var9);
for (int var10 = 0; var10 < var4; ++var10) for (int var10 = 0; var10 < var4; ++var10)
@ -540,6 +540,10 @@ public class ChunkProviderGenerate implements IChunkProvider
} }
} }
} }
for(int i = 0; i < 16; i++) for(int j = 0; j < 16; j++) for(int k = 0; k < 16; k++) {
int blockId = par3ArrayOfByte[i << 8 | k << 4 | j] & 0xFF;
if(blockId != 0) storage.setExtBlockID(i, j, k, blockId);
}
} }
/** /**

@ -317,4 +317,12 @@ public class ExtendedBlockStorage
this.blockMSBArray = new NibbleArray(this.blockLSBArray.length, 4); this.blockMSBArray = new NibbleArray(this.blockLSBArray.length, 4);
return this.blockMSBArray; return this.blockMSBArray;
} }
public int getBlockRefCnt() {
return this.blockRefCount;
}
public void setBlockRefCnt(int blockRefCnt) {
this.blockRefCount = blockRefCnt;
}
} }

@ -583,12 +583,15 @@ public class NetClientHandler extends NetHandler
} }
public void handleAddExtraChunk(Packet57ExtraChunk packet) { public void handleAddExtraChunk(Packet57ExtraChunk packet) {
ExtendedBlockStorage storage = this.worldClient.getChunkFromChunkCoords(packet.getX(), packet.getZ()).getBlockStorage(packet.getY()); Chunk chunk = this.worldClient.getChunkFromChunkCoords(packet.getX(), packet.getZ());
if(chunk instanceof EmptyChunk) throw new RuntimeException("Attempt send extra chunk data on empty chunk!");
ExtendedBlockStorage storage = chunk.getBlockStorage(packet.getY());
System.arraycopy(packet.getBlockLSB() , 0, storage.getBlockLSBArray() , 0, storage.getBlockLSBArray() .length); System.arraycopy(packet.getBlockLSB() , 0, storage.getBlockLSBArray() , 0, storage.getBlockLSBArray() .length);
System.arraycopy(packet.getBlockMSB() , 0, storage.getBlockMSBArray() .data, 0, storage.getBlockMSBArray() .data.length); System.arraycopy(packet.getBlockMSB() , 0, storage.getBlockMSBArray() .data, 0, storage.getBlockMSBArray() .data.length);
System.arraycopy(packet.getMetadata() , 0, storage.getMetadataArray() .data, 0, storage.getMetadataArray() .data.length); System.arraycopy(packet.getMetadata() , 0, storage.getMetadataArray() .data, 0, storage.getMetadataArray() .data.length);
System.arraycopy(packet.getSkyLight() , 0, storage.getSkylightArray() .data, 0, storage.getSkylightArray() .data.length); System.arraycopy(packet.getSkyLight() , 0, storage.getSkylightArray() .data, 0, storage.getSkylightArray() .data.length);
System.arraycopy(packet.getBlockLight(), 0, storage.getBlocklightArray().data, 0, storage.getBlocklightArray().data.length); System.arraycopy(packet.getBlockLight(), 0, storage.getBlocklightArray().data, 0, storage.getBlocklightArray().data.length);
storage.setBlockRefCnt(packet.getBlockRefCnt());
this.worldClient.markBlocksDirty(packet.getX().shiftLeft(4), packet.getY() << 4, packet.getZ().shiftLeft(4), (packet.getX().shiftLeft(4)).add(BigInteger.valueOf(15)), packet.getY() + 16, (packet.getZ().shiftLeft(4)).add(BigInteger.valueOf(15))); this.worldClient.markBlocksDirty(packet.getX().shiftLeft(4), packet.getY() << 4, packet.getZ().shiftLeft(4), (packet.getX().shiftLeft(4)).add(BigInteger.valueOf(15)), packet.getY() + 16, (packet.getZ().shiftLeft(4)).add(BigInteger.valueOf(15)));
} }

@ -10,19 +10,20 @@ public class Packet57ExtraChunk extends Packet {
private byte[] blockLSB, blockMSB, metadata, skyLight, blockLight; private byte[] blockLSB, blockMSB, metadata, skyLight, blockLight;
private BigInteger x, z; private BigInteger x, z;
private int y; private int y, blockRefCnt;
public Packet57ExtraChunk() {} public Packet57ExtraChunk() {}
public Packet57ExtraChunk(BigInteger x, int y, BigInteger z, ExtendedBlockStorage storage) { public Packet57ExtraChunk(BigInteger x, int y, BigInteger z, ExtendedBlockStorage storage) {
this.x = x; this.x = x;
this.y = y; this.y = y;
this.z = z; this.z = z;
this.blockLSB = storage.getBlockLSBArray(); this.blockLSB = storage.getBlockLSBArray();
this.blockMSB = storage.getBlockMSBArray().data; this.blockMSB = storage.getBlockMSBArray().data;
this.metadata = storage.getMetadataArray().data; this.metadata = storage.getMetadataArray().data;
this.skyLight = storage.getSkylightArray().data; this.skyLight = storage.getSkylightArray().data;
this.blockLight = storage.getBlocklightArray().data; this.blockLight = storage.getBlocklightArray().data;
this.blockRefCnt = storage.getBlockRefCnt();
} }
@Override @Override
@ -30,11 +31,12 @@ public class Packet57ExtraChunk extends Packet {
this.x = readBigInteger(var1); this.x = readBigInteger(var1);
this.y = var1.readInt(); this.y = var1.readInt();
this.z = readBigInteger(var1); this.z = readBigInteger(var1);
this.blockLSB = readBytesFromStream(var1); this.blockLSB = readBytesFromStream(var1);
this.blockMSB = readBytesFromStream(var1); this.blockMSB = readBytesFromStream(var1);
this.metadata = readBytesFromStream(var1); this.metadata = readBytesFromStream(var1);
this.skyLight = readBytesFromStream(var1); this.skyLight = readBytesFromStream(var1);
this.blockLight = readBytesFromStream(var1); this.blockLight = readBytesFromStream(var1);
this.blockRefCnt = var1.readInt();
} }
@Override @Override
@ -42,11 +44,12 @@ public class Packet57ExtraChunk extends Packet {
writeBigInteger(var1, this.x); writeBigInteger(var1, this.x);
var1.writeInt(this.y); var1.writeInt(this.y);
writeBigInteger(var1, this.z); writeBigInteger(var1, this.z);
writeByteArray(var1, blockLSB); writeByteArray(var1, this.blockLSB);
writeByteArray(var1, blockMSB); writeByteArray(var1, this.blockMSB);
writeByteArray(var1, metadata); writeByteArray(var1, this.metadata);
writeByteArray(var1, skyLight); writeByteArray(var1, this.skyLight);
writeByteArray(var1, blockLight); writeByteArray(var1, this.blockLight);
var1.writeInt(blockRefCnt);
} }
@Override @Override
@ -90,5 +93,9 @@ public class Packet57ExtraChunk extends Packet {
public int getY() { public int getY() {
return y; return y;
} }
public int getBlockRefCnt() {
return blockRefCnt;
}
} }

Loading…
Cancel
Save