Temp fix for disappearing chunk sections in 1.14 (#5560)

* Temp fix for dissapearing section in 1.13 and 1.14 versions

Previously the value for nonEmptyBlocks in each chunk section was -1. This was probably set with the intention to set it to the max value. However, the game also interprets the value as signed. meaning when a block is placed the value is incremented to 0.  But when the nonEmptyBlocks value is 0 the game treats that section as empty and stops rendering blocks in it. 

This patch makes sure that the value sent is 4096, the amount of blocks in any section. This will probably lead to the inverse bug where the game will treat empty sections as non-empty.

* Use named constant for section size rather than magic number.

---------

Co-authored-by: Alexander Harkness <me@bearbin.net>
This commit is contained in:
Filip 2024-11-04 10:01:31 +01:00 committed by GitHub
parent d82a6afd9e
commit fa908f577d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -502,7 +502,7 @@ 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(-1);
m_Packet.WriteBEInt16(ChunkBlockData::SectionBlockCount); // a temp fix to make sure sections don't disappear
m_Packet.WriteBEUInt8(BitsPerEntry);
m_Packet.WriteVarInt32(static_cast<UInt32>(ChunkSectionDataArraySize));
WriteBlockSectionSeamless<&Palette477>(Blocks, Metas, BitsPerEntry);