1 -- Minetest 0.4 mod: vessels
2 -- See README.txt for licensing and other information.
4 local vessels_shelf_formspec =
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)
16 -- Inventory slots overlay
23 vessels_shelf_formspec = vessels_shelf_formspec ..
24 "image[" .. vx .. "," .. vy .. ";1,1;vessels_shelf_slot.png]"
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(),
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)
43 can_dig = function(pos,player)
44 local inv = minetest.get_meta(pos):get_inventory()
45 return inv:is_empty("vessels")
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()
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))
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))
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))
65 on_blast = function(pos)
67 default.get_inventory_drops(pos, "vessels", drops)
68 drops[#drops + 1] = "vessels:shelf"
69 minetest.remove_node(pos)
74 minetest.register_craft({
75 output = "vessels:shelf",
77 {"group:wood", "group:wood", "group:wood"},
78 {"group:vessel", "group:vessel", "group:vessel"},
79 {"group:wood", "group:wood", "group:wood"},
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",
90 is_ground_content = false,
94 fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25}
96 groups = {vessel = 1, dig_immediate = 3, attached_node = 1},
97 sounds = default.node_sound_glass_defaults(),
100 minetest.register_craft( {
101 output = "vessels:glass_bottle 10",
103 {"default:glass", "", "default:glass"},
104 {"default:glass", "", "default:glass"},
105 {"", "default:glass", ""}
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",
116 is_ground_content = false,
120 fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25}
122 groups = {vessel = 1, dig_immediate = 3, attached_node = 1},
123 sounds = default.node_sound_glass_defaults(),
126 minetest.register_craft( {
127 output = "vessels:drinking_glass 14",
129 {"default:glass", "", "default:glass"},
130 {"default:glass", "", "default:glass"},
131 {"default:glass", "default:glass", "default:glass"}
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",
142 is_ground_content = false,
146 fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25}
148 groups = {vessel = 1, dig_immediate = 3, attached_node = 1},
149 sounds = default.node_sound_defaults(),
152 minetest.register_craft( {
153 output = "vessels:steel_bottle 5",
155 {"default:steel_ingot", "", "default:steel_ingot"},
156 {"default:steel_ingot", "", "default:steel_ingot"},
157 {"", "default:steel_ingot", ""}
162 -- Glass and steel recycling
164 minetest.register_craftitem("vessels:glass_fragments", {
165 description = "Pile of Glass Fragments",
166 inventory_image = "vessels_glass_fragments.png",
169 minetest.register_craft( {
171 output = "vessels:glass_fragments",
173 "vessels:glass_bottle",
174 "vessels:glass_bottle",
178 minetest.register_craft( {
180 output = "vessels:glass_fragments",
182 "vessels:drinking_glass",
183 "vessels:drinking_glass",
187 minetest.register_craft({
189 output = "default:glass",
190 recipe = "vessels:glass_fragments",
193 minetest.register_craft( {
195 output = "default:steel_ingot",
196 recipe = "vessels:steel_bottle",
199 minetest.register_craft({
201 recipe = "vessels:shelf",