Default/functions: Reduce lavacooling ABM/sound overload
[oweals/minetest_game.git] / mods / vessels / init.lua
1 -- Minetest 0.4 mod: vessels
2 -- See README.txt for licensing and other information.
3
4 local vessels_shelf_formspec =
5         "size[8,7;]"..
6         default.gui_bg..
7         default.gui_bg_img..
8         default.gui_slots..
9         "list[context;vessels;0,0.3;8,2;]"..
10         "list[current_player;main;0,2.85;8,1;]"..
11         "list[current_player;main;0,4.08;8,3;8]"..
12         "listring[context;vessels]"..
13         "listring[current_player;main]"..
14         default.get_hotbar_bg(0,2.85)
15
16 minetest.register_node("vessels:shelf", {
17         description = "Vessels shelf",
18         tiles = {"default_wood.png", "default_wood.png", "default_wood.png^vessels_shelf.png"},
19         is_ground_content = false,
20         groups = {choppy=3,oddly_breakable_by_hand=2,flammable=3},
21         sounds = default.node_sound_wood_defaults(),
22
23         on_construct = function(pos)
24                 local meta = minetest.get_meta(pos)
25                 meta:set_string("formspec", vessels_shelf_formspec)
26                 local inv = meta:get_inventory()
27                 inv:set_size("vessels", 8*2)
28         end,
29         can_dig = function(pos,player)
30                 local meta = minetest.get_meta(pos);
31                 local inv = meta:get_inventory()
32                 return inv:is_empty("vessels")
33         end,
34
35         allow_metadata_inventory_put = function(pos, listname, index, stack, player)
36                 local meta = minetest.get_meta(pos)
37                 local inv = meta:get_inventory()
38                 local to_stack = inv:get_stack(listname, index)
39                 if listname == "vessels" then
40                         if minetest.get_item_group(stack:get_name(), "vessel") ~= 0
41                                         and to_stack:is_empty() then
42                                 return 1
43                         else
44                                 return 0
45                         end
46                 end
47         end,
48
49         allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
50                 local meta = minetest.get_meta(pos)
51                 local inv = meta:get_inventory()
52                 local stack = inv:get_stack(from_list, from_index)
53                 local to_stack = inv:get_stack(to_list, to_index)
54                 if to_list == "vessels" then
55                         if minetest.get_item_group(stack:get_name(), "vessel") ~= 0 
56                                         and to_stack:is_empty() then
57                                 return 1
58                         else
59                                 return 0
60                         end
61                 end
62         end,
63
64         on_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
65                 minetest.log("action", player:get_player_name()..
66                            " moves stuff in vessels shelf at "..minetest.pos_to_string(pos))
67         end,
68         on_metadata_inventory_put = function(pos, listname, index, stack, player)
69                 minetest.log("action", player:get_player_name()..
70                            " moves stuff to vessels shelf at "..minetest.pos_to_string(pos))
71         end,
72         on_metadata_inventory_take = function(pos, listname, index, stack, player)
73                 minetest.log("action", player:get_player_name()..
74                            " takes stuff from vessels shelf at "..minetest.pos_to_string(pos))
75         end,
76 })
77
78 minetest.register_craft({
79         output = 'vessels:shelf',
80         recipe = {
81                 {'group:wood', 'group:wood', 'group:wood'},
82                 {'group:vessel', 'group:vessel', 'group:vessel'},
83                 {'group:wood', 'group:wood', 'group:wood'},
84         }
85 })
86
87 minetest.register_node("vessels:glass_bottle", {
88         description = "Glass Bottle (empty)",
89         drawtype = "plantlike",
90         tiles = {"vessels_glass_bottle.png"},
91         inventory_image = "vessels_glass_bottle_inv.png",
92         wield_image = "vessels_glass_bottle.png",
93         paramtype = "light",
94         is_ground_content = false,
95         walkable = false,
96         selection_box = {
97                 type = "fixed",
98                 fixed = {-0.25, -0.5, -0.25, 0.25, 0.4, 0.25}
99         },
100         groups = {vessel=1,dig_immediate=3,attached_node=1},
101         sounds = default.node_sound_glass_defaults(),
102 })
103
104 minetest.register_craft( {
105         output = "vessels:glass_bottle 10",
106         recipe = {
107                 { "default:glass", "", "default:glass" },
108                 { "default:glass", "", "default:glass" },
109                 { "", "default:glass", "" }
110         }
111 })
112
113 minetest.register_node("vessels:drinking_glass", {
114         description = "Drinking Glass (empty)",
115         drawtype = "plantlike",
116         tiles = {"vessels_drinking_glass.png"},
117         inventory_image = "vessels_drinking_glass_inv.png",
118         wield_image = "vessels_drinking_glass.png",
119         paramtype = "light",
120         is_ground_content = false,
121         walkable = false,
122         selection_box = {
123                 type = "fixed",
124                 fixed = {-0.25, -0.5, -0.25, 0.25, 0.4, 0.25}
125         },
126         groups = {vessel=1,dig_immediate=3,attached_node=1},
127         sounds = default.node_sound_glass_defaults(),
128 })
129
130 minetest.register_craft( {
131         output = "vessels:drinking_glass 14",
132         recipe = {
133                 { "default:glass", "", "default:glass" },
134                 { "default:glass", "", "default:glass" },
135                 { "default:glass", "default:glass", "default:glass" }
136         }
137 })
138
139 minetest.register_node("vessels:steel_bottle", {
140         description = "Heavy Steel Bottle (empty)",
141         drawtype = "plantlike",
142         tiles = {"vessels_steel_bottle.png"},
143         inventory_image = "vessels_steel_bottle_inv.png",
144         wield_image = "vessels_steel_bottle.png",
145         paramtype = "light",
146         is_ground_content = false,
147         walkable = false,
148         selection_box = {
149                 type = "fixed",
150                 fixed = {-0.25, -0.5, -0.25, 0.25, 0.4, 0.25}
151         },
152         groups = {vessel=1,dig_immediate=3,attached_node=1},
153         sounds = default.node_sound_defaults(),
154 })
155
156 minetest.register_craft( {
157         output = "vessels:steel_bottle 5",
158         recipe = {
159                 { "default:steel_ingot", "", "default:steel_ingot" },
160                 { "default:steel_ingot", "", "default:steel_ingot" },
161                 { "", "default:steel_ingot", "" }
162         }
163 })
164
165
166 -- Make sure we can recycle them
167
168 minetest.register_craftitem("vessels:glass_fragments", {
169         description = "Pile of Glass Fragments",
170         inventory_image = "vessels_glass_fragments.png",
171 })
172
173 minetest.register_craft( {
174         type = "shapeless",
175         output = "vessels:glass_fragments",
176         recipe = {
177                 "vessels:glass_bottle",
178                 "vessels:glass_bottle",
179         },
180 })
181
182 minetest.register_craft( {
183         type = "shapeless",
184         output = "vessels:glass_fragments",
185         recipe = {
186                 "vessels:drinking_glass",
187                 "vessels:drinking_glass",
188         },
189 })
190
191 minetest.register_craft({
192         type = "cooking",
193         output = "default:glass",
194         recipe = "vessels:glass_fragments",
195 })
196
197 minetest.register_craft( {
198         type = "cooking",
199         output = "default:steel_ingot",
200         recipe = "vessels:steel_bottle",
201 })
202