4 changes: 4 additions & 0 deletions src/script/lua_api/l_mapgen.h
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,10 @@ class ModApiMapgen : public ModApiBase {
// returns the requested object used during map generation
static int l_get_mapgen_object(lua_State *L);

// get_mapgen_params()
// returns the currently active map generation parameter set
static int l_get_mapgen_params(lua_State *L);

// set_mapgen_params(params)
// set mapgen parameters
static int l_set_mapgen_params(lua_State *L);
Expand Down
16 changes: 5 additions & 11 deletions src/server.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -295,17 +295,19 @@ Server::Server(
// Lock environment
JMutexAutoLock envlock(m_env_mutex);

// Create the Map and load parameters
ServerMap *servermap = new ServerMap(path_world, this, m_emerge);
m_emerge->loadMapgenParams();

// Initialize scripting
infostream<<"Server: Initializing Lua"<<std::endl;

m_script = new GameScripting(this);

std::string scriptpath = getBuiltinLuaPath() + DIR_DELIM "init.lua";

if (!m_script->loadScript(scriptpath)) {
if (!m_script->loadScript(scriptpath))
throw ModError("Failed to load and run " + scriptpath);
}


// Print 'em
infostream<<"Server: Loading mods: ";
Expand Down Expand Up @@ -339,19 +341,11 @@ Server::Server(
// Perform pending node name resolutions
m_nodedef->runNodeResolverCallbacks();

// Load the mapgen params from global settings now after any
// initial overrides have been set by the mods
m_emerge->loadMapgenParams();

// Initialize Environment
ServerMap *servermap = new ServerMap(path_world, this, m_emerge);
m_env = new ServerEnvironment(servermap, m_script, this, m_path_world);

m_clients.setEnv(m_env);

// Run some callbacks after the MG params have been set up but before activation
m_script->environment_OnMapgenInit(&m_emerge->params);

// Initialize mapgens
m_emerge->initMapgens();

Expand Down