]> git.lizzy.rs Git - Crafter.git/blob - mods/redstone/light.lua
Fix floating torches
[Crafter.git] / mods / redstone / light.lua
1 local minetest = minetest
2
3 local colors = {
4   "white",
5   "yellow",
6   "green",
7   "blue",
8   "violet",
9   "red",
10   "orange",
11   "black"
12 }
13
14 --this allows for a more pale off state so players have more freedom to create different colors
15 for _,color in pairs(colors) do
16   minetest.register_node("redstone:light_on_"..color, {
17       description = color:gsub("^%l", string.upper).." Redstone Light",
18       tiles = {"redstone_light.png^[colorize:"..color..":200"},
19       drawtype = "normal",
20       light_source = 12,
21       groups = {stone = 1, hard = 1, pickaxe = 1, hand = 4,pathable = 1},
22       sounds = main.stoneSound({
23       footstep = {name = "glass_footstep", gain = 0.4},
24           dug =  {name = "break_glass", gain = 0.4},
25     }),
26       drop = "redstone:light_off_"..color,
27
28       on_construct = function(pos)
29         redstone.inject(pos,{
30           name = "redstone:light_on_"..color,
31           activator = true,
32         })
33         minetest.after(0,function()
34           redstone.update(pos)
35         end)
36       end,
37       after_destruct = function(pos, oldnode)
38         redstone.inject(pos,nil)
39       end
40   })
41
42   redstone.register_activator({
43     name = "redstone:light_on_"..color,
44     deactivate = function(pos)
45
46       minetest.swap_node(pos,{name="redstone:light_off_"..color})
47
48       redstone.inject(pos,{
49         name = "redstone:light_off_"..color,
50         activator = true,
51       })
52     end
53   })
54
55   minetest.register_lbm({
56     name = "redstone:light_on_"..color,
57     nodenames = {"redstone:light_on_"..color},
58     run_at_every_load = true,
59     action = function(pos)
60       redstone.inject(pos,{
61         name = "redstone:light_on_"..color,
62         activator = true,
63       })
64
65       minetest.after(0,function()
66         redstone.update(pos)
67       end)
68     end,
69   })
70
71
72
73   minetest.register_node("redstone:light_off_"..color, {
74       description = color:gsub("^%l", string.upper).." Redstone Light",
75       tiles = {"redstone_light.png^[colorize:"..color..":100"},
76       drawtype = "normal",
77       groups = {stone = 1, hard = 1, pickaxe = 1, hand = 4,pathable = 1,redstone_activation=1},
78       sounds = main.stoneSound({
79       footstep = {name = "glass_footstep", gain = 0.4},
80           dug =  {name = "break_glass", gain = 0.4},
81     }),
82       drop = "redstone:light_off_"..color,
83       
84
85       on_construct = function(pos)
86         redstone.inject(pos,{
87           name = "redstone:light_off_"..color,
88           activator = true,
89         })
90
91         minetest.after(0,function()
92           redstone.update(pos)
93         end)
94       end,
95       
96       after_destruct = function(pos, oldnode)
97           redstone.inject(pos,nil)
98       end,
99       after_place_node = function(pos, placer, itemstack, pointed_thing)
100         redstone.update(pos)
101       end
102   })
103
104
105   redstone.register_activator({
106     name = "redstone:light_off_"..color,
107     activate = function(pos)
108
109       minetest.swap_node(pos,{name="redstone:light_on_"..color})
110
111       redstone.inject(pos,{
112         name = "redstone:light_on_"..color,
113         activator = true,
114       })
115     end
116   })
117
118   minetest.register_lbm({
119     name = "redstone:light_off_"..color,
120     nodenames = {"redstone:light_off_"..color},
121     run_at_every_load = true,
122     action = function(pos)
123       redstone.inject(pos,{
124         name = "redstone:light_off_"..color,
125         activator = true,
126       })
127
128       minetest.after(0,function()
129         redstone.update(pos)
130       end)
131     end,
132   })
133
134
135
136   minetest.register_craft({
137     output = "redstone:light_off_"..color,
138     type = "shapeless",
139     recipe = {"main:glass","redstone:dust","dye:"..color},
140   })
141 end