diff --git a/src/map.cpp b/src/map.cpp index a7e8d2b5fd..03513e4f5a 100644 --- a/src/map.cpp +++ b/src/map.cpp @@ -775,12 +775,10 @@ void MMVManip::initialEmerge(v3s16 p_min, v3s16 p_max, bool load_if_inexistent) (p_min*MAP_BLOCKSIZE, (p_max+1)*MAP_BLOCKSIZE-v3s16(1,1,1)); u32 size_MB = block_area_nodes.getVolume() * sizeof(MapNode) / 1000000U; - if(size_MB >= 1) - { - infostream<<"initialEmerge: area: "; + if (size_MB >= 4) { + infostream << "initialEmerge: area: "; block_area_nodes.print(infostream); - infostream<<" ("< had_blocks; diff --git a/src/map_settings_manager.cpp b/src/map_settings_manager.cpp index 9325bf73d0..2f2221f9b8 100644 --- a/src/map_settings_manager.cpp +++ b/src/map_settings_manager.cpp @@ -125,10 +125,20 @@ MapgenParams *MapSettingsManager::makeMapgenParams() if (mapgen_params) return mapgen_params; + MapgenParams *params = makeMapgenParamsCopy(); + if (!params) + return nullptr; + mapgen_params = params; + return params; +} + +MapgenParams *MapSettingsManager::makeMapgenParamsCopy() const +{ + // Note: can't return mapgen_params here, because we want a copy. + assert(m_map_settings); assert(m_defaults); - // Now, get the mapgen type so we can create the appropriate MapgenParams std::string mg_name; MapgenType mgtype = getMapSetting("mg_name", &mg_name) ? Mapgen::getMapgenType(mg_name) : MAPGEN_DEFAULT; @@ -151,8 +161,5 @@ MapgenParams *MapSettingsManager::makeMapgenParams() params->MapgenParams::readParams(m_map_settings.get()); params->readParams(m_map_settings.get()); - // Hold onto our params - mapgen_params = params; - return params; } diff --git a/src/map_settings_manager.h b/src/map_settings_manager.h index 019e1dafe5..26942359eb 100644 --- a/src/map_settings_manager.h +++ b/src/map_settings_manager.h @@ -52,7 +52,11 @@ public: bool loadMapMeta(); bool saveMapMeta(); + + /// @brief Finalizes and creates the mapgen params MapgenParams *makeMapgenParams(); + /// @brief Creates a copy of the mapgen params without making the manager immutable + MapgenParams *makeMapgenParamsCopy() const; private: std::string m_map_meta_path; diff --git a/src/mapgen/mapgen.cpp b/src/mapgen/mapgen.cpp index e8c60c0de0..05d8f314ac 100644 --- a/src/mapgen/mapgen.cpp +++ b/src/mapgen/mapgen.cpp @@ -1101,14 +1101,8 @@ void MapgenParams::writeParams(Settings *settings) const s32 MapgenParams::getSpawnRangeMax() { - if (!m_mapgen_edges_calculated) { - std::pair edges = get_mapgen_edges(mapgen_limit, chunksize); - mapgen_edge_min = edges.first; - mapgen_edge_max = edges.second; - m_mapgen_edges_calculated = true; - } - - return MYMIN(-mapgen_edge_min, mapgen_edge_max); + auto [emin, emax] = get_mapgen_edges(mapgen_limit, chunksize); + return std::min(-emin, emax); } diff --git a/src/mapgen/mapgen.h b/src/mapgen/mapgen.h index 17b2431432..22cd40a2c5 100644 --- a/src/mapgen/mapgen.h +++ b/src/mapgen/mapgen.h @@ -121,18 +121,12 @@ struct MapgenParams { BiomeParams *bparams = nullptr; - s16 mapgen_edge_min = -MAX_MAP_GENERATION_LIMIT; - s16 mapgen_edge_max = MAX_MAP_GENERATION_LIMIT; - virtual void readParams(const Settings *settings); virtual void writeParams(Settings *settings) const; // Default settings for g_settings such as flags virtual void setDefaultSettings(Settings *settings) {}; s32 getSpawnRangeMax(); - -private: - bool m_mapgen_edges_calculated = false; };