]> git.lizzy.rs Git - Crafter.git/blob - mods/redstone/capacitors.lua
Fix ironblocks creating stack overflow
[Crafter.git] / mods / redstone / capacitors.lua
1 minetest.override_item("main:ironblock",{
2     on_construct = function(pos)
3         redstone.inject(pos,{
4           name = "main:ironblock",
5           activator = true,
6           capacitor = 0,
7         })
8         minetest.after(0,function()
9             redstone.update(pos)
10             redstone.update(pos,true)
11         end)
12     end,
13     after_destruct = function(pos, oldnode)
14         redstone.inject(pos,nil)
15         --redstone.update(pos)
16         minetest.after(0,function()
17             redstone.update(pos,true)
18         end)
19     end
20 })
21
22 redstone.register_activator({
23     name = "main:ironblock",
24     activate = function(pos)
25         minetest.swap_node(pos,{name="main:ironblock_on"})
26         redstone.inject(pos,{
27             name = "main:ironblock_on",
28             capacitor = 1,
29             source    = true,
30             activator = true,
31         })
32         redstone.update(pos)
33         redstone.update(pos,true)
34     end,
35   })
36
37 redstone.register_capacitor({
38     name = "main:ironblock",
39     on   = "main:ironblock_on",
40     off  = "main:ironblock",
41 })
42
43 minetest.register_lbm({
44     name = ":main:ironblock",
45     nodenames = {"main:ironblock"},
46     run_at_every_load = true,
47     action = function(pos)
48         redstone.inject(pos,{
49             name = "main:ironblock",
50             activator = true,
51             capacitor = 0,
52           })
53     end,
54 })
55
56
57 minetest.register_node(":main:ironblock_on", {
58     description = "Iron Block Activated",
59     tiles = {"ironblock.png^[colorize:white:100"},
60     groups = {stone = 2, pathable = 1},
61     sounds = main.stoneSound(),
62     light_source = 10,
63     drop = {
64         max_items = 1,
65         items= {
66             {
67                 rarity = 0,
68                 tools = {"main:coalpick","main:stonepick","main:ironpick","main:lapispick","main:goldpick","main:diamondpick","main:emeraldpick","main:sapphirepick","main:rubypick"},
69                 items = {"main:ironblock"},
70             },
71             },
72         },
73     on_construct = function(pos)
74         redstone.inject(pos,{
75             name = "main:ironblock_on",
76             activator = true,
77             source = true,
78             capacitor = 1,
79         })
80         minetest.after(0,function()
81             redstone.update(pos)
82             redstone.update(pos,true)
83         end)
84     end,
85     after_destruct = function(pos, oldnode)
86         redstone.inject(pos,nil)
87         --redstone.update(pos)
88         minetest.after(0,function()
89             redstone.update(pos,true)
90         end)
91     end,
92 })
93
94
95 redstone.register_activator({
96     name = "main:ironblock_on",
97     deactivate = function(pos)
98
99         minetest.swap_node(pos,{name="main:ironblock"})
100         redstone.inject(pos,{
101             name = "main:ironblock",
102             capacitor = 0,
103             activator = true,
104         })
105         redstone.update(pos)
106         redstone.update(pos,true)
107     end,
108 })
109
110 redstone.register_capacitor({
111     name = "main:ironblock_on",
112     on   = "main:ironblock_on",
113     off  = "main:ironblock",
114 })
115
116
117 minetest.register_lbm({
118     name = ":main:ironblock_on",
119     nodenames = {"main:ironblock_on"},
120     run_at_every_load = true,
121     action = function(pos)
122         redstone.inject(pos,{
123             name = "main:ironblock",
124             activator = true,
125             capacitor = 1,
126         })
127     end,
128 })