From be2b2e6ef8353755df9eb7cb640c16f85fab4ef0 Mon Sep 17 00:00:00 2001 From: DmitriyMX Date: Sat, 10 Nov 2018 17:39:57 +0300 Subject: [PATCH] =?UTF-8?q?=D0=BE=D0=BF=D1=82=D0=B8=D0=BC=D0=B8=D0=B7?= =?UTF-8?q?=D0=B0=D1=86=D0=B8=D1=8F=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=20block=20l?= =?UTF-8?q?ight?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/mc/core/world/block/BlockLocation.java | 14 +++++++++++--- .../proto_1_12_2/packets/ChunkDataPacket.java | 15 +++------------ 2 files changed, 14 insertions(+), 15 deletions(-) diff --git a/core/src/main/java/mc/core/world/block/BlockLocation.java b/core/src/main/java/mc/core/world/block/BlockLocation.java index e5220c5..a4bfc49 100644 --- a/core/src/main/java/mc/core/world/block/BlockLocation.java +++ b/core/src/main/java/mc/core/world/block/BlockLocation.java @@ -23,9 +23,17 @@ public class BlockLocation implements Cloneable { public BlockLocation toGlobal(ChunkSection chunkSection) { return new BlockLocation( - (chunkSection.getX() << 8) + x, - (chunkSection.getY() << 8) + y, - (chunkSection.getZ() << 8) + z + (chunkSection.getX() << 4) + x, + (chunkSection.getY() << 4) + y, + (chunkSection.getZ() << 4) + z + ); + } + + public BlockLocation toLocal() { + return new BlockLocation( + x - (x >> 4 << 4), + y - (y >> 4 << 4), + z - (z >> 4 << 4) ); } 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 86ea7d7..2223ad9 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 @@ -184,14 +184,12 @@ public class ChunkDataPacket implements SCPacket { private TIntList palette = new TIntArrayList(); private int dataItems = 0; private ByteArrayOutputNetStream dataArray = new ByteArrayOutputNetStream(); - private ByteArrayOutputNetStream blockLight = new ByteArrayOutputNetStream(); + private NibbleArray blockLight = new NibbleArray(); private NibbleArray skyLight = new NibbleArray(); private int idxHalfLong = 0; - private int idxHalfByte1 = 0; private long dataValueCompacted = 0; - private int blockLightCompacted = 0; private int serializeBlockState(BlockType blockType) { return (blockType.getId() << 4) | blockType.getMeta(); @@ -230,14 +228,7 @@ public class ChunkDataPacket implements SCPacket { } // block light data - if (idxHalfByte1 == 0) { - blockLightCompacted = block.getLight(); - idxHalfByte1++; - } else { - blockLightCompacted = (blockLightCompacted << 4) | block.getLight(); - blockLight.writeByte(blockLightCompacted); - idxHalfByte1 = 0; - } + blockLight.set(block.getLocation().toLocal(), block.getLight()); } void addSkyLight(int x, int y, int z, int value) { @@ -256,7 +247,7 @@ public class ChunkDataPacket implements SCPacket { netOutputStream.writeBytes(dataArray.toByteArray()); // Data Array // // - netOutputStream.writeBytes(blockLight.toByteArray()); + netOutputStream.writeBytes(blockLight.getRawData()); // // netOutputStream.writeBytes(skyLight.getRawData());