]> git.lizzy.rs Git - Crafter.git/blob - mods/redstone/breaker.lua
Add in redstone breaker
[Crafter.git] / mods / redstone / breaker.lua
1 minetest.register_node("redstone:breaker_off", {
2     description = "Breaker",
3     tiles = {"redstone_piston.png^[invert:rgb",
4     "redstone_piston.png^[transformR180^[invert:rgb",
5     "redstone_piston.png^[transformR270^[invert:rgb",
6     "redstone_piston.png^[transformR90^[invert:rgb",
7     "wood.png^[invert:rgb",
8     "stone.png^[invert:rgb"},
9     paramtype2 = "facedir",
10     groups = {stone = 1, hard = 1, pickaxe = 1, hand = 4,pathable = 1,redstone_activation=1},
11     sounds = main.stoneSound(),
12     drop = "redstone:breaker_off",
13     paramtype = "light",
14         sunlight_propagates = true,
15         --reverse the direction to face the player
16         on_construct = function(pos)
17                 redstone.inject(pos,{
18                         name = "redstone:breaker_off",
19                         activator = true,
20                 })
21                 redstone.update(pos)
22         end,
23         on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
24                 local look = clicker:get_look_dir()
25                 look = vector.multiply(look,-1)
26                 local dir = minetest.dir_to_facedir(look, true)
27                 minetest.swap_node(pos,{name="redstone:breaker_off",param2=dir})
28                 redstone.update(pos)
29         end,
30     after_place_node = function(pos, placer, itemstack, pointed_thing)
31                 local look = placer:get_look_dir()
32                 look = vector.multiply(look,-1)
33                 local dir = minetest.dir_to_facedir(look, true)
34                 minetest.swap_node(pos,{name="redstone:breaker_off",param2=dir})
35         end,
36         on_destruct = function(pos, oldnode)
37                 redstone.inject(pos,nil)
38     end,
39 })
40
41 redstone.register_activator({
42         name = "redstone:breaker_off",
43     activate = function(pos)
44        
45         local node = minetest.get_node(pos)
46
47         minetest.swap_node(pos,{name="redstone:breaker_on",param2=node.param2})
48
49         local dir = minetest.facedir_to_dir(node.param2)
50
51         redstone.inject(pos,{
52                         name = "redstone:breaker_on",
53                         activator = true,
54                 })
55
56         pos = vector.add(pos,dir)
57
58         node = minetest.get_node(pos)
59
60         node = minetest.get_node_drops(node, "main:rubypick")
61
62         if type(node) == "table" then
63             for _,nodey in pairs(node) do
64                 minetest.throw_item(pos,nodey)
65             end
66         else
67             minetest.throw_item(pos,node)
68         end
69         minetest.remove_node(pos)
70
71         redstone.update(pos)
72         end
73 })
74
75 minetest.register_lbm({
76         name = "redstone:breaker_off",
77         nodenames = {"redstone:breaker_off"},
78         run_at_every_load = true,
79         action = function(pos)
80                 redstone.inject(pos,{
81                         name = "redstone:breaker_off",
82                         activator = true,
83         })
84         redstone.update(pos)
85         end,
86 })
87
88
89 minetest.register_node("redstone:breaker_on", {
90     description = "Breaker",
91     tiles = {"redstone_piston.png^[invert:rgb^[colorize:red:100",
92     "redstone_piston.png^[transformR180^[invert:rgb^[colorize:red:100",
93     "redstone_piston.png^[transformR270^[invert:rgb^[colorize:red:100",
94     "redstone_piston.png^[transformR90^[invert:rgb^[colorize:red:100",
95     "wood.png^[invert:rgb^[colorize:red:100",
96     "stone.png^[invert:rgb^[colorize:red:100"},
97     paramtype2 = "facedir",
98     groups = {stone = 1, hard = 1, pickaxe = 1, hand = 4,pathable = 1,redstone_activation=1},
99     sounds = main.stoneSound(),
100     drop = "redstone:breaker_off",
101     paramtype = "light",
102         sunlight_propagates = true,
103         --reverse the direction to face the player
104         on_construct = function(pos)
105                 redstone.inject(pos,{
106                         name = "redstone:breaker_on",
107                         activator = true,
108                 })
109                 redstone.update(pos)
110         end,
111         on_destruct = function(pos)
112                 redstone.inject(pos,nil)
113     end,
114 })
115
116
117 redstone.register_activator({
118         name = "redstone:breaker_on",
119     deactivate = function(pos)
120         local node = minetest.get_node(pos)
121
122         minetest.swap_node(pos,{name="redstone:breaker_off",param2=node.param2})
123         redstone.inject(pos,{
124                         name = "redstone:breaker_off",
125                         activator = true,
126         })
127         redstone.update(pos)
128     end,
129 })
130
131 minetest.register_lbm({
132         name = "redstone:breaker_on",
133         nodenames = {"redstone:breaker_on"},
134         run_at_every_load = true,
135         action = function(pos)
136                 redstone.inject(pos,{
137                         name = "redstone:breaker_on",
138                         activator = true,
139                 })
140                 redstone.update(pos)
141         end,
142 })