]> git.lizzy.rs Git - xdecor.git/commitdiff
Pressure plates : fix set_node being called twice + some other fixes
authorJean-Patrick Guerrero <jeanpatrick.guerrero@gmail.com>
Fri, 4 Mar 2016 12:26:21 +0000 (13:26 +0100)
committerJean-Patrick Guerrero <jeanpatrick.guerrero@gmail.com>
Fri, 4 Mar 2016 15:57:11 +0000 (16:57 +0100)
mechanisms.lua

index c8ee9aaae2022caab0c4acb54c2e2579e5d0ff19..b1b6e9b245f6b1c82478ccd66ff16f072051734e 100644 (file)
@@ -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