From e34a973f647bc6b7814ad1f3e837689f8478b84a Mon Sep 17 00:00:00 2001 From: untodesu Date: Sat, 22 Mar 2025 15:08:17 +0500 Subject: A bunch of pre-release fixes - Updated localization for protocol messages - Added item registry check into server-side - Slightly improved how features are stored --- game/server/worldgen.cc | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'game/server/worldgen.cc') diff --git a/game/server/worldgen.cc b/game/server/worldgen.cc index 83fddbb..4fc37c7 100644 --- a/game/server/worldgen.cc +++ b/game/server/worldgen.cc @@ -1,13 +1,19 @@ #include "server/pch.hh" #include "server/worldgen.hh" +#include "core/config.hh" + #include "shared/chunk.hh" #include "shared/dimension.hh" #include "shared/protocol.hh" #include "shared/threading.hh" +#include "server/globals.hh" +#include "server/inhabited.hh" #include "server/sessions.hh" +static ConfigBoolean aggressive_caching(false); + static emhash8::HashMap>> active_tasks; class WorldgenTask final : public Task { @@ -60,6 +66,14 @@ void WorldgenTask::finalize(void) auto chunk = m_dimension->create_chunk(m_cpos); chunk->set_voxels(m_voxels); + if(aggressive_caching.get_value()) { + // Marking the chunk with InhabitedComponent makes + // it so that it is saved regardles of whether it was + // modified by players or not. This isn't particularly + // good for server-side disk usage but it might improve performance + m_dimension->chunks.emplace(chunk->get_entity()); + } + protocol::ChunkVoxels response; response.voxels = m_voxels; response.chunk = m_cpos; @@ -84,6 +98,11 @@ void WorldgenTask::finalize(void) } } +void worldgen::init(void) +{ + globals::server_config.add_value("worldgen.aggressive_caching", aggressive_caching); +} + bool worldgen::is_generating(Dimension *dimension, const chunk_pos &cpos) { auto dim_tasks = active_tasks.find(dimension); -- cgit