local minetest,vector = minetest,vector
local max_timer = 7
-
for level = 0,max_timer do
-minetest.register_node("redstone:repeater_off_"..level, {
- description = "Redstone Repeater",
- tiles = {"repeater_off.png"},
- groups = {stone = 1, hard = 1, pickaxe = 1, hand = 4,attached_node = 1,repeater_off=1,repeater=1,redstone_activation_directional=1,repeater_level=level},
- sounds = main.stoneSound(),
- paramtype = "light",
+
+
+
+
+--[[
+ ██████╗ ███╗ ██╗
+██╔═══██╗████╗ ██║
+██║ ██║██╔██╗ ██║
+██║ ██║██║╚██╗██║
+╚██████╔╝██║ ╚████║
+ ╚═════╝ ╚═╝ ╚═══╝
+]]--
+
+minetest.register_node("redstone:repeater_on_"..level, {
+ description = "Redstone Repeater",
+ tiles = {"repeater_on.png"},
+ 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=9,repeater_level=level},
+ sounds = main.stoneSound(),
+ paramtype = "light",
paramtype2 = "facedir",
sunlight_propagates = true,
walkable = false,
{-0.1, -0.5, 0.2, 0.1, 0.1, 0.4}, --output post
{-0.1, -0.5, -0.05-(level*0.05), 0.1, 0.1, 0.15-(level*0.05)}, --input post
},
- },
- redstone_activation = function(pos)
- local timer = minetest.get_node_timer(pos)
- if not timer:is_started() then
- timer:start(level/max_timer)
- end
- end,
-
- on_timer = function(pos, elapsed)
- local param2 = minetest.get_node(pos).param2
- minetest.swap_node(pos, {name="redstone:repeater_on_"..level,param2=param2})
- redstone.collect_info(pos)
- end,
+ },
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
local newlevel = level + 1
if newlevel > max_timer then
newlevel = 0
end
- minetest.swap_node(pos,{name="redstone:repeater_off_"..newlevel,param2=node.param2})
+ local param2 = minetest.get_node(pos).param2
+ local dir = minetest.facedir_to_dir(param2)
+
+ minetest.swap_node(pos,{name="redstone:repeater_on_"..newlevel,param2=param2})
minetest.sound_play("lever", {pos=pos})
+ redstone.inject(pos,{
+ name = "redstone:repeater_on_"..newlevel,
+ torch = 9,
+ torch_directional = true,
+ directional_activator = true,
+ input = vector.multiply(dir,-1),
+ dir = dir
+ })
+ end,
+
+ on_timer = function(pos, elapsed)
+ local param2 = minetest.get_node(pos).param2
+ minetest.swap_node(pos, {name="redstone:repeater_off_"..level,param2=param2})
+ local dir = minetest.facedir_to_dir(param2)
+ redstone.inject(pos,{
+ name = "redstone:repeater_off_"..level,
+ directional_activator = true,
+ input = vector.multiply(dir,-1),
+ dir = dir
+ })
+
+ redstone.update(pos)
end,
after_destruct = function(pos, oldnode)
- redstone.collect_info(pos)
+ redstone.inject(pos,nil)
+ redstone.update(pos)
end,
after_place_node = function(pos)
- redstone.collect_info(pos)
+ local dir = minetest.facedir_to_dir(minetest.get_node(pos).param2)
+ redstone.inject(pos,{
+ name = "redstone:repeater_on_"..level,
+ torch = 9,
+ torch_directional = true,
+ directional_activator = true,
+ input = vector.multiply(dir,-1),
+ dir = dir
+ })
+ redstone.update(pos)
end
})
-minetest.register_node("redstone:repeater_on_"..level, {
+redstone.register_activator({
+ name = "redstone:repeater_on_"..level,
+ deactivate = function(pos)
+ local timer = minetest.get_node_timer(pos)
+ if not timer:is_started() then
+ timer:start(level/max_timer)
+ end
+ end
+})
+
+
+minetest.register_lbm({
+ name = "redstone:startup_activator_on_"..level,
+ nodenames = {"redstone:repeater_on_"..level},
+ run_at_every_load = true,
+ action = function(pos)
+ local dir = minetest.facedir_to_dir(minetest.get_node(pos).param2)
+ redstone.inject(pos,{
+ name = "redstone:repeater_on_"..level,
+ torch = 9,
+ torch_directional = true,
+ directional_activator = true,
+ input = vector.multiply(dir,-1),
+ dir = dir
+ })
+ redstone.update(pos)
+ end,
+})
+
+
+
+
+
+
+
+
+
+
+--[[
+ ██████╗ ███████╗███████╗
+██╔═══██╗██╔════╝██╔════╝
+██║ ██║█████╗ █████╗
+██║ ██║██╔══╝ ██╔══╝
+╚██████╔╝██║ ██║
+ ╚═════╝ ╚═╝ ╚═╝
+]]--
+
+
+
+minetest.register_node("redstone:repeater_off_"..level, {
description = "Redstone Repeater",
- tiles = {"repeater_on.png"},
- 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=9,repeater_level=level},
+ tiles = {"repeater_off.png"},
+ groups = {stone = 1, hard = 1, pickaxe = 1, hand = 4,attached_node = 1,repeater_off=1,repeater=1,redstone_activation_directional=1,repeater_level=level},
sounds = main.stoneSound(),
paramtype = "light",
paramtype2 = "facedir",
{-0.1, -0.5, 0.2, 0.1, 0.1, 0.4}, --output post
{-0.1, -0.5, -0.05-(level*0.05), 0.1, 0.1, 0.15-(level*0.05)}, --input post
},
- },
- on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
- local newlevel = level + 1
- if newlevel > max_timer then
- newlevel = 0
- end
- minetest.swap_node(pos,{name="redstone:repeater_on_"..newlevel,param2=node.param2})
- minetest.sound_play("lever", {pos=pos})
- end,
- redstone_deactivation = function(pos)
+ },
+ redstone_activation = function(pos)
local timer = minetest.get_node_timer(pos)
if not timer:is_started() then
timer:start(level/max_timer)
end
end,
+
on_timer = function(pos, elapsed)
local param2 = minetest.get_node(pos).param2
- minetest.swap_node(pos, {name="redstone:repeater_off_"..level,param2=param2})
- redstone.collect_info(pos)
+ minetest.swap_node(pos, {name="redstone:repeater_on_"..level,param2=param2})
+
+ local dir = minetest.facedir_to_dir(param2)
+ redstone.inject(pos,{
+ name = "redstone:repeater_on_"..level,
+ torch = 9,
+ torch_directional = true,
+ directional_activator = true,
+ input = vector.multiply(dir,-1),
+ dir = dir
+ })
+ redstone.update(pos)
+ end,
+
+ on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
+ local newlevel = level + 1
+ if newlevel > max_timer then
+ newlevel = 0
+ end
+ local param2 = minetest.get_node(pos).param2
+ local dir = minetest.facedir_to_dir(param2)
+ minetest.swap_node(pos,{name="redstone:repeater_off_"..newlevel,param2=param2})
+ redstone.inject(pos,{
+ name = "redstone:repeater_off_"..newlevel,
+ directional_activator = true,
+ input = vector.multiply(dir,-1),
+ dir = dir
+ })
+ minetest.sound_play("lever", {pos=pos})
end,
+
after_destruct = function(pos, oldnode)
- redstone.collect_info(pos)
+ redstone.inject(pos,nil)
+ redstone.update(pos)
end,
after_place_node = function(pos)
- redstone.collect_info(pos)
+ local dir = minetest.facedir_to_dir(minetest.get_node(pos).param2)
+ redstone.inject(pos,{
+ name = "redstone:repeater_off_"..level,
+ directional_activator = true,
+ input = vector.multiply(dir,-1),
+ dir = dir
+ })
+ redstone.update(pos)
+ end
+})
+
+
+redstone.register_activator({
+ name = "redstone:repeater_off_"..level,
+ activate = function(pos)
+ local timer = minetest.get_node_timer(pos)
+ if not timer:is_started() then
+ timer:start(level/max_timer)
+ end
end
})
+
+
+minetest.register_lbm({
+ name = "redstone:startup_activator_off_"..level,
+ nodenames = {"redstone:repeater_off_"..level},
+ run_at_every_load = true,
+ action = function(pos)
+ local dir = minetest.facedir_to_dir(minetest.get_node(pos).param2)
+ redstone.inject(pos,{
+ name = "redstone:repeater_off_"..level,
+ directional_activator = true,
+ input = vector.multiply(dir,-1),
+ dir = dir
+ })
+ redstone.update(pos)
+ end,
+})
+
+
+
+
+
+
+
+
+
+
+
+
+
end