Rewritten block entity loading.
Block entities are now loaded based on the blocktype at the coords they specify; before loading, their type ("id" NBT tag) is checked.
The chunk now expects that all block entities given to it via cChunk::SetAllData() have their valid blocktype; asserts if they don't.
Fixes #1354.
This commit is contained in:
@@ -3484,14 +3484,16 @@ void cWorld::cChunkGeneratorCallbacks::OnChunkGenerated(cChunkDesc & a_ChunkDesc
|
||||
cChunkDef::BlockNibbles BlockMetas;
|
||||
a_ChunkDesc.CompressBlockMetas(BlockMetas);
|
||||
|
||||
m_World->QueueSetChunkData(cSetChunkDataPtr(new cSetChunkData(
|
||||
cSetChunkDataPtr SetChunkData(new cSetChunkData(
|
||||
a_ChunkDesc.GetChunkX(), a_ChunkDesc.GetChunkZ(),
|
||||
a_ChunkDesc.GetBlockTypes(), BlockMetas,
|
||||
NULL, NULL, // We don't have lighting, chunk will be lighted when needed
|
||||
&a_ChunkDesc.GetHeightMap(), &a_ChunkDesc.GetBiomeMap(),
|
||||
a_ChunkDesc.GetEntities(), a_ChunkDesc.GetBlockEntities(),
|
||||
true
|
||||
)));
|
||||
));
|
||||
SetChunkData->RemoveInvalidBlockEntities();
|
||||
m_World->QueueSetChunkData(SetChunkData);
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user