]> git.lizzy.rs Git - Crafter.git/commitdiff
Make max redstone state a variable
authoroilboi <47129783+oilboi@users.noreply.github.com>
Fri, 3 Jul 2020 10:41:53 +0000 (06:41 -0400)
committeroilboi <47129783+oilboi@users.noreply.github.com>
Fri, 3 Jul 2020 10:41:53 +0000 (06:41 -0400)
mods/redstone/button.lua
mods/redstone/detector.lua
mods/redstone/init.lua
mods/redstone/inverter.lua
mods/redstone/lever.lua
mods/redstone/player_detector.lua
mods/redstone/pressure_plate.lua
mods/redstone/repeater.lua
mods/redstone/torch.lua

index d1b96f893c4507ec2432274c43adf27486150bad..d49166ebbc3389f1b8661d22fdc355abf543ae45 100644 (file)
@@ -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)
index 2dc3c8e13254b1913835f3d77f4926f9dfec3b48..9fb6e51d5e933819b4a10c1412bb2aa14458bdbb 100644 (file)
@@ -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)
index b9030461ab204cc63e99c3428f695c7155762846..79ffbe2fd7d2554e9cbde8a57a1ea81ab795775b 100644 (file)
@@ -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,
index cca87cd7ced6597c6ec32e8dc88de9e572078e9c..12f820f5d3303360b5d1fc016e2028c84d88c6ab 100644 (file)
@@ -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),
index 8498c8037511c4015ae67f65a467a5216639d6cb..d748466732a34a59729fc549b2cfb4d56062ddf1 100644 (file)
@@ -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)
index bef44abb48e6f70e06246fb428fc0661dec902ca..9838e9468d70393f784dffbedd335852e1914b92 100644 (file)
@@ -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",
index beaef502158a2d27b8f0fd1067d44d06422f771f..5def16f1b05a215a13908fad2d8dc812fde11e0f 100644 (file)
@@ -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
index 18b59200d6712fea82e54570dfaad0ce55578d5e..1b63628c6c5a051a49ac27314d14338d48604929 100644 (file)
@@ -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),
index b808d09e9c7b9e94d966d83333c39a27957ef39c..ef37bafd2d83efcbc7748e13b60ccbe9c91e41cf 100644 (file)
@@ -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