Fix a rare piston pushing bug and make piston updating faster.

This commit is contained in:
Anthony Zhang 2012-11-27 19:34:54 -05:00
parent 618fd31f43
commit aaddd9e74d
3 changed files with 7 additions and 10 deletions

@ -134,7 +134,7 @@ local update = function(pos, node)
local timer = minetest.env:get_node_timer(pos) local timer = minetest.env:get_node_timer(pos)
timer:stop() timer:stop()
timer:set(0.1, 0) timer:start(0)
end end
mesecon:register_on_signal_on(update) --push action mesecon:register_on_signal_on(update) --push action
mesecon:register_on_signal_off(update) --pull action mesecon:register_on_signal_off(update) --pull action
@ -150,14 +150,13 @@ function mesecon:piston_push(pos)
while true do while true do
local checknode = minetest.env:get_node(checkpos) local checknode = minetest.env:get_node(checkpos)
--check for collision with stopper --check for collision with stopper or bounds
if mesecon:is_mvps_stopper(checknode.name) then if mesecon:is_mvps_stopper(checknode.name) or checknode.name == "ignore" then
return return
end end
--check for column end --check for column end
if checknode.name == "air" if checknode.name == "air"
or checknode.name == "ignore"
or not(minetest.registered_nodes[checknode.name].liquidtype == "none") then or not(minetest.registered_nodes[checknode.name].liquidtype == "none") then
break break
end end

@ -133,14 +133,13 @@ mesecon:register_on_signal_on(function(pos, node)
while true do while true do
local checknode = minetest.env:get_node(checkpos) local checknode = minetest.env:get_node(checkpos)
--check for collision with stopper --check for collision with stopper or bounds
if mesecon:is_mvps_stopper(checknode.name) then if mesecon:is_mvps_stopper(checknode.name) or checknode.name == "ignore" then
return return
end end
--check for column end --check for column end
if checknode.name == "air" if checknode.name == "air"
or checknode.name == "ignore"
or not(minetest.registered_nodes[checknode.name].liquidtype == "none") then or not(minetest.registered_nodes[checknode.name].liquidtype == "none") then
break break
end end

@ -121,14 +121,13 @@ mesecon:register_on_signal_on(function(pos, node)
while true do while true do
local checknode = minetest.env:get_node(checkpos) local checknode = minetest.env:get_node(checkpos)
--check for collision with stopper --check for collision with stopper or bounds
if mesecon:is_mvps_stopper(checknode.name) then if mesecon:is_mvps_stopper(checknode.name) or checknode.name == "ignore" then
return return
end end
--check for column end --check for column end
if checknode.name == "air" if checknode.name == "air"
or checknode.name == "ignore"
or not(minetest.registered_nodes[checknode.name].liquidtype == "none") then or not(minetest.registered_nodes[checknode.name].liquidtype == "none") then
break break
end end