Skip to content
Snippets Groups Projects
Commit 97f0bb03 authored by PilzAdam's avatar PilzAdam
Browse files

Only enqueue falling nodes if they really want to fall

parent 1586cdac
No related branches found
No related tags found
No related merge requests found
......@@ -142,7 +142,7 @@ end
-- Some common functions
--
function nodeupdate_single(p)
function nodeupdate_single(p, delay)
n = minetest.env:get_node(p)
if minetest.get_node_group(n.name, "falling_node") ~= 0 then
p_bottom = {x=p.x, y=p.y-1, z=p.z}
......@@ -151,9 +151,13 @@ function nodeupdate_single(p)
if minetest.registered_nodes[n_bottom.name] and
(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)
if delay then
minetest.after(0.1, nodeupdate_single, {x=p.x, y=p.y, z=p.z}, false)
else
minetest.env:remove_node(p)
spawn_falling_node(p, n.name)
nodeupdate(p)
end
end
end
......@@ -170,14 +174,11 @@ function nodeupdate(p)
p.x = math.floor(p.x+0.5)
p.y = math.floor(p.y+0.5)
p.z = math.floor(p.z+0.5)
nodeupdate_single(p)
for x = -1,1 do
for y = -1,1 do
for z = -1,1 do
if not (x==0 and y==0 and z==0) then
minetest.after(0.1, nodeupdate_single, {x=p.x+x, y=p.y+y, z=p.z+z})
end
nodeupdate_single({x=p.x+x, y=p.y+y, z=p.z+z}, not (x==0 and y==0 and z==0))
end
end
end
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment