Allow falling nodes to pass through solid "buildable_to" nodes.
authorSplizard <quentin@squeezedoranges.com>
Wed, 19 Dec 2012 21:24:54 +0000 (10:24 +1300)
committerPilzAdam <pilzadam@minetest.net>
Tue, 19 Mar 2013 15:38:56 +0000 (16:38 +0100)
builtin/falling.lua

index d3af36f2934c823225a28076ad8b3d52d85e31fd..1c09f98560fb298338f56e31e0b72c3d93eaa643 100644 (file)
@@ -57,6 +57,10 @@ minetest.register_entity("__builtin:falling_node", {
                -- Note: walkable is in the node definition, not in item groups
                if minetest.registered_nodes[bcn.name] and
                                minetest.registered_nodes[bcn.name].walkable then
+                       if minetest.registered_nodes[bcn.name].buildable_to then
+                               minetest.env:remove_node(bcp)
+                               return
+                       end
                        local np = {x=bcp.x, y=bcp.y+1, z=bcp.z}
                        -- Check what's here
                        local n2 = minetest.env:get_node(np)
@@ -80,6 +84,7 @@ minetest.register_entity("__builtin:falling_node", {
                        -- Create node and remove entity
                        minetest.env:add_node(np, {name=self.nodename})
                        self.object:remove()
+                       nodeupdate(np)
                else
                        -- Do nothing
                end
@@ -144,7 +149,8 @@ function nodeupdate_single(p)
                n_bottom = minetest.env:get_node(p_bottom)
                -- Note: walkable is in the node definition, not in item groups
                if minetest.registered_nodes[n_bottom.name] and
-                               not minetest.registered_nodes[n_bottom.name].walkable then
+                               (not minetest.registered_nodes[n_bottom.name].walkable or 
+                                       minetest.registered_nodes[n_bottom.name].buildable_to) then
                        minetest.env:remove_node(p)
                        spawn_falling_node(p, n.name)
                        nodeupdate(p)