5 local excluded_nodes = {
6 ["main:ironblock"]=true,
7 ["main:ironblock_on"]=true,
9 local excluded_mods = {redstone=true,door=true}
10 local registered_nodes
11 minetest.register_on_mods_loaded(function()
12 registered_nodes = minetest.registered_nodes
15 minetest.register_node("redstone:button_off", {
16 description = "Button",
17 tiles = {"stone.png"},
18 groups = {stone = 1, hard = 1, pickaxe = 1, hand = 4,attached_node = 1,dig_immediate=1},
19 sounds = main.stoneSound(),
21 paramtype2 = "wallmounted",
22 sunlight_propagates = true,
25 node_placement_prediction = "",
26 drop="redstone:button_off",
30 --left front bottom right back top
31 {-0.25, -0.5, -0.15, 0.25, -0.3, 0.15},
34 on_construct = function(pos)
35 local param2 = minetest.get_node(pos).param2
36 local dir = minetest.wallmounted_to_dir(param2)
37 local node = minetest.get_node(vector.add(pos,dir))
38 local def = registered_nodes[node.name]
39 local remove = (excluded_mods[def.mod_origin] == true or excluded_nodes[node.name] == true)
41 minetest.swap_node(pos,{name="air"})
42 redstone.inject(pos,nil)
43 minetest.throw_item(pos, "redstone:button_off")
46 on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
47 minetest.swap_node(pos, {name="redstone:button_on",param2=node.param2})
49 minetest.sound_play("lever", {pos=pos})
51 local timer = minetest.get_node_timer(pos)
54 local dir = minetest.wallmounted_to_dir(node.param2)
56 redstone.inject(pos,{torch=9})
57 local pos2 = vector.add(dir,pos)
58 redstone.inject(pos2,{torch=9})
63 after_destruct = function(pos, oldnode)
64 redstone.inject(pos,nil)
65 local dir = minetest.wallmounted_to_dir(oldnode.param2)
66 local pos2 = vector.add(dir,pos)
67 redstone.inject(pos2,nil)
73 minetest.register_node("redstone:button_on", {
74 description = "Button",
75 tiles = {"stone.png"},
76 groups = {stone = 1, hard = 1, pickaxe = 1, hand = 4,attached_node = 1,dig_immediate=1},
77 sounds = main.stoneSound(),
79 paramtype2 = "wallmounted",
80 sunlight_propagates = true,
83 drop="redstone:button_off",
87 --left front bottom right back top
88 {-0.25, -0.5, -0.15, 0.25, -0.45, 0.15},
91 on_timer = function(pos, elapsed)
92 minetest.sound_play("lever", {pos=pos,pitch=0.8})
94 local node = minetest.get_node(pos)
95 minetest.swap_node(pos, {name="redstone:button_off",param2=node.param2})
97 redstone.inject(pos,nil)
98 local param2 = minetest.get_node(pos).param2
99 local dir = minetest.wallmounted_to_dir(param2)
100 local pos2 = vector.add(dir,pos)
101 redstone.inject(pos2,nil)
104 redstone.update(pos2)
107 after_destruct = function(pos, oldnode)
108 redstone.inject(pos,nil)
109 local dir = minetest.wallmounted_to_dir(oldnode.param2)
110 local pos2 = vector.add(dir,pos)
111 redstone.inject(pos2,nil)
114 redstone.update(pos2)
118 minetest.register_lbm({
119 name = "redstone:button_on",
120 nodenames = {"redstone:button_on"},
121 run_at_every_load = true,
122 action = function(pos)
123 local param2 = minetest.get_node(pos).param2
124 local dir = minetest.wallmounted_to_dir(param2)
126 redstone.inject(pos,{torch=9})
127 local pos2 = vector.add(dir,pos)
128 redstone.inject(pos2,{torch=9})
130 minetest.after(0,function()
132 redstone.update(pos2)