minetest,table,vector
=
minetest,table,vector
+
+local r_max = redstone.max_state
+
local excluded_nodes = {
["main:ironblock"]=true,
["main:ironblock_on"]=true,
local dir = minetest.wallmounted_to_dir(node.param2)
- redstone.inject(pos,{torch=9})
+ redstone.inject(pos,{torch=r_max})
local pos2 = vector.add(dir,pos)
- redstone.inject(pos2,{torch=9})
+ redstone.inject(pos2,{torch=r_max})
redstone.update(pos)
redstone.update(pos2)
local param2 = minetest.get_node(pos).param2
local dir = minetest.wallmounted_to_dir(param2)
- redstone.inject(pos,{torch=9})
+ redstone.inject(pos,{torch=r_max})
local pos2 = vector.add(dir,pos)
- redstone.inject(pos2,{torch=9})
+ redstone.inject(pos2,{torch=r_max})
minetest.after(0,function()
redstone.update(pos)
+local r_max = redstone.max_state
+
minetest.register_node("redstone:detector_off", {
description = "Detector",
tiles = {"redstone_piston.png^[invert:rgb^[colorize:yellow:100",
redstone.inject(pos,{
name = "redstone:detector_on",
- torch = 9,
+ torch = r_max,
})
minetest.after(0,function()
redstone.update(pos)
on_construct = function(pos)
redstone.inject(pos,{
name = "redstone:detector_on",
- torch = 9,
+ torch = r_max,
})
local timer = minetest.get_node_timer(pos)
if not timer:is_started() then
action = function(pos)
redstone.inject(pos,{
name = "redstone:detector_on",
- torch = 9,
+ torch = r_max,
})
local timer = minetest.get_node_timer(pos)
-- redstone class
redstone = {}
+redstone.max_state = 9 -- the limit to power transmission
+
redstone.player_detector_add = function(pos)
player_detection_table[minetest.serialize(pos)] = pos
end
local table_3d
local temp_pool
+local r_max = redstone.max_state
local function create_boundary_box(pos)
table_3d = {}
- for x = pos.x-9,pos.x+9 do
+ for x = pos.x-r_max,pos.x+r_max do
if pool[x] then
- for y = pos.y-9,pos.y+9 do
+ for y = pos.y-r_max,pos.y+r_max do
if pool[x][y] then
- for z = pos.z-9,pos.z+9 do
+ for z = pos.z-r_max,pos.z+r_max do
temp_pool = pool[x][y][z]
if temp_pool then
if not table_3d[x] then table_3d[x] = {} end
if not table_3d[x][y] then table_3d[x][y] = {} end
- if (x == pos.x-9 or x == pos.x+9 or
- y == pos.y-9 or y == pos.y+9 or
- z == pos.z-9 or z == pos.z+9) and
+ if (x == pos.x-r_max or x == pos.x+r_max or
+ y == pos.y-r_max or y == pos.y+r_max or
+ z == pos.z-r_max or z == pos.z+r_max) and
temp_pool.dust and temp_pool.dust > 1 then
table_3d[x][y][z] = {torch=temp_pool.dust}
else
for _,player in ipairs(minetest.get_connected_players()) do
pos2 = player:get_pos()
power = floor(11-vector_distance(pos2,pos))
- if power > 9 then
- power = 9
+ if power > r_max then
+ power = r_max
elseif power < 0 then
power = 0
end
end,
})
---15 power levels 15 being the highest
-for i = 0,8 do
+--power levels r_max-1 being the highest
+local d_max = r_max-1
+for i = 0,d_max do
- local color = floor(255 * (i/8))
+ local color = floor(255 * (i/d_max))
minetest.register_node("redstone:dust_"..i,{
description = "Redstone Dust",
calculate(pos)
end,
after_destruct = function(pos)
+ print("test")
data_injection(pos,nil)
calculate(pos)
end,
=
minetest,vector
+local r_max = redstone.max_state
+
--[[
██████╗ ███╗ ██╗
██╔═══██╗████╗ ██║
local dir = minetest.facedir_to_dir(param2)
redstone.inject(pos,{
name = "redstone:inverter_off",
- torch = 9,
+ torch = r_max,
torch_directional = true,
directional_activator = true,
input = vector.subtract(pos,dir),
minetest.register_node("redstone:inverter_off", {
description = "Redstone Inverter",
tiles = {"repeater_off.png"},
- groups = {stone = 1, hard = 1, pickaxe = 1, hand = 4,attached_node = 1,redstone_activation_directional=1,torch_directional=1,redstone_power=9},
+ groups = {stone = 1, hard = 1, pickaxe = 1, hand = 4,attached_node = 1,redstone_activation_directional=1,torch_directional=1,redstone_power=r_max},
sounds = main.stoneSound(),
paramtype = "light",
paramtype2 = "facedir",
local dir = minetest.facedir_to_dir(minetest.get_node(pos).param2)
redstone.inject(pos,{
name = "redstone:inverter_off",
- torch = 9,
+ torch = r_max,
torch_directional = true,
directional_activator = true,
input = vector.subtract(pos,dir),
local dir = minetest.facedir_to_dir(minetest.get_node(pos).param2)
redstone.inject(pos,{
name = "redstone:inverter_off",
- torch = 9,
+ torch = r_max,
torch_directional = true,
directional_activator = true,
input = vector.subtract(pos,dir),
minetest,vector,math,pairs
=
minetest,vector,math,pairs
+
+local r_max = redstone.max_state
+
local excluded_nodes = {
["main:ironblock"]=true,
["main:ironblock_on"]=true,
action = function(pos)
local param2 = minetest.get_node(pos).param2
local dir = minetest.wallmounted_to_dir(param2)
- redstone.inject(pos,{torch=9})
+ redstone.inject(pos,{torch=r_max})
local pos2 = vector.add(dir,pos)
- redstone.inject(pos2,{torch=9})
+ redstone.inject(pos2,{torch=r_max})
minetest.after(0,function()
redstone.update(pos)
redstone.update(pos2)
local dir = minetest.wallmounted_to_dir(node.param2)
- redstone.inject(pos,{torch=9})
+ redstone.inject(pos,{torch=r_max})
local pos2 = vector.add(dir,pos)
- redstone.inject(pos2,{torch=9})
+ redstone.inject(pos2,{torch=r_max})
redstone.update(pos)
redstone.update(pos2)
=
minetest,ipairs,math
+local r_max = redstone.max_state
+
--detects players and outputs accordingly
-for i = 0,9 do
+for i = 0,r_max do
minetest.register_node("redstone:player_detector_"..i, {
description = "Redstone Player Detector",
local minetest,ipairs,vector = minetest,ipairs,vector
+
+r_max
+
for level = 0,9 do
local subtracter = 0
if level > 0 then subtracter = 1 end
local minetest,vector = minetest,vector
+local r_max = redstone.max_state
+
local max_timer = 7
for level = 0,max_timer do
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},
+ 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=r_max,repeater_level=level},
sounds = main.stoneSound(),
paramtype = "light",
paramtype2 = "facedir",
minetest.sound_play("lever", {pos=pos})
redstone.inject(pos,{
name = "redstone:repeater_on_"..newlevel,
- torch = 9,
+ torch = r_max,
torch_directional = true,
directional_activator = true,
input = vector.subtract(pos,dir),
local dir = minetest.facedir_to_dir(minetest.get_node(pos).param2)
redstone.inject(pos,{
name = "redstone:repeater_on_"..level,
- torch = 9,
+ torch = r_max,
torch_directional = true,
directional_activator = true,
input = vector.subtract(pos,dir),
local dir = minetest.facedir_to_dir(minetest.get_node(pos).param2)
redstone.inject(pos,{
name = "redstone:repeater_on_"..level,
- torch = 9,
+ torch = r_max,
torch_directional = true,
directional_activator = true,
input = vector.subtract(pos,dir),
local dir = minetest.facedir_to_dir(param2)
redstone.inject(pos,{
name = "redstone:repeater_on_"..level,
- torch = 9,
+ torch = r_max,
torch_directional = true,
directional_activator = true,
input = vector.subtract(pos,dir),
local minetest,vector = minetest,vector
+local r_max = redstone.max_state
+
-- Item definitions
minetest.register_craftitem("redstone:torch", {
description = "Redstone Torch",
},
on_construct = function(pos)
- redstone.inject(pos,{torch=9})
+ redstone.inject(pos,{torch=r_max})
redstone.update(pos)
end,
after_destruct = function(pos, oldnode)
wall_side = {-0.5, -0.3, -0.1, -0.2, 0.3, 0.1},
},
on_construct = function(pos)
- redstone.inject(pos,{torch=9})
+ redstone.inject(pos,{torch=r_max})
redstone.update(pos)
end,
after_destruct = function(pos, oldnode)
nodenames = {"redstone:torch_wall","redstone:torch_floor"},
run_at_every_load = true,
action = function(pos)
- redstone.inject(pos,{torch=9})
+ redstone.inject(pos,{torch=r_max})
end,
})
\ No newline at end of file