diff options
author | paramat <paramat@users.noreply.github.com> | 2018-02-06 00:55:35 +0000 |
---|---|---|
committer | paramat <mat.gregory@virginmedia.com> | 2018-02-13 03:48:28 +0000 |
commit | 737f0b447380597ffa1e4c39beeab847e96ed6b2 (patch) | |
tree | 6c67be108ed635b72f38cce5bbebb0f0dd81d58c | |
parent | 359c8f82ceaef19563d0dba67a090e8fdc2dfb71 (diff) | |
download | minetest-737f0b447380597ffa1e4c39beeab847e96ed6b2.tar.gz minetest-737f0b447380597ffa1e4c39beeab847e96ed6b2.tar.bz2 minetest-737f0b447380597ffa1e4c39beeab847e96ed6b2.zip |
Falling.lua: Delete falling node entities on contact with 'ignore'
Prevents falling node entities entering the ignore at a world edge and
resting on unloaded nodes 16 nodes below, unreachable, undiggable and
still being processed by 'on step' because they don't revert to nodes.
-rw-r--r-- | builtin/game/falling.lua | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/builtin/game/falling.lua b/builtin/game/falling.lua index 436350fa1..974ba3959 100644 --- a/builtin/game/falling.lua +++ b/builtin/game/falling.lua @@ -60,8 +60,13 @@ core.register_entity(":__builtin:falling_node", { local pos = self.object:getpos() -- Position of bottom center point local bcp = {x = pos.x, y = pos.y - 0.7, z = pos.z} - -- Avoid bugs caused by an unloaded node below + -- 'bcn' is nil for unloaded nodes local bcn = core.get_node_or_nil(bcp) + -- Delete on contact with ignore at world edges + if bcn and bcn.name == "ignore" then + self.object:remove() + return + end local bcd = bcn and core.registered_nodes[bcn.name] if bcn and (not bcd or bcd.walkable or |