From ae92c51155ada2816fc2fa9bbb13a4b27da68a49 Mon Sep 17 00:00:00 2001 From: ancientmarinerdev Date: Tue, 14 Feb 2023 19:03:48 +0000 Subject: [PATCH] Adding error handling to the mob step function --- mods/ENTITIES/mcl_mobs/api.lua | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/mods/ENTITIES/mcl_mobs/api.lua b/mods/ENTITIES/mcl_mobs/api.lua index 67b9149cd..76557d467 100644 --- a/mods/ENTITIES/mcl_mobs/api.lua +++ b/mods/ENTITIES/mcl_mobs/api.lua @@ -357,8 +357,7 @@ function mob_class:outside_limits() end end --- main mob function -function mob_class:on_step(dtime) +local function on_step_work (self, dtime) local pos = self.object:get_pos() if not pos then return end @@ -446,6 +445,31 @@ function mob_class:on_step(dtime) end end +local on_step_error_handler = function () + --lua_Debug ar; + --local L = lua_getfield(L, LUA_GLOBALSINDEX, "f"); + --lua_getinfo(L, ">S", &ar); + local info = debug.getinfo(1, "SnlufL") + + minetest.log("In the error handler") + minetest.log("debug.traceback: ".. tostring(debug.traceback())) + minetest.log("debug.short_src: ".. dump(debug.source)) + minetest.log("debug.short_src: ".. dump(info)) + --debug.traceback +end +-- main mob function +function mob_class:on_step(dtime) + local status, retVal = xpcall(on_step_work, on_step_error_handler, self, dtime) + if status then + --minetest.log("success. retVal: ".. tostring(retVal)) + return retVal + else + minetest.log("failed. error: ".. tostring(retVal)) + minetest.log("failed. status: ".. tostring(status)) + end + --return on_step_work(self, dtime) +end + local timer = 0 minetest.register_globalstep(function(dtime) timer = timer + dtime