if not input then ignore = true end
if not ignore then
- input = add_vec(input,pos)
+ input = temp_pool.input
end
if not ignore and pool and pool[input.x] and pool[input.x][input.y] and pool[input.x][input.y][input.z] then
local i
local index
local passed_on_level
-local function redstone_pathfinder(source,source_level,boundary,direction)
+local function redstone_pathfinder(source,source_level,boundary,output)
if not source_level then return end
--directional torches
- if direction then
- i = add_vec(source,direction)
+ if output then
+ i = output
if i and boundary and boundary[i.x] and boundary[i.x][i.y] and boundary[i.x][i.y][i.z] then
index = boundary[i.x][i.y][i.z]
--dust
end
+
+
--make all power sources push power out
local pos
local node
local power
-
local boundary
local function calculate(pos)
-
boundary = create_boundary_box(pos)
--pathfind through memory map
for x,index_x in pairs(boundary) do
redstone_pathfinder(new_vec(x,y,z),data.torch,boundary)
boundary[x][y][z] = nil
elseif data.torch_directional then
- redstone_pathfinder(new_vec(x,y,z),data.torch,boundary,data.dir)
+ redstone_pathfinder(new_vec(x,y,z),data.torch,boundary,data.output)
end
end
end
end
-
--reassemble the table into a position list minetest can understand
--run through and set dust
for x,datax in pairs(boundary) do
end
end
+
--this must be done after the memory is written
for x,datax in pairs(boundary) do
for y,datay in pairs(datax) do
end
recursion_check[s_pos] = recursion_check[s_pos] + 1
--print(recursion_check[s_pos])
- if recursion_check[s_pos] > 50 then
+ if recursion_check[s_pos] > 6 then
minetest.after(0,function()
minetest.dig_node(pos)
data_injection(pos,nil)
torch = 9,
torch_directional = true,
directional_activator = true,
- input = vector.multiply(dir,-1),
+ input = vector.subtract(pos,dir),
+ output = vector.add(pos,dir),
dir = dir
})
end,
redstone.inject(pos,{
name = "redstone:repeater_off_"..level,
directional_activator = true,
- input = vector.multiply(dir,-1),
+ input = vector.subtract(pos,dir),
dir = dir
})
minetest.after(0,function()
- redstone.update(vector.add(pos,dir))
+ --redstone.update(vector.add(pos,dir))
+ redstone.update(pos)
end)
end,
torch = 9,
torch_directional = true,
directional_activator = true,
- input = vector.multiply(dir,-1),
+ input = vector.subtract(pos,dir),
+ output = vector.add(pos,dir),
dir = dir
})
redstone.update(pos)
torch = 9,
torch_directional = true,
directional_activator = true,
- input = vector.multiply(dir,-1),
+ input = vector.subtract(pos,dir),
+ output = vector.add(pos,dir),
dir = dir
})
- redstone.update(pos)
+ minetest.after(0,function()
+ redstone.update(vector.add(pos,dir))
+ end)
end,
})
torch = 9,
torch_directional = true,
directional_activator = true,
- input = vector.multiply(dir,-1),
+ input = vector.subtract(pos,dir),
+ output = vector.add(pos,dir),
dir = dir
})
minetest.after(0,function()
- redstone.update(vector.add(pos,dir))
+ --redstone.update(vector.add(pos,dir))
+ redstone.update(pos)
end)
end,
redstone.inject(pos,{
name = "redstone:repeater_off_"..newlevel,
directional_activator = true,
- input = vector.multiply(dir,-1),
+ input = vector.subtract(pos,dir),
dir = dir
})
minetest.sound_play("lever", {pos=pos})
redstone.inject(pos,{
name = "redstone:repeater_off_"..level,
directional_activator = true,
- input = vector.multiply(dir,-1),
+ input = vector.subtract(pos,dir),
dir = dir
})
redstone.update(pos)
redstone.inject(pos,{
name = "redstone:repeater_off_"..level,
directional_activator = true,
- input = vector.multiply(dir,-1),
+ input = vector.subtract(pos,dir),
dir = dir
})
- redstone.update(pos)
+ minetest.after(0,function()
+ redstone.update(vector.add(pos,dir))
+ end)
end,
})