Falling.lua: Delete falling node entities on contact with 'ignore'
authorparamat <paramat@users.noreply.github.com>
Tue, 6 Feb 2018 00:55:35 +0000 (00:55 +0000)
committerSmallJoker <mk939@ymail.com>
Sun, 3 Jun 2018 15:32:00 +0000 (17:32 +0200)
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.

builtin/game/falling.lua

index 1ac4f70817d6fa07c8b427484d2bcbbf64cc39a2..991962cc3f41864c23d37039829f8ff8ae7e1f9c 100644 (file)
@@ -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