Fix wrong meta key in item meta on ItemStack construction
authorrubenwardy <rubenwardy@gmail.com>
Sun, 19 Feb 2017 20:57:46 +0000 (20:57 +0000)
committerAuke Kok <sofar+github@foo-projects.org>
Wed, 22 Feb 2017 18:14:12 +0000 (10:14 -0800)
src/script/common/c_content.cpp

index 399aa88d0e806974bf0ee6b7ee3bcf2d31c35ea8..a963856b7d61446d20ee4bac22988db3252d3749 100644 (file)
@@ -827,29 +827,13 @@ ItemStack read_item(lua_State* L, int index,Server* srv)
 
                ItemStack istack(name, count, wear, idef);
 
-               lua_getfield(L, index, "metadata");
-
-               // Support old metadata format by checking type
-               int fieldstable = lua_gettop(L);
-               if (lua_istable(L, fieldstable)) {
-                       lua_pushnil(L);
-                       while (lua_next(L, fieldstable) != 0) {
-                               // key at index -2 and value at index -1
-                               std::string key = lua_tostring(L, -2);
-                               size_t value_len;
-                               const char *value_cs = lua_tolstring(L, -1, &value_len);
-                               std::string value(value_cs, value_len);
-                               istack.metadata.setString(name, value);
-                               lua_pop(L, 1); // removes value, keeps key for next iteration
-                       }
-               } else {
-                       // BACKWARDS COMPATIBLITY
-                       std::string value = getstringfield_default(L, index, "metadata", "");
-                       istack.metadata.setString("", value);
-               }
+               // BACKWARDS COMPATIBLITY
+               std::string value = getstringfield_default(L, index, "metadata", "");
+               istack.metadata.setString("", value);
 
+               // Get meta
                lua_getfield(L, index, "meta");
-               fieldstable = lua_gettop(L);
+               int fieldstable = lua_gettop(L);
                if (lua_istable(L, fieldstable)) {
                        lua_pushnil(L);
                        while (lua_next(L, fieldstable) != 0) {
@@ -858,7 +842,7 @@ ItemStack read_item(lua_State* L, int index,Server* srv)
                                size_t value_len;
                                const char *value_cs = lua_tolstring(L, -1, &value_len);
                                std::string value(value_cs, value_len);
-                               istack.metadata.setString(name, value);
+                               istack.metadata.setString(key, value);
                                lua_pop(L, 1); // removes value, keeps key for next iteration
                        }
                }