mirror of
https://github.com/luanti-org/luanti.git
synced 2025-10-13 16:45:20 +02:00
Add Lua on_mapgen_init callback, and minetest.set_mapgen_params API
This commit is contained in:
@@ -21,6 +21,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
#include "common/c_converter.h"
|
||||
#include "log.h"
|
||||
#include "environment.h"
|
||||
#include "mapgen.h"
|
||||
#include "lua_api/l_env.h"
|
||||
|
||||
extern "C" {
|
||||
@@ -55,6 +56,33 @@ void ScriptApiEnv::environment_Step(float dtime)
|
||||
runCallbacks(1, RUN_CALLBACKS_MODE_FIRST);
|
||||
}
|
||||
|
||||
void ScriptApiEnv::environment_OnMapgenInit(MapgenParams *mgparams)
|
||||
{
|
||||
SCRIPTAPI_PRECHECKHEADER
|
||||
|
||||
// Get minetest.registered_on_mapgen_inits
|
||||
lua_getglobal(L, "minetest");
|
||||
lua_getfield(L, -1, "registered_on_mapgen_inits");
|
||||
|
||||
// Call callbacks
|
||||
lua_newtable(L);
|
||||
|
||||
lua_pushstring(L, mgparams->mg_name.c_str());
|
||||
lua_setfield(L, -2, "mgname");
|
||||
|
||||
lua_pushinteger(L, mgparams->seed);
|
||||
lua_setfield(L, -2, "seed");
|
||||
|
||||
lua_pushinteger(L, mgparams->water_level);
|
||||
lua_setfield(L, -2, "water_level");
|
||||
|
||||
std::string flagstr = writeFlagString(mgparams->flags, flagdesc_mapgen);
|
||||
lua_pushstring(L, flagstr.c_str());
|
||||
lua_setfield(L, -2, "flags");
|
||||
|
||||
runCallbacks(1, RUN_CALLBACKS_MODE_FIRST);
|
||||
}
|
||||
|
||||
void ScriptApiEnv::initializeEnvironment(ServerEnvironment *env)
|
||||
{
|
||||
SCRIPTAPI_PRECHECKHEADER
|
||||
|
@@ -24,6 +24,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
#include "irr_v3d.h"
|
||||
|
||||
class ServerEnvironment;
|
||||
struct MapgenParams;
|
||||
|
||||
class ScriptApiEnv
|
||||
: virtual public ScriptApiBase
|
||||
@@ -33,6 +34,8 @@ public:
|
||||
void environment_Step(float dtime);
|
||||
// After generating a piece of map
|
||||
void environment_OnGenerated(v3s16 minp, v3s16 maxp,u32 blockseed);
|
||||
// After initializing mapgens
|
||||
void environment_OnMapgenInit(MapgenParams *mgparams);
|
||||
|
||||
void initializeEnvironment(ServerEnvironment *env);
|
||||
};
|
||||
|
Reference in New Issue
Block a user