Герхард PICCORO Lenz McKAY
e07ad71d11
* backported https://github.com/minetest/minetest_game/pull/1834 * addressed consistency issues previously discussed in: * https://github.com/minetest/minetest_game/issues/1473 Bad item descriptions: Too generic descriptions among specific descriptions also cos has a strong tendency towards mixing generic item names * https://github.com/minetest/minetest_game/issues/1817 Add tree species to descriptions for appletree and jungletree No change to node technical names though. Normal wood is obviously an appletree
217 lines
6.0 KiB
Lua
217 lines
6.0 KiB
Lua
-- Minetest 0.4 mod: vessels
|
|
-- See README.txt for licensing and other information.
|
|
|
|
local vessels_shelf_formspec =
|
|
"size[8,7;]" ..
|
|
default.gui_bg ..
|
|
default.gui_bg_img ..
|
|
default.gui_slots ..
|
|
"list[context;vessels;0,0.3;8,2;]" ..
|
|
"list[current_player;main;0,2.85;8,1;]" ..
|
|
"list[current_player;main;0,4.08;8,3;8]" ..
|
|
"listring[context;vessels]" ..
|
|
"listring[current_player;main]" ..
|
|
default.get_hotbar_bg(0, 2.85)
|
|
|
|
local function get_vessels_shelf_formspec(inv)
|
|
local formspec = vessels_shelf_formspec
|
|
local invlist = inv and inv:get_list("vessels")
|
|
-- Inventory slots overlay
|
|
local vx, vy = 0, 0.3
|
|
for i = 1, 16 do
|
|
if i == 9 then
|
|
vx = 0
|
|
vy = vy + 1
|
|
end
|
|
if not invlist or invlist[i]:is_empty() then
|
|
formspec = formspec ..
|
|
"image[" .. vx .. "," .. vy .. ";1,1;vessels_shelf_slot.png]"
|
|
end
|
|
vx = vx + 1
|
|
end
|
|
return formspec
|
|
end
|
|
|
|
minetest.register_node("vessels:shelf", {
|
|
description = "Vessels Shelf",
|
|
tiles = {"default_wood.png", "default_wood.png", "default_wood.png",
|
|
"default_wood.png", "vessels_shelf.png", "vessels_shelf.png"},
|
|
paramtype2 = "facedir",
|
|
is_ground_content = false,
|
|
groups = {choppy = 3, oddly_breakable_by_hand = 2, flammable = 3},
|
|
sounds = default.node_sound_wood_defaults(),
|
|
|
|
on_construct = function(pos)
|
|
local meta = minetest.get_meta(pos)
|
|
meta:set_string("formspec", get_vessels_shelf_formspec(nil))
|
|
local inv = meta:get_inventory()
|
|
inv:set_size("vessels", 8 * 2)
|
|
end,
|
|
can_dig = function(pos,player)
|
|
local inv = minetest.get_meta(pos):get_inventory()
|
|
return inv:is_empty("vessels")
|
|
end,
|
|
allow_metadata_inventory_put = function(pos, listname, index, stack, player)
|
|
if minetest.get_item_group(stack:get_name(), "vessel") ~= 0 then
|
|
return stack:get_count()
|
|
end
|
|
return 0
|
|
end,
|
|
on_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
|
|
minetest.log("action", player:get_player_name() ..
|
|
" moves stuff in vessels shelf at ".. minetest.pos_to_string(pos))
|
|
local meta = minetest.get_meta(pos)
|
|
meta:set_string("formspec", get_vessels_shelf_formspec(meta:get_inventory()))
|
|
end,
|
|
on_metadata_inventory_put = function(pos, listname, index, stack, player)
|
|
minetest.log("action", player:get_player_name() ..
|
|
" moves stuff to vessels shelf at ".. minetest.pos_to_string(pos))
|
|
local meta = minetest.get_meta(pos)
|
|
meta:set_string("formspec", get_vessels_shelf_formspec(meta:get_inventory()))
|
|
end,
|
|
on_metadata_inventory_take = function(pos, listname, index, stack, player)
|
|
minetest.log("action", player:get_player_name() ..
|
|
" takes stuff from vessels shelf at ".. minetest.pos_to_string(pos))
|
|
local meta = minetest.get_meta(pos)
|
|
meta:set_string("formspec", get_vessels_shelf_formspec(meta:get_inventory()))
|
|
end,
|
|
on_blast = function(pos)
|
|
local drops = {}
|
|
default.get_inventory_drops(pos, "vessels", drops)
|
|
drops[#drops + 1] = "vessels:shelf"
|
|
minetest.remove_node(pos)
|
|
return drops
|
|
end,
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = "vessels:shelf",
|
|
recipe = {
|
|
{"group:wood", "group:wood", "group:wood"},
|
|
{"group:vessel", "group:vessel", "group:vessel"},
|
|
{"group:wood", "group:wood", "group:wood"},
|
|
}
|
|
})
|
|
|
|
minetest.register_node("vessels:glass_bottle", {
|
|
description = "Empty Glass Bottle",
|
|
drawtype = "plantlike",
|
|
tiles = {"vessels_glass_bottle.png"},
|
|
inventory_image = "vessels_glass_bottle.png",
|
|
wield_image = "vessels_glass_bottle.png",
|
|
paramtype = "light",
|
|
is_ground_content = false,
|
|
walkable = false,
|
|
selection_box = {
|
|
type = "fixed",
|
|
fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25}
|
|
},
|
|
groups = {vessel = 1, dig_immediate = 3, attached_node = 1},
|
|
sounds = default.node_sound_glass_defaults(),
|
|
})
|
|
|
|
minetest.register_craft( {
|
|
output = "vessels:glass_bottle 10",
|
|
recipe = {
|
|
{"default:glass", "", "default:glass"},
|
|
{"default:glass", "", "default:glass"},
|
|
{"", "default:glass", ""}
|
|
}
|
|
})
|
|
|
|
minetest.register_node("vessels:drinking_glass", {
|
|
description = "Empty Drinking Glass",
|
|
drawtype = "plantlike",
|
|
tiles = {"vessels_drinking_glass.png"},
|
|
inventory_image = "vessels_drinking_glass_inv.png",
|
|
wield_image = "vessels_drinking_glass.png",
|
|
paramtype = "light",
|
|
is_ground_content = false,
|
|
walkable = false,
|
|
selection_box = {
|
|
type = "fixed",
|
|
fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25}
|
|
},
|
|
groups = {vessel = 1, dig_immediate = 3, attached_node = 1},
|
|
sounds = default.node_sound_glass_defaults(),
|
|
})
|
|
|
|
minetest.register_craft( {
|
|
output = "vessels:drinking_glass 14",
|
|
recipe = {
|
|
{"default:glass", "", "default:glass"},
|
|
{"default:glass", "", "default:glass"},
|
|
{"default:glass", "default:glass", "default:glass"}
|
|
}
|
|
})
|
|
|
|
minetest.register_node("vessels:steel_bottle", {
|
|
description = "Empty Heavy Steel Bottle",
|
|
drawtype = "plantlike",
|
|
tiles = {"vessels_steel_bottle.png"},
|
|
inventory_image = "vessels_steel_bottle.png",
|
|
wield_image = "vessels_steel_bottle.png",
|
|
paramtype = "light",
|
|
is_ground_content = false,
|
|
walkable = false,
|
|
selection_box = {
|
|
type = "fixed",
|
|
fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25}
|
|
},
|
|
groups = {vessel = 1, dig_immediate = 3, attached_node = 1},
|
|
sounds = default.node_sound_defaults(),
|
|
})
|
|
|
|
minetest.register_craft( {
|
|
output = "vessels:steel_bottle 5",
|
|
recipe = {
|
|
{"default:steel_ingot", "", "default:steel_ingot"},
|
|
{"default:steel_ingot", "", "default:steel_ingot"},
|
|
{"", "default:steel_ingot", ""}
|
|
}
|
|
})
|
|
|
|
|
|
-- Glass and steel recycling
|
|
|
|
minetest.register_craftitem("vessels:glass_fragments", {
|
|
description = "Glass Fragments",
|
|
inventory_image = "vessels_glass_fragments.png",
|
|
})
|
|
|
|
minetest.register_craft( {
|
|
type = "shapeless",
|
|
output = "vessels:glass_fragments",
|
|
recipe = {
|
|
"vessels:glass_bottle",
|
|
"vessels:glass_bottle",
|
|
},
|
|
})
|
|
|
|
minetest.register_craft( {
|
|
type = "shapeless",
|
|
output = "vessels:glass_fragments",
|
|
recipe = {
|
|
"vessels:drinking_glass",
|
|
"vessels:drinking_glass",
|
|
},
|
|
})
|
|
|
|
minetest.register_craft({
|
|
type = "cooking",
|
|
output = "default:glass",
|
|
recipe = "vessels:glass_fragments",
|
|
})
|
|
|
|
minetest.register_craft( {
|
|
type = "cooking",
|
|
output = "default:steel_ingot",
|
|
recipe = "vessels:steel_bottle",
|
|
})
|
|
|
|
minetest.register_craft({
|
|
type = "fuel",
|
|
recipe = "vessels:shelf",
|
|
burntime = 30,
|
|
})
|