diff options
author | Beha <shacknetisp@mail.com> | 2019-08-07 04:48:04 -0400 |
---|---|---|
committer | sfan5 <sfan5@live.de> | 2019-08-07 10:48:04 +0200 |
commit | 4d7f2967172c5a358811ac1f24115b281eff2431 (patch) | |
tree | 78dcbd0daac2fd9aa699db132b58fd31c077eb1d /src/script/common | |
parent | 233cb86e864affe3dee8f60503584f1eb7e36287 (diff) | |
download | minetest-4d7f2967172c5a358811ac1f24115b281eff2431.tar.gz minetest-4d7f2967172c5a358811ac1f24115b281eff2431.tar.bz2 minetest-4d7f2967172c5a358811ac1f24115b281eff2431.zip |
Do not add group values of zero to group lists. (#8751)
This fixes an issue where when the engine looked up groups (for example,
in ABM node names), NodeDefManager's m_group_to_items would contain nodes
with a group value of zero, resulting in nodes with flammable = 0 being
burned by a fire mod with a group:flammable checking ABM.
It brings consistency to the behaviour described in the api
documentation, where zero and nil groups should be the same.
Diffstat (limited to 'src/script/common')
-rw-r--r-- | src/script/common/c_content.cpp | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/src/script/common/c_content.cpp b/src/script/common/c_content.cpp index 3a9e9e049..9eba4cbf2 100644 --- a/src/script/common/c_content.cpp +++ b/src/script/common/c_content.cpp @@ -1529,13 +1529,15 @@ void read_groups(lua_State *L, int index, ItemGroupList &result) return; result.clear(); lua_pushnil(L); - if(index < 0) + if (index < 0) index -= 1; - while(lua_next(L, index) != 0){ + while (lua_next(L, index) != 0) { // key at index -2 and value at index -1 std::string name = luaL_checkstring(L, -2); int rating = luaL_checkinteger(L, -1); - result[name] = rating; + // zero rating indicates not in the group + if (rating != 0) + result[name] = rating; // removes value, keeps key for next iteration lua_pop(L, 1); } |