Default, vessels: Darken shelf empty slot icons
[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 -- Inventory slots overlay
17 local vx, vy = 0, 0.3
18 for i = 1, 16 do
19         if i == 9 then
20                 vx = 0
21                 vy = vy + 1
22         end
23         vessels_shelf_formspec = vessels_shelf_formspec ..
24                 "image[" .. vx .. "," .. vy .. ";1,1;vessels_shelf_slot.png]"
25         vx = vx + 1
26 end
27
28 minetest.register_node("vessels:shelf", {
29         description = "Vessels Shelf",
30         tiles = {"default_wood.png", "default_wood.png", "default_wood.png",
31                 "default_wood.png", "vessels_shelf.png", "vessels_shelf.png"},
32         paramtype2 = "facedir",
33         is_ground_content = false,
34         groups = {choppy = 3, oddly_breakable_by_hand = 2, flammable = 3},
35         sounds = default.node_sound_wood_defaults(),
36
37         on_construct = function(pos)
38                 local meta = minetest.get_meta(pos)
39                 meta:set_string("formspec", vessels_shelf_formspec)
40                 local inv = meta:get_inventory()
41                 inv:set_size("vessels", 8 * 2)
42         end,
43         can_dig = function(pos,player)
44                 local inv = minetest.get_meta(pos):get_inventory()
45                 return inv:is_empty("vessels")
46         end,
47         allow_metadata_inventory_put = function(pos, listname, index, stack, player)
48                 if minetest.get_item_group(stack:get_name(), "vessel") ~= 0 then
49                         return stack:get_count()
50                 end
51                 return 0
52         end,
53         on_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
54                 minetest.log("action", player:get_player_name() ..
55                            " moves stuff in vessels shelf at ".. minetest.pos_to_string(pos))
56         end,
57         on_metadata_inventory_put = function(pos, listname, index, stack, player)
58                 minetest.log("action", player:get_player_name() ..
59                            " moves stuff to vessels shelf at ".. minetest.pos_to_string(pos))
60         end,
61         on_metadata_inventory_take = function(pos, listname, index, stack, player)
62                 minetest.log("action", player:get_player_name() ..
63                            " takes stuff from vessels shelf at ".. minetest.pos_to_string(pos))
64         end,
65         on_blast = function(pos)
66                 local drops = {}
67                 default.get_inventory_drops(pos, "vessels", drops)
68                 drops[#drops + 1] = "vessels:shelf"
69                 minetest.remove_node(pos)
70                 return drops
71         end,
72 })
73
74 minetest.register_craft({
75         output = "vessels:shelf",
76         recipe = {
77                 {"group:wood", "group:wood", "group:wood"},
78                 {"group:vessel", "group:vessel", "group:vessel"},
79                 {"group:wood", "group:wood", "group:wood"},
80         }
81 })
82
83 minetest.register_node("vessels:glass_bottle", {
84         description = "Glass Bottle (empty)",
85         drawtype = "plantlike",
86         tiles = {"vessels_glass_bottle.png"},
87         inventory_image = "vessels_glass_bottle.png",
88         wield_image = "vessels_glass_bottle.png",
89         paramtype = "light",
90         is_ground_content = false,
91         walkable = false,
92         selection_box = {
93                 type = "fixed",
94                 fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25}
95         },
96         groups = {vessel = 1, dig_immediate = 3, attached_node = 1},
97         sounds = default.node_sound_glass_defaults(),
98 })
99
100 minetest.register_craft( {
101         output = "vessels:glass_bottle 10",
102         recipe = {
103                 {"default:glass", "", "default:glass"},
104                 {"default:glass", "", "default:glass"},
105                 {"", "default:glass", ""}
106         }
107 })
108
109 minetest.register_node("vessels:drinking_glass", {
110         description = "Drinking Glass (empty)",
111         drawtype = "plantlike",
112         tiles = {"vessels_drinking_glass.png"},
113         inventory_image = "vessels_drinking_glass_inv.png",
114         wield_image = "vessels_drinking_glass.png",
115         paramtype = "light",
116         is_ground_content = false,
117         walkable = false,
118         selection_box = {
119                 type = "fixed",
120                 fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25}
121         },
122         groups = {vessel = 1, dig_immediate = 3, attached_node = 1},
123         sounds = default.node_sound_glass_defaults(),
124 })
125
126 minetest.register_craft( {
127         output = "vessels:drinking_glass 14",
128         recipe = {
129                 {"default:glass", "", "default:glass"},
130                 {"default:glass", "", "default:glass"},
131                 {"default:glass", "default:glass", "default:glass"}
132         }
133 })
134
135 minetest.register_node("vessels:steel_bottle", {
136         description = "Heavy Steel Bottle (empty)",
137         drawtype = "plantlike",
138         tiles = {"vessels_steel_bottle.png"},
139         inventory_image = "vessels_steel_bottle.png",
140         wield_image = "vessels_steel_bottle.png",
141         paramtype = "light",
142         is_ground_content = false,
143         walkable = false,
144         selection_box = {
145                 type = "fixed",
146                 fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25}
147         },
148         groups = {vessel = 1, dig_immediate = 3, attached_node = 1},
149         sounds = default.node_sound_defaults(),
150 })
151
152 minetest.register_craft( {
153         output = "vessels:steel_bottle 5",
154         recipe = {
155                 {"default:steel_ingot", "", "default:steel_ingot"},
156                 {"default:steel_ingot", "", "default:steel_ingot"},
157                 {"", "default:steel_ingot", ""}
158         }
159 })
160
161
162 -- Glass and steel recycling
163
164 minetest.register_craftitem("vessels:glass_fragments", {
165         description = "Pile of Glass Fragments",
166         inventory_image = "vessels_glass_fragments.png",
167 })
168
169 minetest.register_craft( {
170         type = "shapeless",
171         output = "vessels:glass_fragments",
172         recipe = {
173                 "vessels:glass_bottle",
174                 "vessels:glass_bottle",
175         },
176 })
177
178 minetest.register_craft( {
179         type = "shapeless",
180         output = "vessels:glass_fragments",
181         recipe = {
182                 "vessels:drinking_glass",
183                 "vessels:drinking_glass",
184         },
185 })
186
187 minetest.register_craft({
188         type = "cooking",
189         output = "default:glass",
190         recipe = "vessels:glass_fragments",
191 })
192
193 minetest.register_craft( {
194         type = "cooking",
195         output = "default:steel_ingot",
196         recipe = "vessels:steel_bottle",
197 })
198
199 minetest.register_craft({
200         type = "fuel",
201         recipe = "vessels:shelf",
202         burntime = 30,
203 })