diff --git a/mechanisms.lua b/mechanisms.lua index c8ee9aa..b1b6e9b 100644 --- a/mechanisms.lua +++ b/mechanisms.lua @@ -6,11 +6,17 @@ local function door_toggle(pos_actuator, pos_door, player) local actuator = minetest.get_node(pos_actuator) local door = doors.get(pos_door) - minetest.set_node(pos_actuator, {name=actuator.name:gsub("_off", "_on"), param2=actuator.param2}) + if actuator.name:sub(-4) == "_off" then + minetest.set_node(pos_actuator, + {name=actuator.name:gsub("_off", "_on"), param2=actuator.param2}) + end door:open(player) minetest.after(2, function() - minetest.set_node(pos_actuator, {name=actuator.name, param2=actuator.param2}) + if minetest.get_node(pos_actuator).name:sub(-3) == "_on" then + minetest.set_node(pos_actuator, + {name=actuator.name, param2=actuator.param2}) + end door:close(player) end) end @@ -32,6 +38,7 @@ function plate.timer(pos) for i = 1, #doors do door_toggle(pos, doors[i], player) end + break end end return true