forked from Mirrorlandia_minetest/minetest
Check for 'action' field in ABMs & LBMs
This commit is contained in:
parent
fe6c666da2
commit
8efa1de835
@ -79,6 +79,7 @@ end
|
|||||||
|
|
||||||
function core.register_abm(spec)
|
function core.register_abm(spec)
|
||||||
-- Add to core.registered_abms
|
-- Add to core.registered_abms
|
||||||
|
assert(type(spec.action) == "function", "Required field 'action' of type function")
|
||||||
core.registered_abms[#core.registered_abms + 1] = spec
|
core.registered_abms[#core.registered_abms + 1] = spec
|
||||||
spec.mod_origin = core.get_current_modname() or "??"
|
spec.mod_origin = core.get_current_modname() or "??"
|
||||||
end
|
end
|
||||||
@ -86,6 +87,7 @@ end
|
|||||||
function core.register_lbm(spec)
|
function core.register_lbm(spec)
|
||||||
-- Add to core.registered_lbms
|
-- Add to core.registered_lbms
|
||||||
check_modname_prefix(spec.name)
|
check_modname_prefix(spec.name)
|
||||||
|
assert(type(spec.action) == "function", "Required field 'action' of type function")
|
||||||
core.registered_lbms[#core.registered_lbms + 1] = spec
|
core.registered_lbms[#core.registered_lbms + 1] = spec
|
||||||
spec.mod_origin = core.get_current_modname() or "??"
|
spec.mod_origin = core.get_current_modname() or "??"
|
||||||
end
|
end
|
||||||
|
@ -151,6 +151,10 @@ void ScriptApiEnv::initializeEnvironment(ServerEnvironment *env)
|
|||||||
bool simple_catch_up = true;
|
bool simple_catch_up = true;
|
||||||
getboolfield(L, current_abm, "catch_up", simple_catch_up);
|
getboolfield(L, current_abm, "catch_up", simple_catch_up);
|
||||||
|
|
||||||
|
lua_getfield(L, current_abm, "action");
|
||||||
|
luaL_checktype(L, current_abm + 1, LUA_TFUNCTION);
|
||||||
|
lua_pop(L, 1);
|
||||||
|
|
||||||
LuaABM *abm = new LuaABM(L, id, trigger_contents, required_neighbors,
|
LuaABM *abm = new LuaABM(L, id, trigger_contents, required_neighbors,
|
||||||
trigger_interval, trigger_chance, simple_catch_up);
|
trigger_interval, trigger_chance, simple_catch_up);
|
||||||
|
|
||||||
@ -200,6 +204,10 @@ void ScriptApiEnv::initializeEnvironment(ServerEnvironment *env)
|
|||||||
bool run_at_every_load = getboolfield_default(L, current_lbm,
|
bool run_at_every_load = getboolfield_default(L, current_lbm,
|
||||||
"run_at_every_load", false);
|
"run_at_every_load", false);
|
||||||
|
|
||||||
|
lua_getfield(L, current_lbm, "action");
|
||||||
|
luaL_checktype(L, current_lbm + 1, LUA_TFUNCTION);
|
||||||
|
lua_pop(L, 1);
|
||||||
|
|
||||||
LuaLBM *lbm = new LuaLBM(L, id, trigger_contents, name,
|
LuaLBM *lbm = new LuaLBM(L, id, trigger_contents, name,
|
||||||
run_at_every_load);
|
run_at_every_load);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user