diff --git a/mods/ENTITIES/mcl_falling_nodes/init.lua b/mods/ENTITIES/mcl_falling_nodes/init.lua index d3d22f89d..60f028bc0 100644 --- a/mods/ENTITIES/mcl_falling_nodes/init.lua +++ b/mods/ENTITIES/mcl_falling_nodes/init.lua @@ -71,9 +71,20 @@ minetest.register_entity(":__builtin:falling_node", { end, get_staticdata = function(self) + local meta = self.meta + -- Workaround: Save inventory seperately from metadata. + -- Because Minetest crashes when a node with inventory gets deactivated + -- (GitHub issue #7020). + -- FIXME: Remove the _inv workaround when it is no longer needed + local inv + if meta then + inv = meta.inv + meta.inventory = nil + end local ds = { node = self.node, meta = self.meta, + _inv = inv, _startpos = self._startpos, _hit_players = self._hit_players, } @@ -88,7 +99,9 @@ minetest.register_entity(":__builtin:falling_node", { self._startpos = ds._startpos self._hit_players = ds._hit_players if ds.node then - self:set_node(ds.node, ds.meta) + local meta = ds.meta + meta.inventory = ds._inv + self:set_node(ds.node, meta) else self:set_node(ds) end