summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeija <norrepli@gmail.com>2012-12-27 19:14:54 +0100
committerJeija <norrepli@gmail.com>2012-12-27 19:14:54 +0100
commit2a8bd68c41663c023d7d9c4baf06e65f16a8fd72 (patch)
treef458d21ebe968baa13f9ed81bca7666973df14b7
parentcdd9a93da9c8ed5e89993bc225647dbce71f96f4 (diff)
downloadmesecons-2a8bd68c41663c023d7d9c4baf06e65f16a8fd72.tar
mesecons-2a8bd68c41663c023d7d9c4baf06e65f16a8fd72.tar.gz
mesecons-2a8bd68c41663c023d7d9c4baf06e65f16a8fd72.tar.bz2
mesecons-2a8bd68c41663c023d7d9c4baf06e65f16a8fd72.tar.xz
mesecons-2a8bd68c41663c023d7d9c4baf06e65f16a8fd72.zip
Fix very rare piston bug (needs testing)
-rw-r--r--mesecons_pistons/init.lua27
1 files changed, 16 insertions, 11 deletions
diff --git a/mesecons_pistons/init.lua b/mesecons_pistons/init.lua
index ab04026..576c03a 100644
--- a/mesecons_pistons/init.lua
+++ b/mesecons_pistons/init.lua
@@ -643,13 +643,18 @@ local piston_up_down_get_stopper = function (node, dir, stack, stackid)
end
local piston_get_stopper = function (node, dir, stack, stackid)
- if (stack[stackid + 1]
- and stack[stackid + 1].node.name == minetest.registered_nodes[node.name].mesecons_piston.pusher
- and stack[stackid + 1].node.param2 == node.param2)
- or (stack[stackid - 1]
- and stack[stackid - 1].node.name == minetest.registered_nodes[node.name].mesecons_piston.pusher
- and stack[stackid + 1].node.param2 == node.param2) then
- return false
+ pistonspec = minetest.registered_nodes[node.name].mesecons_piston
+ dir = piston_get_direction(pistonspec.dir, node)
+ local pusherpos = mesecon:addPosRule(stack[stackid].pos, dir)
+ local pushernode = minetest.env:get_node(pusherpos)
+
+ if minetest.registered_nodes[node.name].mesecons_piston.pusher == pushernode.name then
+ for _, s in ipairs(stack) do
+ if mesecon:cmpPos(s.pos, pusherpos) -- pusher is also to be pushed
+ and s.node.param2 == node.param2 then
+ return false
+ end
+ end
end
return true
end
@@ -657,11 +662,11 @@ end
mesecon:register_mvps_stopper("mesecons_pistons:piston_normal_on", piston_get_stopper)
mesecon:register_mvps_stopper("mesecons_pistons:piston_sticky_on", piston_pusher_get_stopper)
-mesecon:register_mvps_stopper("mesecons_pistons:piston_normal_on", piston_up_down_get_stopper)
-mesecon:register_mvps_stopper("mesecons_pistons:piston_sticky_on", piston_up_down_get_stopper)
+mesecon:register_mvps_stopper("mesecons_pistons:piston_up_normal_on", piston_up_down_get_stopper)
+mesecon:register_mvps_stopper("mesecons_pistons:piston_up_sticky_on", piston_up_down_get_stopper)
-mesecon:register_mvps_stopper("mesecons_pistons:piston_normal_on", piston_up_down_get_stopper)
-mesecon:register_mvps_stopper("mesecons_pistons:piston_sticky_on", piston_up_down_get_stopper)
+mesecon:register_mvps_stopper("mesecons_pistons:piston_down_normal_on", piston_up_down_get_stopper)
+mesecon:register_mvps_stopper("mesecons_pistons:piston_down_sticky_on", piston_up_down_get_stopper)
--craft recipes
minetest.register_craft({