3 minetest,vector,math,pairs
5 minetest,vector,math,pairs
6 local excluded_nodes = {
7 ["main:ironblock"]=true,
8 ["main:ironblock_on"]=true,
10 local excluded_mods = {redstone=true,door=true}
11 local registered_nodes
12 minetest.register_on_mods_loaded(function()
13 registered_nodes = minetest.registered_nodes
16 minetest.register_node("redstone:lever_on", {
17 description = "Lever On",
18 tiles = {"stone.png"},
19 groups = {stone = 1, hard = 1, pickaxe = 1, hand = 4,attached_node = 1,dig_immediate=1},
20 sounds = main.stoneSound(),
22 paramtype2 = "wallmounted",
23 sunlight_propagates = true,
26 drop="redstone:lever_off",
30 --left front bottom right back top
31 {-0.3, -0.5, -0.4, 0.3, -0.4, 0.4},
32 {-0.1, -0.5, 0.3, 0.1, 0, 0.1},
35 on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
36 minetest.swap_node(pos, {name="redstone:lever_off",param2=node.param2})
38 minetest.sound_play("lever", {pos=pos})
40 local dir = minetest.wallmounted_to_dir(node.param2)
42 redstone.inject(pos,nil)
43 local pos2 = vector.add(dir,pos)
44 redstone.inject(pos2,nil)
49 after_destruct = function(pos, oldnode)
50 redstone.inject(pos,nil)
51 local dir = minetest.wallmounted_to_dir(oldnode.param2)
52 local pos2 = vector.add(dir,pos)
53 redstone.inject(pos2,nil)
60 minetest.register_lbm({
61 name = "redstone:lever_on",
62 nodenames = {"redstone:lever_on"},
63 run_at_every_load = true,
64 action = function(pos)
65 local param2 = minetest.get_node(pos).param2
66 local dir = minetest.wallmounted_to_dir(param2)
67 redstone.inject(pos,{torch=16})
68 local pos2 = vector.add(dir,pos)
69 redstone.inject(pos2,{torch=16})
70 minetest.after(0,function()
79 minetest.register_node("redstone:lever_off", {
80 description = "Lever",
81 tiles = {"stone.png"},
82 groups = {stone = 1, hard = 1, pickaxe = 1, hand = 4,attached_node = 1,dig_immediate=1},
83 sounds = main.stoneSound(),
85 paramtype2 = "wallmounted",
86 sunlight_propagates = true,
89 drop="redstone:lever_off",
90 node_placement_prediction = "",
94 --left front bottom right back top
95 {-0.3, -0.5, -0.4, 0.3, -0.4, 0.4},
96 {-0.1, -0.5, -0.3, 0.1, 0, -0.1},
100 on_construct = function(pos)
101 local param2 = minetest.get_node(pos).param2
102 local dir = minetest.wallmounted_to_dir(param2)
103 local node = minetest.get_node(vector.add(pos,dir))
104 local def = registered_nodes[node.name]
105 local remove = (excluded_mods[def.mod_origin] == true or excluded_nodes[node.name] == true)
107 minetest.swap_node(pos,{name="air"})
108 redstone.inject(pos,nil)
109 minetest.throw_item(pos, "redstone:lever_off")
112 on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
113 minetest.swap_node(pos, {name="redstone:lever_on",param2=node.param2})
114 minetest.sound_play("lever", {pos=pos})
116 local dir = minetest.wallmounted_to_dir(node.param2)
118 redstone.inject(pos,{torch=16})
119 local pos2 = vector.add(dir,pos)
120 redstone.inject(pos2,{torch=16})
123 redstone.update(pos2)
125 after_destruct = function(pos, oldnode)
126 redstone.inject(pos,nil)
127 local dir = minetest.wallmounted_to_dir(oldnode.param2)
128 local pos2 = vector.add(dir,pos)
129 redstone.inject(pos2,nil)
132 redstone.update(pos2)