Check for 'action' field in ABMs & LBMs

This commit is contained in:
SmallJoker 2019-07-27 20:55:38 +02:00
parent fe6c666da2
commit 8efa1de835
2 changed files with 10 additions and 0 deletions

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