From 64627817fcca52f20948c24b60ce192b218f6ce2 Mon Sep 17 00:00:00 2001 From: MetaDucky Date: Sun, 26 May 2013 11:27:06 +0200 Subject: Fix minetest.get_inventory(loc) always returning nil for "node" type loc --- src/script/lua_api/l_inventory.cpp | 30 +++++++++++++----------------- 1 file changed, 13 insertions(+), 17 deletions(-) (limited to 'src') diff --git a/src/script/lua_api/l_inventory.cpp b/src/script/lua_api/l_inventory.cpp index 6dfb7a28c..1404c3c8a 100644 --- a/src/script/lua_api/l_inventory.cpp +++ b/src/script/lua_api/l_inventory.cpp @@ -416,9 +416,18 @@ int ModApiInventory::l_get_inventory(lua_State *L) std::string type = checkstringfield(L, 1, "type"); - if(type != "pos"){ - NO_MAP_LOCK_REQUIRED; + if(type == "node"){ + lua_getfield(L, 1, "pos"); + v3s16 pos = check_v3s16(L, -1); + loc.setNodeMeta(pos); + if(getServer(L)->getInventory(loc) != NULL) + InvRef::create(L, loc); + else + lua_pushnil(L); + return 1; + } else { + NO_MAP_LOCK_REQUIRED; if(type == "player"){ std::string name = checkstringfield(L, 1, "name"); loc.setPlayer(name); @@ -431,22 +440,9 @@ int ModApiInventory::l_get_inventory(lua_State *L) InvRef::create(L, loc); else lua_pushnil(L); - - return 1; - } - else { - if(type == "node"){ - lua_getfield(L, 1, "pos"); - v3s16 pos = check_v3s16(L, -1); - loc.setNodeMeta(pos); - } - if(getServer(L)->getInventory(loc) != NULL) - InvRef::create(L, loc); - else - lua_pushnil(L); - return 1; + return 1; + // END NO_MAP_LOCK_REQUIRED; } - } // create_detached_inventory_raw(name) -- cgit v1.2.3