]> git.lizzy.rs Git - Crafter.git/commitdiff
Add in colored redstone lights
authoroilboi <47129783+oilboi@users.noreply.github.com>
Sun, 28 Jun 2020 08:09:15 +0000 (04:09 -0400)
committeroilboi <47129783+oilboi@users.noreply.github.com>
Sun, 28 Jun 2020 08:09:15 +0000 (04:09 -0400)
mods/redstone/button.lua
mods/redstone/craft.lua
mods/redstone/init.lua
mods/redstone/lever.lua
mods/redstone/light.lua
mods/redstone/textures/redstone_light.png

index d6310fe42da45805f113b3d4e2081c252a2d7d3e..a292f9b683c2803660c50ecf68108adda6f2c53e 100644 (file)
@@ -89,3 +89,21 @@ minetest.register_node("redstone:button_on", {
                redstone.update(pos2)
        end,
 })
+
+minetest.register_lbm({
+       name = "redstone:button_on",
+       nodenames = {"redstone:button_on"},
+       run_at_every_load = true,
+       action = function(pos)
+               local dir = minetest.wallmounted_to_dir(node.param2)
+
+               redstone.inject(pos,{torch=9})
+               local pos2 = vector.add(dir,pos)
+               redstone.inject(pos2,{torch=9})
+
+               minetest.after(0,function()
+                       redstone.update(pos)
+                       redstone.update(pos2)
+               end)
+       end,
+})
index 36510294a2ea183a71031e3aba474c61fec05814..4edd84b8b35cde3a26aae053ab96dd3226943ad9 100644 (file)
@@ -50,11 +50,6 @@ minetest.register_craft({
                {"main:stone","main:stone","main:stone"},
        }
 })
-minetest.register_craft({
-       output = "redstone:light_off",
-       type = "shapeless",
-       recipe = {"main:glass","redstone:dust"},
-})
 
 minetest.register_craft({
        output = "redstone:piston_off",
index 423ec4c5e6f9c488933b39443d6df4e99d7f1e8f..2bb0d25cf0cfe3e7b2782936bda52be08e4cd072 100644 (file)
@@ -49,7 +49,7 @@ dofile(path.."/torch.lua")
 dofile(path.."/lever.lua")
 dofile(path.."/button.lua")
 dofile(path.."/repeater.lua")
---dofile(path.."/light.lua")
+dofile(path.."/light.lua")
 --dofile(path.."/piston.lua")
 --dofile(path.."/comparator.lua")
 --dofile(path.."/craft.lua")
@@ -137,21 +137,29 @@ end
 
 
 -- activators
-local n
+local n_pos
 local temp_pool
+local temp_pool2
 local non_directional_activator = function(pos)
+       temp_pool = pool[pos.x][pos.y][pos.z]
        for _,order in pairs(order) do
                n_pos = add_vec(pos,order)
-               temp_pool = pool[n.x][n.y][n.z]
-               if temp_pool then
-                       --if temp_pool.dust and temp_pool.dust > 0 or 
-                       --print(get_node(add_vec(new_vec(x,y,z),pos)).name)
-                       if get_item_group(get_node(add_vec(new_vec(order.x,order.y,order.z),pos)).name, "redstone_power") > 0 then
-                               return(1)
+               if pool[n_pos.x] and pool[n_pos.x][n_pos.y] and pool[n_pos.x][n_pos.y][n_pos.z] then
+                       temp_pool2 = pool[n_pos.x][n_pos.y][n_pos.z]
+                       if temp_pool2 then
+                               if (not temp_pool2.directional_activator and temp_pool2.torch) or 
+                               (temp_pool2.dust and temp_pool2.dust > 0) then
+                                       if activator_table[temp_pool.name].activate then
+                                               activator_table[temp_pool.name].activate(pos)
+                                       end
+                                       return
+                               end
                        end
                end
        end     
-       return(0)
+       if activator_table[temp_pool.name].deactivate then
+               activator_table[temp_pool.name].deactivate(pos)
+       end
 end
 
 -- directional activators
index c9c9f0748546a282cc7881508c09cfae20809e47..807003c9787b9a8bb2ceff29777d6f98526f3ac7 100644 (file)
@@ -49,6 +49,22 @@ minetest.register_node("redstone:lever_on", {
        end,
 })
 
+minetest.register_lbm({
+       name = "redstone:lever_on",
+       nodenames = {"redstone:lever_on"},
+       run_at_every_load = true,
+       action = function(pos)
+               local dir = minetest.wallmounted_to_dir(node.param2)
+               redstone.inject(pos,{torch=9})
+               local pos2 = vector.add(dir,pos)
+               redstone.inject(pos2,{torch=9})
+               minetest.after(0,function()
+                       redstone.update(pos)
+                       redstone.update(pos2)
+               end)
+       end,
+})
+
 
 
 minetest.register_node("redstone:lever_off", {
@@ -92,4 +108,4 @@ minetest.register_node("redstone:lever_off", {
                redstone.update(pos)
                redstone.update(pos2)
        end,
-})
+})
\ No newline at end of file
index 0ce26b8114322ad865d24ba98e2caa4b4028c3cd..cb0096fc22d5d278a813f6da93834b7b70805372 100644 (file)
 local minetest = minetest
-minetest.register_node("redstone:light_on", {
-    description = "Redstone Light",
-    tiles = {"redstone_light.png"},
-    drawtype = "normal",
-    light_source = 12,
-    groups = {stone = 1, hard = 1, pickaxe = 1, hand = 4,pathable = 1,redstone_activation=1},
-    sounds = main.stoneSound({
-               footstep = {name = "glass_footstep", gain = 0.4},
-        dug =  {name = "break_glass", gain = 0.4},
-       }),
-    drop = "redstone:light_off",
-    redstone_activation = function(pos)
+
+local colors = {
+  "white",
+  "yellow",
+  "green",
+  "blue",
+  "violet",
+  "red",
+  "orange",
+  "black"
+}
+
+--this allows for a more pale off state so players have more freedom to create different colors
+for _,color in pairs(colors) do
+  minetest.register_node("redstone:light_on_"..color, {
+      description = color:gsub("^%l", string.upper).." Redstone Light",
+      tiles = {"redstone_light.png^[colorize:"..color..":200"},
+      drawtype = "normal",
+      light_source = 12,
+      groups = {stone = 1, hard = 1, pickaxe = 1, hand = 4,pathable = 1},
+      sounds = main.stoneSound({
+      footstep = {name = "glass_footstep", gain = 0.4},
+          dug =  {name = "break_glass", gain = 0.4},
+    }),
+      drop = "redstone:light_off_"..color,
+
+      after_place_node = function(pos, placer, itemstack, pointed_thing)
+        redstone.inject(pos,{
+          name = "redstone:light_on_"..color,
+          activator = true,
+        })
+
+        redstone.update(pos)
+      end,
+      after_destruct = function(pos, oldnode)
+        redstone.inject(pos,nil)
+        redstone.update(pos)
+      end
+  })
+
+  redstone.register_activator({
+    name = "redstone:light_on_"..color,
+    deactivate = function(pos)
+
+      minetest.swap_node(pos,{name="redstone:light_off_"..color})
+
+      redstone.inject(pos,{
+        name = "redstone:light_off_"..color,
+        activator = true,
+      })
+    end
+  })
+
+  minetest.register_lbm({
+    name = "redstone:light_on_"..color,
+    nodenames = {"redstone:light_on_"..color},
+    run_at_every_load = true,
+    action = function(pos)
+      redstone.inject(pos,{
+        name = "redstone:light_on_"..color,
+        activator = true,
+      })
+
+      minetest.after(0,function()
+        redstone.update(pos)
+      end)
     end,
-    redstone_deactivation = function(pos)
-    minetest.set_node(pos,{name="redstone:light_off"})
-    
+  })
+
+
+
+  minetest.register_node("redstone:light_off_"..color, {
+      description = color:gsub("^%l", string.upper).." Redstone Light",
+      tiles = {"redstone_light.png^[colorize:"..color..":100"},
+      drawtype = "normal",
+      groups = {stone = 1, hard = 1, pickaxe = 1, hand = 4,pathable = 1,redstone_activation=1},
+      sounds = main.stoneSound({
+      footstep = {name = "glass_footstep", gain = 0.4},
+          dug =  {name = "break_glass", gain = 0.4},
+    }),
+      drop = "redstone:light_off_"..color,
+      
+
+      after_place_node = function(pos, placer, itemstack, pointed_thing)
+        redstone.inject(pos,{
+          name = "redstone:light_off_"..color,
+          activator = true,
+        })
+
+        redstone.update(pos)
+      end,
+      
+      after_destruct = function(pos, oldnode)
+        redstone.inject(pos,nil)
+        redstone.update(pos)
+      end
+  })
+
+
+  redstone.register_activator({
+    name = "redstone:light_off_"..color,
+    activate = function(pos)
+
+      minetest.swap_node(pos,{name="redstone:light_on_"..color})
+
+      redstone.inject(pos,{
+        name = "redstone:light_on_"..color,
+        activator = true,
+      })
+    end
+  })
+
+  minetest.register_lbm({
+    name = "redstone:light_off_"..color,
+    nodenames = {"redstone:light_off_"..color},
+    run_at_every_load = true,
+    action = function(pos)
+      redstone.inject(pos,{
+        name = "redstone:light_off_"..color,
+        activator = true,
+      })
+
+      minetest.after(0,function()
+        redstone.update(pos)
+      end)
     end,
-})
-minetest.register_node("redstone:light_off", {
-    description = "Redstone Light",
-    tiles = {"redstone_light.png"},
-    drawtype = "normal",
-    groups = {stone = 1, hard = 1, pickaxe = 1, hand = 4,pathable = 1,redstone_activation=1},
-    sounds = main.stoneSound({
-               footstep = {name = "glass_footstep", gain = 0.4},
-        dug =  {name = "break_glass", gain = 0.4},
-       }),
-    drop = "redstone:light_off",
-    redstone_activation = function(pos)
-               minetest.set_node(pos,{name="redstone:light_on"})
-    end,
-    redstone_deactivation = function(pos)
-    end,
-})
+  })
+
+
+
+  minetest.register_craft({
+    output = "redstone:light_off_"..color,
+    type = "shapeless",
+    recipe = {"main:glass","redstone:dust","dye:"..color},
+  })
+end
\ No newline at end of file
index 9efc68fe02943fa4897a6aa53af5214364853144..b7e7c71c41ec9dcb2deeae1023024f9c38b8b60a 100644 (file)
Binary files a/mods/redstone/textures/redstone_light.png and b/mods/redstone/textures/redstone_light.png differ