aboutsummaryrefslogtreecommitdiff
path: root/Minecraft.World/BlockRegionUpdatePacket.cpp
diff options
context:
space:
mode:
authorLoki Rautio <lokirautio@gmail.com>2026-03-04 03:56:03 -0600
committerLoki Rautio <lokirautio@gmail.com>2026-03-04 03:56:03 -0600
commit42aec6dac53dffa6afe072560a7e1d4986112538 (patch)
tree0836426857391df1b6a83f6368a183f83ec9b104 /Minecraft.World/BlockRegionUpdatePacket.cpp
parentc9d58eeac7c72f0b3038e084667b4d89a6249fce (diff)
parentef9b6fd500dfabd9463267b0dd9e29577eea8a2b (diff)
Merge branch 'main' into pr/win64-world-saves
# Conflicts: # Minecraft.Client/MinecraftServer.cpp # README.md
Diffstat (limited to 'Minecraft.World/BlockRegionUpdatePacket.cpp')
-rw-r--r--Minecraft.World/BlockRegionUpdatePacket.cpp16
1 files changed, 13 insertions, 3 deletions
diff --git a/Minecraft.World/BlockRegionUpdatePacket.cpp b/Minecraft.World/BlockRegionUpdatePacket.cpp
index d85321a5..bec943d8 100644
--- a/Minecraft.World/BlockRegionUpdatePacket.cpp
+++ b/Minecraft.World/BlockRegionUpdatePacket.cpp
@@ -11,6 +11,8 @@
#include "Dimension.h"
+#define BLOCK_REGION_UPDATE_FULLCHUNK 0x01
+#define BLOCK_REGION_UPDATE_ZEROHEIGHT 0x02 // added so we can still send a byte for ys, which really needs the range 0-256
BlockRegionUpdatePacket::~BlockRegionUpdatePacket()
{
@@ -82,10 +84,10 @@ BlockRegionUpdatePacket::BlockRegionUpdatePacket(int x, int y, int z, int xs, in
size = inputSize;
}
}
-
+
void BlockRegionUpdatePacket::read(DataInputStream *dis) //throws IOException
{
- bIsFullChunk = dis->readBoolean();
+ byte chunkFlags = dis->readByte();
x = dis->readInt();
y = dis->readShort();
z = dis->readInt();
@@ -93,6 +95,10 @@ void BlockRegionUpdatePacket::read(DataInputStream *dis) //throws IOException
ys = dis->read() + 1;
zs = dis->read() + 1;
+ bIsFullChunk = (chunkFlags & BLOCK_REGION_UPDATE_FULLCHUNK) ? true : false;
+ if(chunkFlags & BLOCK_REGION_UPDATE_ZEROHEIGHT)
+ ys = 0;
+
size = dis->readInt();
levelIdx = ( size >> 30 ) & 3;
size &= 0x3fffffff;
@@ -131,7 +137,11 @@ void BlockRegionUpdatePacket::read(DataInputStream *dis) //throws IOException
void BlockRegionUpdatePacket::write(DataOutputStream *dos) // throws IOException
{
- dos->writeBoolean(bIsFullChunk);
+ byte chunkFlags = 0;
+ if(bIsFullChunk) chunkFlags |= BLOCK_REGION_UPDATE_FULLCHUNK;
+ if(ys == 0) chunkFlags |= BLOCK_REGION_UPDATE_ZEROHEIGHT;
+
+ dos->writeByte(chunkFlags);
dos->writeInt(x);
dos->writeShort(y);
dos->writeInt(z);