Allow falling nodes to pass through solid "buildable_to" nodes.

This commit is contained in:
Splizard 2012-12-20 10:24:54 +13:00 committed by PilzAdam
parent 450e7ef0c5
commit 9b5bb5c755

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