summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexander Harkness <me@bearbin.net>2024-07-01 00:27:51 +0200
committerAlexander Harkness <me@bearbin.net>2024-11-04 10:09:54 +0100
commit416badb6b077321b73d4827b11077617d077adb8 (patch)
treed87af655c5da0c762db59c579d2a8697a401c27c
parentUse named constant for section size rather than magic number. (diff)
downloadcuberite-416badb6b077321b73d4827b11077617d077adb8.tar
cuberite-416badb6b077321b73d4827b11077617d077adb8.tar.gz
cuberite-416badb6b077321b73d4827b11077617d077adb8.tar.bz2
cuberite-416badb6b077321b73d4827b11077617d077adb8.tar.lz
cuberite-416badb6b077321b73d4827b11077617d077adb8.tar.xz
cuberite-416badb6b077321b73d4827b11077617d077adb8.tar.zst
cuberite-416badb6b077321b73d4827b11077617d077adb8.zip
-rw-r--r--src/Protocol/ChunkDataSerializer.cpp16
1 files changed, 15 insertions, 1 deletions
diff --git a/src/Protocol/ChunkDataSerializer.cpp b/src/Protocol/ChunkDataSerializer.cpp
index 6b5553ee7..6f95fb472 100644
--- a/src/Protocol/ChunkDataSerializer.cpp
+++ b/src/Protocol/ChunkDataSerializer.cpp
@@ -502,7 +502,21 @@ inline void cChunkDataSerializer::Serialize477(const int a_ChunkX, const int a_C
// Write each chunk section...
ChunkDef_ForEachSection(a_BlockData, a_LightData,
{
- m_Packet.WriteBEInt16(ChunkBlockData::SectionBlockCount); // a temp fix to make sure sections don't disappear
+ // Count non-air blocks.
+ int BlockCount = 0;
+ if (Blocks != nullptr)
+ {
+ for (size_t i = 0; i != ChunkBlockData::SectionBlockCount; i++)
+ {
+ const BLOCKTYPE BlockType = (*Blocks)[i];
+ if (BlockType != E_BLOCK_AIR)
+ {
+ BlockCount++;
+ }
+ }
+ }
+
+ m_Packet.WriteBEInt16(BlockCount);
m_Packet.WriteBEUInt8(BitsPerEntry);
m_Packet.WriteVarInt32(static_cast<UInt32>(ChunkSectionDataArraySize));
WriteBlockSectionSeamless<&Palette477>(Blocks, Metas, BitsPerEntry);