123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233 |
- -- vessels/init.lua
- -- Minetest Game mod: vessels
- -- See README.txt for licensing and other information.
- -- Load support for MT game translation.
- local S = minetest.get_translator("vessels")
- local vessels_shelf_formspec =
- "size[8,7;]" ..
- "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 update_vessels_shelf(pos)
- local meta = minetest.get_meta(pos)
- local inv = meta:get_inventory()
- local invlist = inv:get_list("vessels")
- local formspec = vessels_shelf_formspec
- -- Inventory slots overlay
- local vx, vy = 0, 0.3
- local n_items = 0
- 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]"
- else
- local stack = invlist[i]
- if not stack:is_empty() then
- n_items = n_items + stack:get_count()
- end
- end
- vx = vx + 1
- end
- meta:set_string("formspec", formspec)
- if n_items == 0 then
- meta:set_string("infotext", S("Empty Vessels Shelf"))
- else
- meta:set_string("infotext", S("Vessels Shelf (@1 items)", n_items))
- end
- end
- local vessels_shelf_def = {
- description = S("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)
- update_vessels_shelf(pos)
- 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_blast = function(pos)
- local drops = {}
- default.get_inventory_drops(pos, "vessels", drops)
- drops[#drops + 1] = "vessels:shelf"
- minetest.remove_node(pos)
- return drops
- end,
- on_metadata_inventory_put = function(pos)
- update_vessels_shelf(pos)
- end,
- on_metadata_inventory_take = function(pos)
- update_vessels_shelf(pos)
- end,
- on_metadata_inventory_move = function(pos)
- update_vessels_shelf(pos)
- end,
- }
- default.set_inventory_action_loggers(vessels_shelf_def, "vessels shelf")
- minetest.register_node("vessels:shelf", vessels_shelf_def)
- 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 = S("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 = S("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 = S("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 = S("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,
- })
- -- Register glass fragments as dungeon loot
- if minetest.global_exists("dungeon_loot") then
- dungeon_loot.register({
- name = "vessels:glass_fragments", chance = 0.35, count = {1, 4}
- })
- end
|