From a2cb64f78f15f1c547f553c27d967ad1233eef36 Mon Sep 17 00:00:00 2001 From: oilboi <47129783+oilboi@users.noreply.github.com> Date: Fri, 3 Jul 2020 06:41:53 -0400 Subject: [PATCH] Make max redstone state a variable --- mods/redstone/button.lua | 11 +++++++---- mods/redstone/detector.lua | 8 +++++--- mods/redstone/init.lua | 27 ++++++++++++++++----------- mods/redstone/inverter.lua | 10 ++++++---- mods/redstone/lever.lua | 11 +++++++---- mods/redstone/player_detector.lua | 4 +++- mods/redstone/pressure_plate.lua | 3 +++ mods/redstone/repeater.lua | 12 +++++++----- mods/redstone/torch.lua | 8 +++++--- 9 files changed, 59 insertions(+), 35 deletions(-) diff --git a/mods/redstone/button.lua b/mods/redstone/button.lua index d1b96f8..d49166e 100644 --- a/mods/redstone/button.lua +++ b/mods/redstone/button.lua @@ -2,6 +2,9 @@ local minetest,table,vector = minetest,table,vector + +local r_max = redstone.max_state + local excluded_nodes = { ["main:ironblock"]=true, ["main:ironblock_on"]=true, @@ -53,9 +56,9 @@ minetest.register_node("redstone:button_off", { 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) @@ -123,9 +126,9 @@ minetest.register_lbm({ 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) diff --git a/mods/redstone/detector.lua b/mods/redstone/detector.lua index 2dc3c8e..9fb6e51 100644 --- a/mods/redstone/detector.lua +++ b/mods/redstone/detector.lua @@ -1,3 +1,5 @@ +local r_max = redstone.max_state + minetest.register_node("redstone:detector_off", { description = "Detector", tiles = {"redstone_piston.png^[invert:rgb^[colorize:yellow:100", @@ -23,7 +25,7 @@ minetest.register_node("redstone:detector_off", { redstone.inject(pos,{ name = "redstone:detector_on", - torch = 9, + torch = r_max, }) minetest.after(0,function() redstone.update(pos) @@ -118,7 +120,7 @@ minetest.register_node("redstone:detector_on", { 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 @@ -140,7 +142,7 @@ minetest.register_lbm({ action = function(pos) redstone.inject(pos,{ name = "redstone:detector_on", - torch = 9, + torch = r_max, }) local timer = minetest.get_node_timer(pos) diff --git a/mods/redstone/init.lua b/mods/redstone/init.lua index b903046..79ffbe2 100644 --- a/mods/redstone/init.lua +++ b/mods/redstone/init.lua @@ -40,6 +40,8 @@ local player_detection_table = {} -- 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 @@ -154,21 +156,22 @@ 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 @@ -653,8 +656,8 @@ local function player_detector_calculation() 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 @@ -789,10 +792,11 @@ minetest.register_craftitem("redstone:dust", { 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", @@ -820,6 +824,7 @@ for i = 0,8 do calculate(pos) end, after_destruct = function(pos) + print("test") data_injection(pos,nil) calculate(pos) end, diff --git a/mods/redstone/inverter.lua b/mods/redstone/inverter.lua index cca87cd..12f820f 100644 --- a/mods/redstone/inverter.lua +++ b/mods/redstone/inverter.lua @@ -3,6 +3,8 @@ minetest,vector = minetest,vector +local r_max = redstone.max_state + --[[ ██████╗ ███╗ ██╗ ██╔═══██╗████╗ ██║ @@ -62,7 +64,7 @@ redstone.register_activator({ 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), @@ -107,7 +109,7 @@ minetest.register_lbm({ 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", @@ -127,7 +129,7 @@ minetest.register_node("redstone:inverter_off", { 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), @@ -174,7 +176,7 @@ minetest.register_lbm({ 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), diff --git a/mods/redstone/lever.lua b/mods/redstone/lever.lua index 8498c80..d748466 100644 --- a/mods/redstone/lever.lua +++ b/mods/redstone/lever.lua @@ -3,6 +3,9 @@ local minetest,vector,math,pairs = minetest,vector,math,pairs + +local r_max = redstone.max_state + local excluded_nodes = { ["main:ironblock"]=true, ["main:ironblock_on"]=true, @@ -64,9 +67,9 @@ minetest.register_lbm({ 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) @@ -115,9 +118,9 @@ minetest.register_node("redstone:lever_off", { 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) diff --git a/mods/redstone/player_detector.lua b/mods/redstone/player_detector.lua index bef44ab..9838e94 100644 --- a/mods/redstone/player_detector.lua +++ b/mods/redstone/player_detector.lua @@ -3,8 +3,10 @@ minetest,ipairs,math = 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", diff --git a/mods/redstone/pressure_plate.lua b/mods/redstone/pressure_plate.lua index beaef50..5def16f 100644 --- a/mods/redstone/pressure_plate.lua +++ b/mods/redstone/pressure_plate.lua @@ -1,4 +1,7 @@ local minetest,ipairs,vector = minetest,ipairs,vector + +r_max + for level = 0,9 do local subtracter = 0 if level > 0 then subtracter = 1 end diff --git a/mods/redstone/repeater.lua b/mods/redstone/repeater.lua index 18b5920..1b63628 100644 --- a/mods/redstone/repeater.lua +++ b/mods/redstone/repeater.lua @@ -1,5 +1,7 @@ local minetest,vector = minetest,vector +local r_max = redstone.max_state + local max_timer = 7 for level = 0,max_timer do @@ -18,7 +20,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", @@ -48,7 +50,7 @@ minetest.register_node("redstone:repeater_on_"..level, { 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), @@ -84,7 +86,7 @@ minetest.register_node("redstone:repeater_on_"..level, { 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), @@ -115,7 +117,7 @@ minetest.register_lbm({ 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), @@ -175,7 +177,7 @@ minetest.register_node("redstone:repeater_off_"..level, { 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), diff --git a/mods/redstone/torch.lua b/mods/redstone/torch.lua index b808d09..ef37baf 100644 --- a/mods/redstone/torch.lua +++ b/mods/redstone/torch.lua @@ -1,5 +1,7 @@ local minetest,vector = minetest,vector +local r_max = redstone.max_state + -- Item definitions minetest.register_craftitem("redstone:torch", { description = "Redstone Torch", @@ -58,7 +60,7 @@ minetest.register_node("redstone:torch_floor", { }, on_construct = function(pos) - redstone.inject(pos,{torch=9}) + redstone.inject(pos,{torch=r_max}) redstone.update(pos) end, after_destruct = function(pos, oldnode) @@ -89,7 +91,7 @@ minetest.register_node("redstone:torch_wall", { 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) @@ -105,6 +107,6 @@ minetest.register_lbm({ 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 -- 2.44.0