From 146609f899d66fdaa72634a3b474d6b71d1ee664 Mon Sep 17 00:00:00 2001 From: DmitriyMX Date: Sat, 10 Nov 2018 17:31:50 +0300 Subject: [PATCH] =?UTF-8?q?=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BF=D0=B5=D1=80=D0=B5=D0=B4=D0=B0?= =?UTF-8?q?=D1=87=D0=B8=20=D0=B4=D0=B0=D0=BD=D0=BD=D1=8B=D1=85=20=D0=BE=20?= =?UTF-8?q?sky=20light?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit раньше считалось, что это проблема в block light --- .../proto_1_12_2/packets/ChunkDataPacket.java | 22 +++++++------------ 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/proto_1.12.2/src/main/java/mc/core/network/proto_1_12_2/packets/ChunkDataPacket.java b/proto_1.12.2/src/main/java/mc/core/network/proto_1_12_2/packets/ChunkDataPacket.java index c90651e..86ea7d7 100644 --- a/proto_1.12.2/src/main/java/mc/core/network/proto_1_12_2/packets/ChunkDataPacket.java +++ b/proto_1.12.2/src/main/java/mc/core/network/proto_1_12_2/packets/ChunkDataPacket.java @@ -8,7 +8,10 @@ import lombok.extern.slf4j.Slf4j; import mc.core.network.NetOutputStream; import mc.core.network.SCPacket; import mc.core.network.proto_1_12_2.ByteArrayOutputNetStream; +import mc.core.utils.NibbleArray; +import mc.core.world.Biome; import mc.core.world.block.Block; +import mc.core.world.block.BlockLocation; import mc.core.world.block.BlockType; import mc.core.world.chunk.Chunk; import mc.core.world.chunk.ChunkSection; @@ -151,7 +154,7 @@ public class ChunkDataPacket implements SCPacket { for (int z = 0; z < 16; z++) { for (int x = 15; x >= 0; x--) { palettedChunkSection.addBlock(chunkSection.getBlockLocal(x, y, z)); - palettedChunkSection.addSkyLight(chunkSection.getSkyLightLocal(x, y, z)); + palettedChunkSection.addSkyLight(15-x, y, z, chunkSection.getSkyLightLocal(15-x, y, z)); if (biomeWrite) { biomes.writeByte(chunkSection.getBiomeLocal(x, z).getId()); @@ -182,15 +185,13 @@ public class ChunkDataPacket implements SCPacket { private int dataItems = 0; private ByteArrayOutputNetStream dataArray = new ByteArrayOutputNetStream(); private ByteArrayOutputNetStream blockLight = new ByteArrayOutputNetStream(); - private ByteArrayOutputNetStream skyLight = new ByteArrayOutputNetStream(); + private NibbleArray skyLight = new NibbleArray(); private int idxHalfLong = 0; private int idxHalfByte1 = 0; - private int idxHalfByte2 = 0; private long dataValueCompacted = 0; private int blockLightCompacted = 0; - private int skyLightCompacted = 0; private int serializeBlockState(BlockType blockType) { return (blockType.getId() << 4) | blockType.getMeta(); @@ -239,16 +240,9 @@ public class ChunkDataPacket implements SCPacket { } } - void addSkyLight(int value) { + void addSkyLight(int x, int y, int z, int value) { // sky light data - if (idxHalfByte2 == 0) { - skyLightCompacted = value; - idxHalfByte2++; - } else { - skyLightCompacted = (skyLightCompacted << 4) | value; - skyLight.writeByte(skyLightCompacted); - idxHalfByte2 = 0; - } + skyLight.set(x, y, z, value); } void writeToNetStream(final NetOutputStream netOutputStream) { @@ -265,7 +259,7 @@ public class ChunkDataPacket implements SCPacket { netOutputStream.writeBytes(blockLight.toByteArray()); // // - netOutputStream.writeBytes(skyLight.toByteArray()); + netOutputStream.writeBytes(skyLight.getRawData()); // } }