mirror of
https://github.com/luanti-org/luanti.git
synced 2025-06-27 16:36:03 +00:00
Add MapSettingsManager and new mapgen setting script API functions
This commit refactors the majority of the Mapgen settings system. - MapgenParams is now owned by MapSettingsManager, itself a part of ServerMap, instead of the EmergeManager. - New Script API functions added: core.get_mapgen_setting core.get_mapgen_setting_noiseparams, core.set_mapgen_setting, and core.set_mapgen_setting_noiseparams. - minetest.get/set_mapgen_params are deprecated by the above new functions. - It is now possible to view and modify any arbitrary mapgen setting from a mod, rather than the base MapgenParams structure. - MapgenSpecificParams has been removed.
This commit is contained in:
parent
92705306bf
commit
3c63c3044d
31 changed files with 890 additions and 315 deletions
|
@ -156,37 +156,19 @@ EmergeManager::~EmergeManager()
|
|||
}
|
||||
|
||||
|
||||
void EmergeManager::loadMapgenParams()
|
||||
{
|
||||
params.load(*g_settings);
|
||||
}
|
||||
|
||||
|
||||
void EmergeManager::initMapgens()
|
||||
bool EmergeManager::initMapgens(MapgenParams *params)
|
||||
{
|
||||
if (m_mapgens.size())
|
||||
return;
|
||||
return false;
|
||||
|
||||
MapgenType mgtype = Mapgen::getMapgenType(params.mg_name);
|
||||
if (mgtype == MAPGEN_INVALID) {
|
||||
const char *default_mapgen_name = Mapgen::getMapgenName(MAPGEN_DEFAULT);
|
||||
errorstream << "EmergeManager: mapgen " << params.mg_name <<
|
||||
" not registered; falling back to " <<
|
||||
default_mapgen_name << std::endl;
|
||||
|
||||
params.mg_name = default_mapgen_name;
|
||||
mgtype = MAPGEN_DEFAULT;
|
||||
}
|
||||
|
||||
if (!params.sparams) {
|
||||
params.sparams = Mapgen::createMapgenParams(mgtype);
|
||||
params.sparams->readParams(g_settings);
|
||||
}
|
||||
this->mgparams = params;
|
||||
|
||||
for (u32 i = 0; i != m_threads.size(); i++) {
|
||||
Mapgen *mg = Mapgen::createMapgen(mgtype, i, ¶ms, this);
|
||||
Mapgen *mg = Mapgen::createMapgen(params->mgtype, i, params, this);
|
||||
m_mapgens.push_back(mg);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
|
@ -288,12 +270,14 @@ bool EmergeManager::enqueueBlockEmergeEx(
|
|||
// Mapgen-related helper functions
|
||||
//
|
||||
|
||||
|
||||
// TODO(hmmmm): Move this to ServerMap
|
||||
v3s16 EmergeManager::getContainingChunk(v3s16 blockpos)
|
||||
{
|
||||
return getContainingChunk(blockpos, params.chunksize);
|
||||
return getContainingChunk(blockpos, mgparams->chunksize);
|
||||
}
|
||||
|
||||
|
||||
// TODO(hmmmm): Move this to ServerMap
|
||||
v3s16 EmergeManager::getContainingChunk(v3s16 blockpos, s16 chunksize)
|
||||
{
|
||||
s16 coff = -chunksize / 2;
|
||||
|
@ -327,7 +311,7 @@ int EmergeManager::getGroundLevelAtPoint(v2s16 p)
|
|||
return m_mapgens[0]->getGroundLevelAtPoint(p);
|
||||
}
|
||||
|
||||
|
||||
// TODO(hmmmm): Move this to ServerMap
|
||||
bool EmergeManager::isBlockUnderground(v3s16 blockpos)
|
||||
{
|
||||
#if 0
|
||||
|
@ -338,7 +322,7 @@ bool EmergeManager::isBlockUnderground(v3s16 blockpos)
|
|||
#endif
|
||||
|
||||
// Use a simple heuristic; the above method is wildly inaccurate anyway.
|
||||
return blockpos.Y * (MAP_BLOCKSIZE + 1) <= params.water_level;
|
||||
return blockpos.Y * (MAP_BLOCKSIZE + 1) <= mgparams->water_level;
|
||||
}
|
||||
|
||||
bool EmergeManager::pushBlockEmergeData(
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue