Add more informative error messages for inventory and item method errors
authorShadowNinja <shadowninja@minetest.net>
Sat, 15 Mar 2014 21:20:52 +0000 (17:20 -0400)
committerShadowNinja <shadowninja@minetest.net>
Sat, 15 Mar 2014 21:20:52 +0000 (17:20 -0400)
src/script/cpp_api/s_inventory.cpp
src/script/cpp_api/s_item.cpp

index 835c0818fe76eae9811e2b437e60a183e48a68a9..dd7e2651093b7da134cfad388a09b02d653f87ac 100644 (file)
@@ -54,7 +54,7 @@ int ScriptApiDetached::detached_inventory_AllowMove(
        if(lua_pcall(L, 7, 1, errorhandler))
                scriptError();
        if(!lua_isnumber(L, -1))
-               throw LuaError("allow_move should return a number");
+               throw LuaError("allow_move should return a number. name=" + name);
        int ret = luaL_checkinteger(L, -1);
        lua_pop(L, 2); // Pop integer and error handler
        return ret;
@@ -86,7 +86,7 @@ int ScriptApiDetached::detached_inventory_AllowPut(
        if(lua_pcall(L, 5, 1, errorhandler))
                scriptError();
        if(!lua_isnumber(L, -1))
-               throw LuaError("allow_put should return a number");
+               throw LuaError("allow_put should return a number. name=" + name);
        int ret = luaL_checkinteger(L, -1);
        lua_pop(L, 2); // Pop integer and error handler
        return ret;
@@ -118,7 +118,7 @@ int ScriptApiDetached::detached_inventory_AllowTake(
        if(lua_pcall(L, 5, 1, errorhandler))
                scriptError();
        if(!lua_isnumber(L, -1))
-               throw LuaError("allow_take should return a number");
+               throw LuaError("allow_take should return a number. name=" + name);
        int ret = luaL_checkinteger(L, -1);
        lua_pop(L, 2); // Pop integer and error handler
        return ret;
index 49729e57baebf087d17c4b818677e636e20b9461..41413d61cbdb4e6b864d74ee6aecfd3eb98d105a 100644 (file)
@@ -47,8 +47,13 @@ bool ScriptApiItem::item_OnDrop(ItemStack &item,
        pushFloatPos(L, pos);
        if(lua_pcall(L, 3, 1, errorhandler))
                scriptError();
-       if(!lua_isnil(L, -1))
-               item = read_item(L,-1, getServer());
+       if(!lua_isnil(L, -1)) {
+               try {
+                       item = read_item(L,-1, getServer());
+               } catch (LuaError &e) {
+                       throw LuaError(std::string(e.what()) + ". item=" + item.name);
+               }
+       }
        lua_pop(L, 2);  // Pop item and error handler
        return true;
 }
@@ -71,8 +76,13 @@ bool ScriptApiItem::item_OnPlace(ItemStack &item,
        pushPointedThing(pointed);
        if(lua_pcall(L, 3, 1, errorhandler))
                scriptError();
-       if(!lua_isnil(L, -1))
-               item = read_item(L,-1, getServer());
+       if(!lua_isnil(L, -1)) {
+               try {
+                       item = read_item(L,-1, getServer());
+               } catch (LuaError &e) {
+                       throw LuaError(std::string(e.what()) + ". item=" + item.name);
+               }
+       }
        lua_pop(L, 2);  // Pop item and error handler
        return true;
 }
@@ -95,8 +105,13 @@ bool ScriptApiItem::item_OnUse(ItemStack &item,
        pushPointedThing(pointed);
        if(lua_pcall(L, 3, 1, errorhandler))
                scriptError();
-       if(!lua_isnil(L, -1))
-               item = read_item(L,-1, getServer());
+       if(!lua_isnil(L, -1)) {
+               try {
+                       item = read_item(L,-1, getServer());
+               } catch (LuaError &e) {
+                       throw LuaError(std::string(e.what()) + ". item=" + item.name);
+               }
+       }
        lua_pop(L, 2);  // Pop item and error handler
        return true;
 }
@@ -123,8 +138,13 @@ bool ScriptApiItem::item_OnCraft(ItemStack &item, ServerActiveObject *user,
        InvRef::create(L, craft_inv);
        if(lua_pcall(L, 4, 1, errorhandler))
                scriptError();
-       if(!lua_isnil(L, -1))
-               item = read_item(L,-1, getServer());
+       if(!lua_isnil(L, -1)) {
+               try {
+                       item = read_item(L,-1, getServer());
+               } catch (LuaError &e) {
+                       throw LuaError(std::string(e.what()) + ". item=" + item.name);
+               }
+       }
        lua_pop(L, 2);  // Pop item and error handler
        return true;
 }
@@ -151,8 +171,13 @@ bool ScriptApiItem::item_CraftPredict(ItemStack &item, ServerActiveObject *user,
        InvRef::create(L, craft_inv);
        if(lua_pcall(L, 4, 1, errorhandler))
                scriptError();
-       if(!lua_isnil(L, -1))
-               item = read_item(L,-1, getServer());
+       if(!lua_isnil(L, -1)) {
+               try {
+                       item = read_item(L,-1, getServer());
+               } catch (LuaError &e) {
+                       throw LuaError(std::string(e.what()) + ". item=" + item.name);
+               }
+       }
        lua_pop(L, 2);  // Pop item and error handler
        return true;
 }