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 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(),
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)
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")
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
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
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))
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))
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))
78 minetest.register_craft({
79 output = 'vessels:shelf',
81 {'group:wood', 'group:wood', 'group:wood'},
82 {'group:vessel', 'group:vessel', 'group:vessel'},
83 {'group:wood', 'group:wood', 'group:wood'},
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",
94 is_ground_content = false,
98 fixed = {-0.25, -0.5, -0.25, 0.25, 0.4, 0.25}
100 groups = {vessel=1,dig_immediate=3,attached_node=1},
101 sounds = default.node_sound_glass_defaults(),
104 minetest.register_craft( {
105 output = "vessels:glass_bottle 10",
107 { "default:glass", "", "default:glass" },
108 { "default:glass", "", "default:glass" },
109 { "", "default:glass", "" }
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",
120 is_ground_content = false,
124 fixed = {-0.25, -0.5, -0.25, 0.25, 0.4, 0.25}
126 groups = {vessel=1,dig_immediate=3,attached_node=1},
127 sounds = default.node_sound_glass_defaults(),
130 minetest.register_craft( {
131 output = "vessels:drinking_glass 14",
133 { "default:glass", "", "default:glass" },
134 { "default:glass", "", "default:glass" },
135 { "default:glass", "default:glass", "default:glass" }
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",
146 is_ground_content = false,
150 fixed = {-0.25, -0.5, -0.25, 0.25, 0.4, 0.25}
152 groups = {vessel=1,dig_immediate=3,attached_node=1},
153 sounds = default.node_sound_defaults(),
156 minetest.register_craft( {
157 output = "vessels:steel_bottle 5",
159 { "default:steel_ingot", "", "default:steel_ingot" },
160 { "default:steel_ingot", "", "default:steel_ingot" },
161 { "", "default:steel_ingot", "" }
166 -- Make sure we can recycle them
168 minetest.register_craftitem("vessels:glass_fragments", {
169 description = "Pile of Glass Fragments",
170 inventory_image = "vessels_glass_fragments.png",
173 minetest.register_craft( {
175 output = "vessels:glass_fragments",
177 "vessels:glass_bottle",
178 "vessels:glass_bottle",
182 minetest.register_craft( {
184 output = "vessels:glass_fragments",
186 "vessels:drinking_glass",
187 "vessels:drinking_glass",
191 minetest.register_craft({
193 output = "default:glass",
194 recipe = "vessels:glass_fragments",
197 minetest.register_craft( {
199 output = "default:steel_ingot",
200 recipe = "vessels:steel_bottle",