Add Malay translation
[oweals/minetest_game.git] / mods / vessels / init.lua
1 -- vessels/init.lua
2
3 -- Minetest 0.4 mod: vessels
4 -- See README.txt for licensing and other information.
5
6 -- Load support for MT game translation.
7 local S = minetest.get_translator("vessels")
8
9
10 local vessels_shelf_formspec =
11         "size[8,7;]" ..
12         "list[context;vessels;0,0.3;8,2;]" ..
13         "list[current_player;main;0,2.85;8,1;]" ..
14         "list[current_player;main;0,4.08;8,3;8]" ..
15         "listring[context;vessels]" ..
16         "listring[current_player;main]" ..
17         default.get_hotbar_bg(0, 2.85)
18
19 local function update_vessels_shelf(pos)
20         local meta = minetest.get_meta(pos)
21         local inv = meta:get_inventory()
22         local invlist = inv:get_list("vessels")
23
24         local formspec = vessels_shelf_formspec
25         -- Inventory slots overlay
26         local vx, vy = 0, 0.3
27         local n_items = 0
28         for i = 1, 16 do
29                 if i == 9 then
30                         vx = 0
31                         vy = vy + 1
32                 end
33                 if not invlist or invlist[i]:is_empty() then
34                         formspec = formspec ..
35                                 "image[" .. vx .. "," .. vy .. ";1,1;vessels_shelf_slot.png]"
36                 else
37                         local stack = invlist[i]
38                         if not stack:is_empty() then
39                                 n_items = n_items + stack:get_count()
40                         end
41                 end
42                 vx = vx + 1
43         end
44         meta:set_string("formspec", formspec)
45         if n_items == 0 then
46                 meta:set_string("infotext", S("Empty Vessels Shelf"))
47         else
48                 meta:set_string("infotext", S("Vessels Shelf (@1 items)", n_items))
49         end
50 end
51
52 minetest.register_node("vessels:shelf", {
53         description = S("Vessels Shelf"),
54         tiles = {"default_wood.png", "default_wood.png", "default_wood.png",
55                 "default_wood.png", "vessels_shelf.png", "vessels_shelf.png"},
56         paramtype2 = "facedir",
57         is_ground_content = false,
58         groups = {choppy = 3, oddly_breakable_by_hand = 2, flammable = 3},
59         sounds = default.node_sound_wood_defaults(),
60
61         on_construct = function(pos)
62                 local meta = minetest.get_meta(pos)
63                 update_vessels_shelf(pos)
64                 local inv = meta:get_inventory()
65                 inv:set_size("vessels", 8 * 2)
66         end,
67         can_dig = function(pos,player)
68                 local inv = minetest.get_meta(pos):get_inventory()
69                 return inv:is_empty("vessels")
70         end,
71         allow_metadata_inventory_put = function(pos, listname, index, stack, player)
72                 if minetest.get_item_group(stack:get_name(), "vessel") ~= 0 then
73                         return stack:get_count()
74                 end
75                 return 0
76         end,
77         on_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
78                 minetest.log("action", player:get_player_name() ..
79                            " moves stuff in vessels shelf at ".. minetest.pos_to_string(pos))
80                 update_vessels_shelf(pos)
81         end,
82         on_metadata_inventory_put = function(pos, listname, index, stack, player)
83                 minetest.log("action", player:get_player_name() ..
84                            " moves stuff to vessels shelf at ".. minetest.pos_to_string(pos))
85                 update_vessels_shelf(pos)
86         end,
87         on_metadata_inventory_take = function(pos, listname, index, stack, player)
88                 minetest.log("action", player:get_player_name() ..
89                            " takes stuff from vessels shelf at ".. minetest.pos_to_string(pos))
90                 update_vessels_shelf(pos)
91         end,
92         on_blast = function(pos)
93                 local drops = {}
94                 default.get_inventory_drops(pos, "vessels", drops)
95                 drops[#drops + 1] = "vessels:shelf"
96                 minetest.remove_node(pos)
97                 return drops
98         end,
99 })
100
101 minetest.register_craft({
102         output = "vessels:shelf",
103         recipe = {
104                 {"group:wood", "group:wood", "group:wood"},
105                 {"group:vessel", "group:vessel", "group:vessel"},
106                 {"group:wood", "group:wood", "group:wood"},
107         }
108 })
109
110 minetest.register_node("vessels:glass_bottle", {
111         description = S("Empty Glass Bottle"),
112         drawtype = "plantlike",
113         tiles = {"vessels_glass_bottle.png"},
114         inventory_image = "vessels_glass_bottle.png",
115         wield_image = "vessels_glass_bottle.png",
116         paramtype = "light",
117         is_ground_content = false,
118         walkable = false,
119         selection_box = {
120                 type = "fixed",
121                 fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25}
122         },
123         groups = {vessel = 1, dig_immediate = 3, attached_node = 1},
124         sounds = default.node_sound_glass_defaults(),
125 })
126
127 minetest.register_craft( {
128         output = "vessels:glass_bottle 10",
129         recipe = {
130                 {"default:glass", "", "default:glass"},
131                 {"default:glass", "", "default:glass"},
132                 {"", "default:glass", ""}
133         }
134 })
135
136 minetest.register_node("vessels:drinking_glass", {
137         description = S("Empty Drinking Glass"),
138         drawtype = "plantlike",
139         tiles = {"vessels_drinking_glass.png"},
140         inventory_image = "vessels_drinking_glass_inv.png",
141         wield_image = "vessels_drinking_glass.png",
142         paramtype = "light",
143         is_ground_content = false,
144         walkable = false,
145         selection_box = {
146                 type = "fixed",
147                 fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25}
148         },
149         groups = {vessel = 1, dig_immediate = 3, attached_node = 1},
150         sounds = default.node_sound_glass_defaults(),
151 })
152
153 minetest.register_craft( {
154         output = "vessels:drinking_glass 14",
155         recipe = {
156                 {"default:glass", "", "default:glass"},
157                 {"default:glass", "", "default:glass"},
158                 {"default:glass", "default:glass", "default:glass"}
159         }
160 })
161
162 minetest.register_node("vessels:steel_bottle", {
163         description = S("Empty Heavy Steel Bottle"),
164         drawtype = "plantlike",
165         tiles = {"vessels_steel_bottle.png"},
166         inventory_image = "vessels_steel_bottle.png",
167         wield_image = "vessels_steel_bottle.png",
168         paramtype = "light",
169         is_ground_content = false,
170         walkable = false,
171         selection_box = {
172                 type = "fixed",
173                 fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25}
174         },
175         groups = {vessel = 1, dig_immediate = 3, attached_node = 1},
176         sounds = default.node_sound_defaults(),
177 })
178
179 minetest.register_craft( {
180         output = "vessels:steel_bottle 5",
181         recipe = {
182                 {"default:steel_ingot", "", "default:steel_ingot"},
183                 {"default:steel_ingot", "", "default:steel_ingot"},
184                 {"", "default:steel_ingot", ""}
185         }
186 })
187
188
189 -- Glass and steel recycling
190
191 minetest.register_craftitem("vessels:glass_fragments", {
192         description = S("Glass Fragments"),
193         inventory_image = "vessels_glass_fragments.png",
194 })
195
196 minetest.register_craft( {
197         type = "shapeless",
198         output = "vessels:glass_fragments",
199         recipe = {
200                 "vessels:glass_bottle",
201                 "vessels:glass_bottle",
202         },
203 })
204
205 minetest.register_craft( {
206         type = "shapeless",
207         output = "vessels:glass_fragments",
208         recipe = {
209                 "vessels:drinking_glass",
210                 "vessels:drinking_glass",
211         },
212 })
213
214 minetest.register_craft({
215         type = "cooking",
216         output = "default:glass",
217         recipe = "vessels:glass_fragments",
218 })
219
220 minetest.register_craft( {
221         type = "cooking",
222         output = "default:steel_ingot",
223         recipe = "vessels:steel_bottle",
224 })
225
226 minetest.register_craft({
227         type = "fuel",
228         recipe = "vessels:shelf",
229         burntime = 30,
230 })