]> git.lizzy.rs Git - Crafter.git/blobdiff - mods/redstone/button.lua
localize set_node
[Crafter.git] / mods / redstone / button.lua
index 7e40b94825111667898c1cdd97c8cb4a6944657c..e767aa8ac7763bf0103e28978c2d6ea1caba0974 100644 (file)
@@ -1,26 +1,9 @@
---this removes power from node that the switch is powering
-local function on_button_destroy(pos)
-       local param2 = minetest.get_node(pos).param2
-       local self = minetest.get_node(pos)
-       local dir = minetest.facedir_to_dir(self.param2)
-       
-       local pos = vector.add(dir,pos)
-       local node = minetest.get_node(pos)
-       local name = node.name
-       
-       local def = minetest.registered_nodes[name]
-       if def.drawtype == "normal" and string.match(name, "redstone:") then
-               name = "main:"..string.gsub(name, "redstone:", "")
-               minetest.set_node(pos, {name=name})
-               redstone.collect_info(pos)
-       end
-end
-
+local minetest,table,vector = minetest,table,vector
 
 minetest.register_node("redstone:button_off", {
-    description = "Crafting Table",
+    description = "Button",
     tiles = {"stone.png"},
-    groups = {stone = 1, hard = 1, pickaxe = 1, hand = 4,attached_node = 1},
+    groups = {stone = 1, hard = 1, pickaxe = 1, hand = 4,attached_node = 1,dig_immediate=1},
     sounds = main.stoneSound(),
     paramtype = "light",
        paramtype2 = "wallmounted",
@@ -36,28 +19,36 @@ minetest.register_node("redstone:button_off", {
                        },
                },
     on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
+               minetest.swap_node(pos, {name="redstone:button_on",param2=node.param2})
+
                minetest.sound_play("lever", {pos=pos})
-               minetest.set_node(pos, {name="redstone:button_on",param2=node.param2})
-               local dir = minetest.facedir_to_dir(node.param2)
-               local c_pos = table.copy(pos)
-               local pos = vector.add(dir,pos)
-               local name = minetest.get_node(pos).name
-               local def = minetest.registered_nodes[name]
+               local timer = minetest.get_node_timer(pos)
+               timer:start(1.25)
+
+               local dir = minetest.wallmounted_to_dir(node.param2)
+               pos = vector.add(dir,pos)
+       
+               local meta = minetest.get_meta(pos)
+
+               meta:set_int("redstone_power", 9)
+
+               redstone.collect_info(pos)
+       end,
+       after_destruct = function(pos, oldnode)
+               local dir = minetest.wallmounted_to_dir(oldnode.param2)
+               pos = vector.add(dir,pos)
+       
+               local meta = minetest.get_meta(pos)
+
+               meta:set_int("redstone_power", 0)
                
-               if def.drawtype == "normal" and string.match(name, "main:") then
-                       name = "redstone:"..string.gsub(name, "main:", "")
-                       minetest.set_node(pos,{name=name})
-                       redstone.collect_info(pos)
-                       local timer = minetest.get_node_timer(c_pos)
-                       timer:start(1)
-               end
+               redstone.collect_info(pos)
        end,
-       on_destruct = on_button_destroy,
 })
 minetest.register_node("redstone:button_on", {
-    description = "Crafting Table",
+    description = "Button",
     tiles = {"stone.png"},
-    groups = {stone = 1, hard = 1, pickaxe = 1, hand = 4,attached_node = 1},
+    groups = {stone = 1, hard = 1, pickaxe = 1, hand = 4,attached_node = 1,dig_immediate=1},
     sounds = main.stoneSound(),
     paramtype = "light",
        paramtype2 = "wallmounted",
@@ -74,9 +65,28 @@ minetest.register_node("redstone:button_on", {
                },
     on_timer = function(pos, elapsed)
                minetest.sound_play("lever", {pos=pos,pitch=0.8})
+
                local node = minetest.get_node(pos)
-               minetest.set_node(pos, {name="redstone:button_off",param2=node.param2})
-               on_button_destroy(pos)
+               minetest.swap_node(pos, {name="redstone:button_off",param2=node.param2})
+
+               local dir = minetest.wallmounted_to_dir(node.param2)
+               pos = vector.add(dir,pos)
+       
+               local meta = minetest.get_meta(pos)
+
+               meta:set_int("redstone_power", 0)
+               
+               redstone.collect_info(pos)
+               
+       end,
+       after_destruct = function(pos, oldnode)
+               local dir = minetest.wallmounted_to_dir(oldnode.param2)
+               pos = vector.add(dir,pos)
+       
+               local meta = minetest.get_meta(pos)
+
+               meta:set_int("redstone_power", 0)
+               
+               redstone.collect_info(pos)
        end,
-       on_destruct = on_button_destroy,
 })