void ScriptApiEnv::environment_OnMapgenInit(MapgenParams *mgparams) { SCRIPTAPI_PRECHECKHEADER // Get core.registered_on_mapgen_inits lua_getglobal(L, "core"); 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, (u32)-1); lua_pushstring(L, flagstr.c_str()); lua_setfield(L, -2, "flags"); script_run_callbacks(L, 1, RUN_CALLBACKS_MODE_FIRST); }
int ModApiMapgen::l_get_mapgen_params(lua_State *L) { MapgenParams *params = &getServer(L)->getEmergeManager()->params; lua_newtable(L); lua_pushstring(L, params->mg_name.c_str()); lua_setfield(L, -2, "mgname"); lua_pushinteger(L, params->seed); lua_setfield(L, -2, "seed"); lua_pushinteger(L, params->water_level); lua_setfield(L, -2, "water_level"); lua_pushinteger(L, params->liquid_pressure); lua_setfield(L, -2, "liquid_pressure"); lua_pushinteger(L, params->chunksize); lua_setfield(L, -2, "chunksize"); std::string flagstr = writeFlagString(params->flags, flagdesc_mapgen, (u32)-1); lua_pushstring(L, flagstr.c_str()); lua_setfield(L, -2, "flags"); return 1; }
bool Settings::setFlagStr(const std::string &name, u32 flags, const FlagDesc *flagdesc, u32 flagmask) { return set(name, writeFlagString(flags, flagdesc, flagmask)); }
void push_flags_string(lua_State *L, FlagDesc *flagdesc, u32 flags, u32 flagmask) { std::string flagstring = writeFlagString(flags, flagdesc, flagmask); lua_pushlstring(L, flagstring.c_str(), flagstring.size()); }