summaryrefslogtreecommitdiff
path: root/src/server.cpp
diff options
context:
space:
mode:
authorkwolekr <kwolekr@minetest.net>2016-06-24 18:15:56 -0400
committerkwolekr <kwolekr@minetest.net>2016-07-03 15:38:36 -0400
commit3c63c3044d5e4ca36c2649c530f31622581d90fd (patch)
treeb7924100f14f5626c11d534e2ad3602e269ac1df /src/server.cpp
parent92705306bfb4994107a43514f29997cea15d48dc (diff)
downloadminetest-3c63c3044d5e4ca36c2649c530f31622581d90fd.tar.gz
minetest-3c63c3044d5e4ca36c2649c530f31622581d90fd.tar.bz2
minetest-3c63c3044d5e4ca36c2649c530f31622581d90fd.zip
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.
Diffstat (limited to 'src/server.cpp')
-rw-r--r--src/server.cpp15
1 files changed, 6 insertions, 9 deletions
diff --git a/src/server.cpp b/src/server.cpp
index f7f698d50..97a53f189 100644
--- a/src/server.cpp
+++ b/src/server.cpp
@@ -266,9 +266,6 @@ Server::Server(
//lock environment
MutexAutoLock envlock(m_env_mutex);
- // Load mapgen params from Settings
- m_emerge->loadMapgenParams();
-
// Create the Map (loads map_meta.txt, overriding configured mapgen params)
ServerMap *servermap = new ServerMap(path_world, this, m_emerge);
@@ -331,8 +328,11 @@ Server::Server(
m_clients.setEnv(m_env);
+ if (!servermap->settings_mgr.makeMapgenParams())
+ FATAL_ERROR("Couldn't create any mapgen type");
+
// Initialize mapgens
- m_emerge->initMapgens();
+ m_emerge->initMapgens(servermap->getMapgenParams());
m_enable_rollback_recording = g_settings->getBool("enable_rollback_recording");
if (m_enable_rollback_recording) {
@@ -402,11 +402,8 @@ Server::~Server()
m_emerge->stopThreads();
// Delete things in the reverse order of creation
- delete m_env;
-
- // N.B. the EmergeManager should be deleted after the Environment since Map
- // depends on EmergeManager to write its current params to the map meta
delete m_emerge;
+ delete m_env;
delete m_rollback;
delete m_banmanager;
delete m_event;
@@ -655,7 +652,7 @@ void Server::AsyncRunStep(bool initial_step)
m_env->getGameTime(),
m_lag,
m_gamespec.id,
- m_emerge->params.mg_name,
+ Mapgen::getMapgenName(m_emerge->mgparams->mgtype),
m_mods);
counter = 0.01;
}