]> git.lizzy.rs Git - Crafter.git/blobdiff - mods/redstone/inverter.lua
Add in advanced player detectors
[Crafter.git] / mods / redstone / inverter.lua
index b9a26655d73d1899cdc652b446b7f78f867857d6..b14788d177e3a4765151c5a384905da3b1315d27 100644 (file)
@@ -37,7 +37,7 @@ minetest.register_node("redstone:inverter_on", {
                redstone.inject(pos,{
                        name = "redstone:inverter_on",
                        directional_activator = true,
-                       input  = vector.multiply(dir,-1),
+                       input  = vector.subtract(pos,dir),
                        dir = dir
                })
                redstone.update(pos)
@@ -53,17 +53,17 @@ redstone.register_activator({
        name = "redstone:inverter_on",
        deactivate = function(pos)
                local param2 = minetest.get_node(pos).param2
-               minetest.set_node(pos,{name="redstone:inverter_off",param2=param2})
+               minetest.swap_node(pos,{name="redstone:inverter_off",param2=param2})
                local dir = minetest.facedir_to_dir(param2)
                redstone.inject(pos,{
                        name = "redstone:inverter_off",
                        torch  = 9,
                        torch_directional = true,
                        directional_activator = true,
-                       input  = vector.multiply(dir,-1),
+                       input  = vector.subtract(pos,dir),
+                       output = vector.add(pos,dir),
                        dir = dir
                })
-
                redstone.update(pos)
        end
 })
@@ -78,7 +78,7 @@ minetest.register_lbm({
                redstone.inject(pos,{
                        name = "redstone:inverter_on",
                        directional_activator = true,
-                       input  = vector.multiply(dir,-1),
+                       input  = vector.subtract(pos,dir),
                        dir = dir
                })
        end,
@@ -121,7 +121,8 @@ minetest.register_node("redstone:inverter_off", {
                        torch  = 9,
                        torch_directional = true,
                        directional_activator = true,
-                       input  = vector.multiply(dir,-1),
+                       input  = vector.subtract(pos,dir),
+                       output = vector.add(pos,dir),
                        dir = dir
                })
                redstone.update(pos)
@@ -137,12 +138,12 @@ redstone.register_activator({
        activate = function(pos)
                
                local param2 = minetest.get_node(pos).param2
-               minetest.set_node(pos,{name="redstone:inverter_on",param2=param2})
+               minetest.swap_node(pos,{name="redstone:inverter_on",param2=param2})
                local dir = minetest.facedir_to_dir(param2)
                redstone.inject(pos,{
                        name = "redstone:inverter_on",
                        directional_activator = true,
-                       input  = vector.multiply(dir,-1),
+                       input  = vector.subtract(pos,dir),
                        dir = dir
                })
                redstone.update(pos)
@@ -161,9 +162,13 @@ minetest.register_lbm({
                        torch  = 9,
                        torch_directional = true,
                        directional_activator = true,
-                       input  = vector.multiply(dir,-1),
+                       input  = vector.subtract(pos,dir),
+                       output = vector.add(pos,dir),
                        dir    = dir
                })
-               redstone.update(pos)
+               --redstone needs to warm up
+               minetest.after(0,function()
+                       redstone.update(pos)
+               end)
        end,
 })
\ No newline at end of file