X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=mods%2Fredstone%2Fbutton.lua;h=16609d966134a750394cc1715c72200c0de2551c;hb=11f910f89f09477fc10a4d07bfb066679c10a330;hp=9fac557f3c78275c36ac2c92bc87eb7e6bf53f24;hpb=ed378531b4f4dc4a04ba395b6b60da07a4e4e9fe;p=Crafter.git diff --git a/mods/redstone/button.lua b/mods/redstone/button.lua index 9fac557..16609d9 100644 --- a/mods/redstone/button.lua +++ b/mods/redstone/button.lua @@ -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, })