]> git.lizzy.rs Git - Crafter.git/blob - mods/redstone/inverter.lua
Fix repeaters
[Crafter.git] / mods / redstone / inverter.lua
1 local minetest,vector = minetest,vector
2 --inverts redstone signal
3 minetest.register_node("redstone:inverter_on", {
4     description = "Redstone Inverter",
5     tiles = {"repeater_on.png"},
6     groups = {stone = 1, hard = 1, pickaxe = 1, hand = 4,attached_node = 1,redstone_activation_directional=1},
7     sounds = main.stoneSound(),
8     paramtype = "light",
9         paramtype2 = "facedir",
10         sunlight_propagates = true,
11         walkable = false,
12         drawtype= "nodebox",
13         drop="redstone:inverter_off",
14         node_box = {
15                 type = "fixed",
16                 fixed = {
17                                 --left  front  bottom right back top
18                                 {-0.5, -0.5,  -0.5, 0.5,  -0.3, 0.5}, --base
19                                 {-0.2, -0.5,  0.2, 0.2,  0.1, 0.4}, --output post
20                         },
21                 },
22         redstone_deactivation = function(pos)
23                 local param2 = minetest.get_node(pos).param2
24                 minetest.swap_node(pos,{name="redstone:inverter_off",param2=param2})
25
26                 local dir = minetest.facedir_to_dir(param2)
27                 minetest.after(0,function()
28                         redstone.collect_info(vector.add(pos,dir))
29                         redstone.collect_info(vector.subtract(pos,dir))
30                 end)
31         end,
32         after_destruct = function(pos, oldnode)
33                 redstone.collect_info(pos)
34         end
35 })
36
37 minetest.register_node("redstone:inverter_off", {
38     description = "Redstone Inverter",
39     tiles = {"repeater_off.png"},
40     groups = {stone = 1, hard = 1, pickaxe = 1, hand = 4,attached_node = 1,redstone_activation_directional=1,torch_directional=1,redstone_power=9},
41     sounds = main.stoneSound(),
42     paramtype = "light",
43         paramtype2 = "facedir",
44         sunlight_propagates = true,
45         walkable = false,
46         drawtype= "nodebox",
47         drop="redstone:inverter_off",
48         node_box = {
49                 type = "fixed",
50                 fixed = {
51                                 --left  front  bottom right back top
52                                 {-0.5, -0.5,  -0.5, 0.5,  -0.3, 0.5}, --base
53                                 {-0.2, -0.5,  0.2, 0.2,  0.1, 0.4}, --output post
54                         },
55                 },
56         redstone_activation = function(pos)
57                 local param2 = minetest.get_node(pos).param2
58                 minetest.swap_node(pos,{name="redstone:inverter_on",param2=param2})
59                 local dir = minetest.facedir_to_dir(param2)
60                 minetest.after(0,function()
61                         redstone.collect_info(vector.add(pos,dir))
62                         redstone.collect_info(vector.subtract(pos,dir))
63                 end)
64         end,
65         after_place_node = function(pos, placer, itemstack, pointed_thing)
66                 redstone.collect_info(pos)
67         end,
68         after_destruct = function(pos, oldnode)
69                 redstone.collect_info(pos)
70         end
71 })
72
73 minetest.register_lbm({
74         name = "redstone:startupinverter",
75         nodenames = {"redstone:inverter_on"},
76         run_at_every_load = true,
77         action = function(pos)
78                 print("collecting info on")
79                 local param2 = minetest.get_node(pos).param2
80                 local dir = minetest.facedir_to_dir(param2)
81                 redstone.collect_info(vector.add(pos,dir))
82                 redstone.collect_info(vector.subtract(pos,dir))
83         end,
84 })
85
86 minetest.register_lbm({
87         name = "redstone:also_startup_inverter",
88         nodenames = {"redstone:inverter_off"},
89         run_at_every_load = true,
90         action = function(pos)
91                 print("collecting info off")
92                 local param2 = minetest.get_node(pos).param2
93                 local dir = minetest.facedir_to_dir(param2)
94                 redstone.collect_info(vector.add(pos,dir))
95                 redstone.collect_info(vector.subtract(pos,dir))
96         end,
97 })