3 minetest,vector,math,pairs
5 minetest,vector,math,pairs
7 local r_max = redstone.max_state
9 local excluded_nodes = {
10 ["main:ironblock"]=true,
11 ["main:ironblock_on"]=true,
13 local excluded_mods = {redstone=true,door=true}
14 local registered_nodes
15 minetest.register_on_mods_loaded(function()
16 registered_nodes = minetest.registered_nodes
19 minetest.register_node("redstone:lever_on", {
20 description = "Lever On",
21 tiles = {"stone.png"},
22 groups = {stone = 1, hard = 1, pickaxe = 1, hand = 4,attached_node = 1,dig_immediate=1},
23 sounds = main.stoneSound(),
25 paramtype2 = "wallmounted",
26 sunlight_propagates = true,
29 drop="redstone:lever_off",
33 --left front bottom right back top
34 {-0.3, -0.5, -0.4, 0.3, -0.4, 0.4},
35 {-0.1, -0.5, 0.3, 0.1, 0, 0.1},
38 on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
39 minetest.swap_node(pos, {name="redstone:lever_off",param2=node.param2})
41 minetest.sound_play("lever", {pos=pos})
43 local dir = minetest.wallmounted_to_dir(node.param2)
45 redstone.inject(pos,nil)
46 local pos2 = vector.add(dir,pos)
47 redstone.inject(pos2,nil)
52 after_destruct = function(pos, oldnode)
53 redstone.inject(pos,nil)
54 local dir = minetest.wallmounted_to_dir(oldnode.param2)
55 local pos2 = vector.add(dir,pos)
56 redstone.inject(pos2,nil)
63 minetest.register_lbm({
64 name = "redstone:lever_on",
65 nodenames = {"redstone:lever_on"},
66 run_at_every_load = true,
67 action = function(pos)
68 local param2 = minetest.get_node(pos).param2
69 local dir = minetest.wallmounted_to_dir(param2)
70 redstone.inject(pos,{torch=r_max})
71 local pos2 = vector.add(dir,pos)
72 redstone.inject(pos2,{torch=r_max})
73 minetest.after(0,function()
82 minetest.register_node("redstone:lever_off", {
83 description = "Lever",
84 tiles = {"stone.png"},
85 groups = {stone = 1, hard = 1, pickaxe = 1, hand = 4,attached_node = 1,dig_immediate=1},
86 sounds = main.stoneSound(),
88 paramtype2 = "wallmounted",
89 sunlight_propagates = true,
92 drop="redstone:lever_off",
93 node_placement_prediction = "",
97 --left front bottom right back top
98 {-0.3, -0.5, -0.4, 0.3, -0.4, 0.4},
99 {-0.1, -0.5, -0.3, 0.1, 0, -0.1},
103 on_construct = function(pos)
104 local param2 = minetest.get_node(pos).param2
105 local dir = minetest.wallmounted_to_dir(param2)
106 local node = minetest.get_node(vector.add(pos,dir))
107 local def = registered_nodes[node.name]
108 local remove = (excluded_mods[def.mod_origin] == true or excluded_nodes[node.name] == true)
110 minetest.swap_node(pos,{name="air"})
111 redstone.inject(pos,nil)
112 minetest.throw_item(pos, "redstone:lever_off")
115 on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
116 minetest.swap_node(pos, {name="redstone:lever_on",param2=node.param2})
117 minetest.sound_play("lever", {pos=pos})
119 local dir = minetest.wallmounted_to_dir(node.param2)
121 redstone.inject(pos,{torch=r_max})
122 local pos2 = vector.add(dir,pos)
123 redstone.inject(pos2,{torch=r_max})
126 redstone.update(pos2)
128 after_destruct = function(pos, oldnode)
129 redstone.inject(pos,nil)
130 local dir = minetest.wallmounted_to_dir(oldnode.param2)
131 local pos2 = vector.add(dir,pos)
132 redstone.inject(pos2,nil)
135 redstone.update(pos2)