1 local minetest,vector = minetest,vector
4 for level = 0,max_timer do
18 minetest.register_node("redstone:repeater_on_"..level, {
19 description = "Redstone Repeater",
20 tiles = {"repeater_on.png"},
21 groups = {stone = 1, hard = 1, pickaxe = 1, hand = 4,attached_node = 1,redstone_activation_directional=1,repeater_on=1,repeater=1,torch_directional=1,redstone_power=16,repeater_level=level},
22 sounds = main.stoneSound(),
24 paramtype2 = "facedir",
25 sunlight_propagates = true,
28 drop="redstone:repeater_off_0",
32 --left front bottom right back top
33 {-0.5, -0.5, -0.5, 0.5, -0.3, 0.5}, --base
34 {-0.1, -0.5, 0.2, 0.1, 0.1, 0.4}, --output post
35 {-0.1, -0.5, -0.05-(level*0.05), 0.1, 0.1, 0.15-(level*0.05)}, --input post
39 on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
40 local newlevel = level + 1
41 if newlevel > max_timer then
44 local param2 = minetest.get_node(pos).param2
45 local dir = minetest.facedir_to_dir(param2)
47 minetest.swap_node(pos,{name="redstone:repeater_on_"..newlevel,param2=param2})
48 minetest.sound_play("lever", {pos=pos})
50 name = "redstone:repeater_on_"..newlevel,
52 torch_directional = true,
53 directional_activator = true,
54 input = vector.subtract(pos,dir),
55 output = vector.add(pos,dir),
60 on_timer = function(pos, elapsed)
61 local param2 = minetest.get_node(pos).param2
62 minetest.swap_node(pos, {name="redstone:repeater_off_"..level,param2=param2})
63 local dir = minetest.facedir_to_dir(param2)
65 name = "redstone:repeater_off_"..level,
66 directional_activator = true,
67 input = vector.subtract(pos,dir),
68 output = vector.add(pos,dir),
72 redstone.update(vector.add(pos,dir))
75 after_destruct = function(pos, oldnode)
76 redstone.inject(pos,nil)
80 after_place_node = function(pos)
81 local dir = minetest.facedir_to_dir(minetest.get_node(pos).param2)
83 name = "redstone:repeater_on_"..level,
85 torch_directional = true,
86 directional_activator = true,
87 input = vector.subtract(pos,dir),
88 output = vector.add(pos,dir),
95 redstone.register_activator({
96 name = "redstone:repeater_on_"..level,
97 deactivate = function(pos)
98 local timer = minetest.get_node_timer(pos)
99 if not timer:is_started() then
100 timer:start(level/max_timer)
106 minetest.register_lbm({
107 name = "redstone:startup_activator_on_"..level,
108 nodenames = {"redstone:repeater_on_"..level},
109 run_at_every_load = true,
110 action = function(pos)
111 local dir = minetest.facedir_to_dir(minetest.get_node(pos).param2)
112 redstone.inject(pos,{
113 name = "redstone:repeater_on_"..level,
115 torch_directional = true,
116 directional_activator = true,
117 input = vector.subtract(pos,dir),
118 output = vector.add(pos,dir),
134 ██████╗ ███████╗███████╗
135 ██╔═══██╗██╔════╝██╔════╝
144 minetest.register_node("redstone:repeater_off_"..level, {
145 description = "Redstone Repeater",
146 tiles = {"repeater_off.png"},
147 groups = {stone = 1, hard = 1, pickaxe = 1, hand = 4,attached_node = 1,repeater_off=1,repeater=1,redstone_activation_directional=1,repeater_level=level},
148 sounds = main.stoneSound(),
150 paramtype2 = "facedir",
151 sunlight_propagates = true,
154 drop="redstone:repeater_off_0",
158 --left front bottom right back top
159 {-0.5, -0.5, -0.5, 0.5, -0.3, 0.5}, --base
160 {-0.1, -0.5, 0.2, 0.1, 0.1, 0.4}, --output post
161 {-0.1, -0.5, -0.05-(level*0.05), 0.1, 0.1, 0.15-(level*0.05)}, --input post
165 on_timer = function(pos, elapsed)
166 local param2 = minetest.get_node(pos).param2
167 minetest.swap_node(pos, {name="redstone:repeater_on_"..level,param2=param2})
169 local dir = minetest.facedir_to_dir(param2)
170 redstone.inject(pos,{
171 name = "redstone:repeater_on_"..level,
173 torch_directional = true,
174 directional_activator = true,
175 input = vector.subtract(pos,dir),
176 output = vector.add(pos,dir),
180 redstone.update(vector.add(pos,dir))
183 on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
184 local newlevel = level + 1
185 if newlevel > max_timer then
188 local param2 = minetest.get_node(pos).param2
189 local dir = minetest.facedir_to_dir(param2)
190 minetest.swap_node(pos,{name="redstone:repeater_off_"..newlevel,param2=param2})
191 redstone.inject(pos,{
192 name = "redstone:repeater_off_"..newlevel,
193 directional_activator = true,
194 input = vector.subtract(pos,dir),
195 output = vector.add(pos,dir),
198 minetest.sound_play("lever", {pos=pos})
201 after_destruct = function(pos, oldnode)
202 redstone.inject(pos,nil)
206 after_place_node = function(pos)
207 local dir = minetest.facedir_to_dir(minetest.get_node(pos).param2)
208 redstone.inject(pos,{
209 name = "redstone:repeater_off_"..level,
210 directional_activator = true,
211 input = vector.subtract(pos,dir),
212 output = vector.add(pos,dir),
220 redstone.register_activator({
221 name = "redstone:repeater_off_"..level,
222 activate = function(pos)
223 local timer = minetest.get_node_timer(pos)
224 if not timer:is_started() then
225 timer:start(level/max_timer)
231 minetest.register_lbm({
232 name = "redstone:startup_activator_off_"..level,
233 nodenames = {"redstone:repeater_off_"..level},
234 run_at_every_load = true,
235 action = function(pos)
236 local dir = minetest.facedir_to_dir(minetest.get_node(pos).param2)
237 redstone.inject(pos,{
238 name = "redstone:repeater_off_"..level,
239 directional_activator = true,
240 input = vector.subtract(pos,dir),