diff options
author | SmallJoker <mk939@ymail.com> | 2019-07-27 20:55:38 +0200 |
---|---|---|
committer | SmallJoker <mk939@ymail.com> | 2019-07-27 21:13:47 +0200 |
commit | 8efa1de8356630f2943e3d74e7287b5e976e8706 (patch) | |
tree | c3f541a68bd8e65a5257c6d6b32520a0bb54bcc5 | |
parent | fe6c666da26e08b726bd21f34d25558cf456bd1f (diff) | |
download | minetest-8efa1de8356630f2943e3d74e7287b5e976e8706.tar.gz minetest-8efa1de8356630f2943e3d74e7287b5e976e8706.tar.bz2 minetest-8efa1de8356630f2943e3d74e7287b5e976e8706.zip |
Check for 'action' field in ABMs & LBMs
-rw-r--r-- | builtin/game/register.lua | 2 | ||||
-rw-r--r-- | src/script/cpp_api/s_env.cpp | 8 |
2 files changed, 10 insertions, 0 deletions
diff --git a/builtin/game/register.lua b/builtin/game/register.lua index d111e5c27..51492e928 100644 --- a/builtin/game/register.lua +++ b/builtin/game/register.lua @@ -79,6 +79,7 @@ end function core.register_abm(spec) -- Add to core.registered_abms + assert(type(spec.action) == "function", "Required field 'action' of type function") core.registered_abms[#core.registered_abms + 1] = spec spec.mod_origin = core.get_current_modname() or "??" end @@ -86,6 +87,7 @@ end function core.register_lbm(spec) -- Add to core.registered_lbms check_modname_prefix(spec.name) + assert(type(spec.action) == "function", "Required field 'action' of type function") core.registered_lbms[#core.registered_lbms + 1] = spec spec.mod_origin = core.get_current_modname() or "??" end diff --git a/src/script/cpp_api/s_env.cpp b/src/script/cpp_api/s_env.cpp index f8cef98b7..ab3b5fe46 100644 --- a/src/script/cpp_api/s_env.cpp +++ b/src/script/cpp_api/s_env.cpp @@ -151,6 +151,10 @@ void ScriptApiEnv::initializeEnvironment(ServerEnvironment *env) bool simple_catch_up = true; 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, 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, "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, run_at_every_load); |