summaryrefslogtreecommitdiff
path: root/src/script
diff options
context:
space:
mode:
authorBeha <shacknetisp@mail.com>2019-08-07 04:48:04 -0400
committersfan5 <sfan5@live.de>2019-08-07 10:48:04 +0200
commit4d7f2967172c5a358811ac1f24115b281eff2431 (patch)
tree78dcbd0daac2fd9aa699db132b58fd31c077eb1d /src/script
parent233cb86e864affe3dee8f60503584f1eb7e36287 (diff)
downloadminetest-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')
-rw-r--r--src/script/common/c_content.cpp8
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);
}