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 default.get_hotbar_bg(0,2.85)
14 minetest.register_node("vessels:shelf", {
15 description = "Vessels shelf",
16 tiles = {"default_wood.png", "default_wood.png", "default_wood.png^vessels_shelf.png"},
17 is_ground_content = false,
18 groups = {choppy=3,oddly_breakable_by_hand=2,flammable=3},
19 sounds = default.node_sound_wood_defaults(),
21 on_construct = function(pos)
22 local meta = minetest.get_meta(pos)
23 meta:set_string("formspec", vessels_shelf_formspec)
24 local inv = meta:get_inventory()
25 inv:set_size("vessels", 8*2)
27 can_dig = function(pos,player)
28 local meta = minetest.get_meta(pos);
29 local inv = meta:get_inventory()
30 return inv:is_empty("vessels")
33 allow_metadata_inventory_put = function(pos, listname, index, stack, player)
34 local meta = minetest.get_meta(pos)
35 local inv = meta:get_inventory()
36 local to_stack = inv:get_stack(listname, index)
37 if listname == "vessels" then
38 if minetest.get_item_group(stack:get_name(), "vessel") ~= 0
39 and to_stack:is_empty() then
47 allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
48 local meta = minetest.get_meta(pos)
49 local inv = meta:get_inventory()
50 local stack = inv:get_stack(from_list, from_index)
51 local to_stack = inv:get_stack(to_list, to_index)
52 if to_list == "vessels" then
53 if minetest.get_item_group(stack:get_name(), "vessel") ~= 0
54 and to_stack:is_empty() then
62 on_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
63 minetest.log("action", player:get_player_name()..
64 " moves stuff in vessels shelf at "..minetest.pos_to_string(pos))
66 on_metadata_inventory_put = function(pos, listname, index, stack, player)
67 minetest.log("action", player:get_player_name()..
68 " moves stuff to vessels shelf at "..minetest.pos_to_string(pos))
70 on_metadata_inventory_take = function(pos, listname, index, stack, player)
71 minetest.log("action", player:get_player_name()..
72 " takes stuff from vessels shelf at "..minetest.pos_to_string(pos))
76 minetest.register_craft({
77 output = 'vessels:shelf',
79 {'group:wood', 'group:wood', 'group:wood'},
80 {'group:vessel', 'group:vessel', 'group:vessel'},
81 {'group:wood', 'group:wood', 'group:wood'},
85 minetest.register_node("vessels:glass_bottle", {
86 description = "Glass Bottle (empty)",
87 drawtype = "plantlike",
88 tiles = {"vessels_glass_bottle.png"},
89 inventory_image = "vessels_glass_bottle_inv.png",
90 wield_image = "vessels_glass_bottle.png",
95 fixed = {-0.25, -0.5, -0.25, 0.25, 0.4, 0.25}
97 groups = {vessel=1,dig_immediate=3,attached_node=1},
98 sounds = default.node_sound_glass_defaults(),
101 minetest.register_craft( {
102 output = "vessels:glass_bottle 10",
104 { "default:glass", "", "default:glass" },
105 { "default:glass", "", "default:glass" },
106 { "", "default:glass", "" }
110 minetest.register_node("vessels:drinking_glass", {
111 description = "Drinking Glass (empty)",
112 drawtype = "plantlike",
113 tiles = {"vessels_drinking_glass.png"},
114 inventory_image = "vessels_drinking_glass_inv.png",
115 wield_image = "vessels_drinking_glass.png",
120 fixed = {-0.25, -0.5, -0.25, 0.25, 0.4, 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_inv.png",
140 wield_image = "vessels_steel_bottle.png",
145 fixed = {-0.25, -0.5, -0.25, 0.25, 0.4, 0.25}
147 groups = {vessel=1,dig_immediate=3,attached_node=1},
148 sounds = default.node_sound_defaults(),
151 minetest.register_craft( {
152 output = "vessels:steel_bottle 5",
154 { "default:steel_ingot", "", "default:steel_ingot" },
155 { "default:steel_ingot", "", "default:steel_ingot" },
156 { "", "default:steel_ingot", "" }
161 -- Make sure we can recycle them
163 minetest.register_craftitem("vessels:glass_fragments", {
164 description = "Pile of Glass Fragments",
165 inventory_image = "vessels_glass_fragments.png",
168 minetest.register_craft( {
170 output = "vessels:glass_fragments",
172 "vessels:glass_bottle",
173 "vessels:glass_bottle",
177 minetest.register_craft( {
179 output = "vessels:glass_fragments",
181 "vessels:drinking_glass",
182 "vessels:drinking_glass",
186 minetest.register_craft({
188 output = "default:glass",
189 recipe = "vessels:glass_fragments",
192 minetest.register_craft( {
194 output = "default:steel_ingot",
195 recipe = "vessels:steel_bottle",