From 68b0b663514d1a5dcf79cfbdeea544b5d69ed1ed Mon Sep 17 00:00:00 2001 From: untodesu Date: Sun, 16 Mar 2025 21:29:35 +0500 Subject: Attempt to fix ghosted chunks --- game/server/receive.cc | 34 ++++++++++------------------------ 1 file changed, 10 insertions(+), 24 deletions(-) (limited to 'game/server') diff --git a/game/server/receive.cc b/game/server/receive.cc index d2862e2..780ae53 100644 --- a/game/server/receive.cc +++ b/game/server/receive.cc @@ -85,41 +85,27 @@ static void on_set_voxel_packet(const protocol::SetVoxel &packet) auto index = coord::to_index(lpos); if(worldgen::is_generating(session->dimension, cpos)) { - // The chunk is currently being - // generated, so we must ignore any - // requests from players to build there + // The chunk is currently being generated; + // ignore all requests from players to build there return; } auto chunk = session->dimension->find_chunk(cpos); - auto created = false; if(chunk == nullptr) { - chunk = universe::load_chunk(session->dimension, cpos); - created = true; + // The chunk is not loaded, so we must + // ignore any requests from players to build there + return; } - if(chunk == nullptr) { - chunk = session->dimension->create_chunk(cpos); - created = true; - } - chunk->set_voxel(packet.voxel, index); - if(created) { - session->dimension->chunks.emplace_or_replace(chunk->get_entity()); + session->dimension->chunks.emplace_or_replace(chunk->get_entity()); - protocol::ChunkVoxels response; - response.voxels = chunk->get_voxels(); - response.chunk = cpos; - sessions::broadcast(session->dimension, protocol::encode(response)); - } - else { - protocol::SetVoxel response; - response.vpos = packet.vpos; - response.voxel = packet.voxel; - sessions::broadcast(session->dimension, protocol::encode(response), session->peer); - } + protocol::SetVoxel response; + response.vpos = packet.vpos; + response.voxel = packet.voxel; + sessions::broadcast(session->dimension, protocol::encode(response), session->peer); return; } -- cgit