]> git.lizzy.rs Git - Crafter.git/blob - mods/redstone/button.lua
a292f9b683c2803660c50ecf68108adda6f2c53e
[Crafter.git] / mods / redstone / button.lua
1 local minetest,table,vector = minetest,table,vector
2
3 minetest.register_node("redstone:button_off", {
4     description = "Button",
5     tiles = {"stone.png"},
6     groups = {stone = 1, hard = 1, pickaxe = 1, hand = 4,attached_node = 1,dig_immediate=1},
7     sounds = main.stoneSound(),
8     paramtype = "light",
9         paramtype2 = "wallmounted",
10         sunlight_propagates = true,
11         walkable = false,
12         drawtype= "nodebox",
13         drop="redstone:button_off",
14         node_box = {
15                 type = "fixed",
16                 fixed = {
17                                 --left front bottom right back top
18                                 {-0.25, -0.5,  -0.15, 0.25,  -0.3, 0.15},
19                         },
20                 },
21     on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
22                 minetest.swap_node(pos, {name="redstone:button_on",param2=node.param2})
23
24                 minetest.sound_play("lever", {pos=pos})
25
26                 local timer = minetest.get_node_timer(pos)
27                 timer:start(1.25)
28
29                 local dir = minetest.wallmounted_to_dir(node.param2)
30
31                 redstone.inject(pos,{torch=9})
32                 local pos2 = vector.add(dir,pos)
33                 redstone.inject(pos2,{torch=9})
34
35                 redstone.update(pos)
36                 redstone.update(pos2)
37         end,
38         after_destruct = function(pos, oldnode)
39                 redstone.inject(pos,nil)
40                 local dir = minetest.wallmounted_to_dir(oldnode.param2)
41                 local pos2 = vector.add(dir,pos)
42                 redstone.inject(pos2,nil)
43
44                 redstone.update(pos)
45                 redstone.update(pos2)
46         end,
47 })
48 minetest.register_node("redstone:button_on", {
49     description = "Button",
50     tiles = {"stone.png"},
51     groups = {stone = 1, hard = 1, pickaxe = 1, hand = 4,attached_node = 1,dig_immediate=1},
52     sounds = main.stoneSound(),
53     paramtype = "light",
54         paramtype2 = "wallmounted",
55         sunlight_propagates = true,
56         walkable = false,
57         drawtype= "nodebox",
58         drop="redstone:button_off",
59         node_box = {
60                 type = "fixed",
61                 fixed = {
62                                 --left front bottom right back top
63                                 {-0.25, -0.5,  -0.15, 0.25,  -0.45, 0.15},
64                         },
65                 },
66     on_timer = function(pos, elapsed)
67                 minetest.sound_play("lever", {pos=pos,pitch=0.8})
68
69                 local node = minetest.get_node(pos)
70                 minetest.swap_node(pos, {name="redstone:button_off",param2=node.param2})
71
72                 redstone.inject(pos,nil)
73                 local param2 = minetest.get_node(pos).param2
74                 local dir = minetest.wallmounted_to_dir(param2)
75                 local pos2 = vector.add(dir,pos)
76                 redstone.inject(pos2,nil)
77
78                 redstone.update(pos)
79                 redstone.update(pos2)
80                 
81         end,
82         after_destruct = function(pos, oldnode)
83                 redstone.inject(pos,nil)
84                 local dir = minetest.wallmounted_to_dir(oldnode.param2)
85                 local pos2 = vector.add(dir,pos)
86                 redstone.inject(pos2,nil)
87
88                 redstone.update(pos)
89                 redstone.update(pos2)
90         end,
91 })
92
93 minetest.register_lbm({
94         name = "redstone:button_on",
95         nodenames = {"redstone:button_on"},
96         run_at_every_load = true,
97         action = function(pos)
98                 local dir = minetest.wallmounted_to_dir(node.param2)
99
100                 redstone.inject(pos,{torch=9})
101                 local pos2 = vector.add(dir,pos)
102                 redstone.inject(pos2,{torch=9})
103
104                 minetest.after(0,function()
105                         redstone.update(pos)
106                         redstone.update(pos2)
107                 end)
108         end,
109 })