1
0
Fork 0
mirror of https://github.com/luanti-org/luanti.git synced 2025-06-27 16:36:03 +00:00

Add Lua on_mapgen_init callback, and minetest.set_mapgen_params API

This commit is contained in:
kwolekr 2013-06-27 17:06:52 -04:00
parent 18882a4d26
commit 2e292b67a0
18 changed files with 163 additions and 14 deletions

View file

@ -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