Fix minetest.get_inventory(loc) always returning nil for "node" type loc
authorMetaDucky <metaducky AT gmail DOT com>
Sun, 26 May 2013 09:27:06 +0000 (11:27 +0200)
committerKahrl <kahrl@gmx.net>
Sat, 1 Jun 2013 10:15:11 +0000 (12:15 +0200)
src/script/lua_api/l_inventory.cpp

index 6dfb7a28c16dfcd50653d554ce86b6b0a67e1233..1404c3c8a026fcbf00ca6c57506f1cda50aeab8b 100644 (file)
@@ -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)