diff --git a/src/client/mesh_generator_thread.cpp b/src/client/mesh_generator_thread.cpp index 4f7dd7fb50..bfb739a4c6 100644 --- a/src/client/mesh_generator_thread.cpp +++ b/src/client/mesh_generator_thread.cpp @@ -112,6 +112,18 @@ bool MeshUpdateQueue::addBlock(Map *map, v3s16 p, bool ack_block_to_server, } } + /* + Air blocks won't suddenly become visible due to a neighbor update, so + skip those. + Note: this can be extended with more precise checks in the future + */ + if (from_neighbor && mesh_grid.cell_size == 1 && main_block->isAir()) { + assert(!ack_block_to_server); + m_urgents.erase(mesh_position); + g_profiler->add("MeshUpdateQueue: updates skipped", 1); + return true; + } + /* Add the block */