diff --git a/src/Generating/FinishGen.cpp b/src/Generating/FinishGen.cpp index aa7dd86c1..c82e5f4d4 100644 --- a/src/Generating/FinishGen.cpp +++ b/src/Generating/FinishGen.cpp @@ -1062,7 +1062,7 @@ void cFinishGenPreSimulator::GenFinish(cChunkDesc & a_ChunkDesc) { if (m_PreSimulateFallingBlocks) { - CollapseSandGravel(a_ChunkDesc.GetBlockTypes(), a_ChunkDesc.GetHeightMap()); + CollapseSandGravel(a_ChunkDesc); } if (m_PreSimulateWater) @@ -1081,10 +1081,7 @@ void cFinishGenPreSimulator::GenFinish(cChunkDesc & a_ChunkDesc) -void cFinishGenPreSimulator::CollapseSandGravel( - cChunkDef::BlockTypes & a_BlockTypes, // Block types to read and change - cChunkDef::HeightMap & a_HeightMap // Height map to update by the current data -) +void cFinishGenPreSimulator::CollapseSandGravel(cChunkDesc & a_ChunkDesc) { for (int z = 0; z < cChunkDef::Width; z++) { @@ -1094,7 +1091,7 @@ void cFinishGenPreSimulator::CollapseSandGravel( int HeightY = 0; for (int y = 0; y < cChunkDef::Height; y++) { - BLOCKTYPE Block = cChunkDef::GetBlock(a_BlockTypes, x, y, z); + BLOCKTYPE Block = a_ChunkDesc.GetBlockType(x, y, z); switch (Block) { default: @@ -1124,8 +1121,9 @@ void cFinishGenPreSimulator::CollapseSandGravel( { if (LastY < y - 1) { - cChunkDef::SetBlock(a_BlockTypes, x, LastY + 1, z, Block); - cChunkDef::SetBlock(a_BlockTypes, x, y, z, E_BLOCK_AIR); + auto BlockMeta = a_ChunkDesc.GetBlockMeta(x, y, z); + a_ChunkDesc.SetBlockTypeMeta(x, LastY + 1, z, Block, BlockMeta); + a_ChunkDesc.SetBlockTypeMeta(x, y, z, E_BLOCK_AIR, 0); } LastY++; if (LastY > HeightY) @@ -1136,7 +1134,7 @@ void cFinishGenPreSimulator::CollapseSandGravel( } } // switch (GetBlock) } // for y - cChunkDef::SetHeight(a_HeightMap, x, z, static_cast(HeightY)); + a_ChunkDesc.SetHeight(x, z, static_cast(HeightY)); } // for x } // for z } diff --git a/src/Generating/FinishGen.h b/src/Generating/FinishGen.h index 30108b6da..0138c84bc 100644 --- a/src/Generating/FinishGen.h +++ b/src/Generating/FinishGen.h @@ -393,10 +393,7 @@ protected: bool m_PreSimulateLava; /** Drops hanging sand and gravel down to the ground, recalculates heightmap */ - void CollapseSandGravel( - cChunkDef::BlockTypes & a_BlockTypes, // Block types to read and change - cChunkDef::HeightMap & a_HeightMap // Height map to update by the current data - ); + void CollapseSandGravel(cChunkDesc & a_ChunkDesc); /** For each fluid block: - if all surroundings are of the same fluid, makes it stationary; otherwise makes it flowing (excl. top)