]> git.lizzy.rs Git - Crafter.git/commitdiff
Make buttons use new metadata method
authoroilboi <47129783+oilboi@users.noreply.github.com>
Fri, 26 Jun 2020 09:29:16 +0000 (05:29 -0400)
committeroilboi <47129783+oilboi@users.noreply.github.com>
Fri, 26 Jun 2020 09:29:16 +0000 (05:29 -0400)
mods/redstone/button.lua

index 9fac557f3c78275c36ac2c92bc87eb7e6bf53f24..16609d966134a750394cc1715c72200c0de2551c 100644 (file)
@@ -1,20 +1,4 @@
 local minetest,table,vector = minetest,table,vector
---this removes power from node that the button is powering
-local function on_button_destroy(pos)
-       local param2 = minetest.get_node(pos).param2
-       local dir = minetest.wallmounted_to_dir(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:node_activated_") then
-               name = "main:"..string.gsub(name, "redstone:node_activated_", "")
-               minetest.set_node(pos, {name=name})
-               redstone.collect_info(pos)
-       end
-end
-
 
 minetest.register_node("redstone:button_off", {
     description = "Button",
@@ -36,25 +20,30 @@ minetest.register_node("redstone:button_off", {
                },
     on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
                minetest.set_node(pos, {name="redstone:button_on",param2=node.param2})
+
+               minetest.sound_play("lever", {pos=pos})
+               local timer = minetest.get_node_timer(pos)
+               timer:start(1.25)
+
                local dir = minetest.wallmounted_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]
-               
-               if def.drawtype == "normal" and string.match(name, "main:") then
-                       minetest.sound_play("lever", {pos=pos})
-                       name = "redstone:node_activated_"..string.gsub(name, "main:", "")
-                       minetest.set_node(pos,{name=name})
-                       redstone.collect_info(pos)
-               else
-                       minetest.sound_play("lever", {pos=pos,pitch=0.6})
-               end
+               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)
                
-               local timer = minetest.get_node_timer(c_pos)
-               timer:start(1)
+               redstone.collect_info(pos)
        end,
-       on_destruct = on_button_destroy,
 })
 minetest.register_node("redstone:button_on", {
     description = "Button",
@@ -76,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)
+
+               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,
 })