21 Commits

Author SHA1 Message Date
99bdfe9e14 Merge remote-tracking branch 'upstream/master' 2025-03-20 12:54:30 +01:00
43cf0d8e7e Fix error when clicking unknown item in the recipe (#255) 2024-12-09 17:40:40 +01:00
e132a17523 Russian locale update (#253) 2024-11-26 17:49:43 +01:00
6f132186ab Merge remote-tracking branch 'upstream/master' 2024-09-15 12:57:15 +02:00
e071a01372 Giveme form: Respect stack_max (#250) 2024-08-25 13:36:13 +02:00
1547ebcdd4 Make waypoints usable from lite mode (#251) 2024-08-13 20:00:49 +02:00
16265dca2d Item names: fix HUD deprecation warning 2024-07-18 20:45:24 +02:00
235fa841dd Replace deprecated meta:set_string(*, nil) call 2024-06-29 16:52:32 +02:00
2c9449b6e7 Categories: Remove not_in_creative_inventory items
`unified_inventory.is_itemdef_listable` already prevents such items
being listed. They are not needed, thus removing them from the
categories in the first place does make sense.

Co-authored-by: SmallJoker <mk939@ymail.com>
2024-03-23 12:31:04 +01:00
b5de18b196 Categories: remove unknown items after start
This avoids runtime errors caused by removed items
or such that were not registered at all but listed
by default in a pre-defined category.
2024-03-17 16:54:21 +01:00
921a6d76ee Add dump function to luacheck 2024-01-13 10:47:05 +01:00
004a39aaf7 Categories: Improve automatic ore categorization
This function is now executed after registering all recipes
within unified_inventory to properly register all item drops
as ores.
2024-01-13 10:40:25 +01:00
eb3bb03ebf Option to hide uncraftable items (#240)
This setting only applies to non-creative players.
2024-01-06 12:35:54 +01:00
e7d03626b4 Categories: fix error caused by inexistent ore names 2023-12-24 12:18:40 +01:00
cb6e602497 Merge remote-tracking branch 'github/master' 2023-11-25 15:40:23 +01:00
693ca112b8 Add setting to disable waypoints 2023-11-20 17:54:44 +01:00
380b77d0fb Improve settings descriptions 2023-11-20 17:51:34 +01:00
43c9b50800 Add unified_inventory_enable_item_names setting (#235)
Show only names settings: in case of multi-line descriptions, only the first line is shown
Shorten long descriptions: Removes all characters after x index, and add `[...]`
Max length before truncation: x for Shorten long descriptions
Notes: If Max length == 0, then item names won't be displayed
2023-10-15 21:02:35 +02:00
5d233a0f0a Clean itemname before checking existence (#234)
important when the item string contains metadata
2023-07-11 18:12:35 +02:00
2426b6c912 Full polish translation (#231) 2023-06-24 08:43:04 +02:00
d6d4bea819 Bags: Prevent error caused by moving the opened bag 2023-06-18 18:48:15 +02:00
13 changed files with 302 additions and 213 deletions

View File

@ -10,6 +10,7 @@ read_globals = {
string = {fields = {"split", "trim"}}, string = {fields = {"split", "trim"}},
table = {fields = {"copy", "getn"}}, table = {fields = {"copy", "getn"}},
"dump",
"minetest", "vector", "minetest", "vector",
"ItemStack", "datastorage", "ItemStack", "datastorage",

37
api.lua
View File

@ -12,8 +12,9 @@ local function is_recipe_craftable(recipe)
end end
else else
-- Possibly an item -- Possibly an item
if not minetest.registered_items[itemname] local itemname_cleaned = ItemStack(itemname):get_name()
or minetest.get_item_group(itemname, "not_in_craft_guide") ~= 0 then if not minetest.registered_items[itemname_cleaned]
or minetest.get_item_group(itemname_cleaned, "not_in_craft_guide") ~= 0 then
return false return false
end end
end end
@ -50,6 +51,7 @@ minetest.after(0.01, function()
end end
end end
end end
table.sort(ui.items_list) table.sort(ui.items_list)
ui.items_list_size = #ui.items_list ui.items_list_size = #ui.items_list
print("Unified Inventory. Inventory size: "..ui.items_list_size) print("Unified Inventory. Inventory size: "..ui.items_list_size)
@ -182,6 +184,37 @@ minetest.after(0.01, function()
ui.crafts_for.recipe[outputitemname] = new_recipe_list ui.crafts_for.recipe[outputitemname] = new_recipe_list
end end
-- Remove unknown items from all categories
local total_removed = 0
for cat_name, cat_def in pairs(ui.registered_category_items) do
for itemname, _ in pairs(cat_def) do
local idef = minetest.registered_items[itemname]
if not idef then
total_removed = total_removed + 1
--[[
-- For analysis
minetest.log("warning", "[unified_inventory] Removed item '"
.. itemname .. "' from category '" .. cat_name
.. "'. Reason: item not registered")
]]
cat_def[itemname] = nil
elseif not ui.is_itemdef_listable(idef) then
total_removed = total_removed + 1
--[[
-- For analysis
minetest.log("warning", "[unified_inventory] Removed item '"
.. itemname .. "' from category '" .. cat_name
.. "'. Reason: item is in 'not_in_creative_inventory' group")
]]
cat_def[itemname] = nil
end
end
end
if total_removed > 0 then
minetest.log("info", "[unified_inventory] Removed " .. total_removed ..
" items from the categories.")
end
for _, callback in ipairs(ui.initialized_callbacks) do for _, callback in ipairs(ui.initialized_callbacks) do
callback() callback()
end end

View File

@ -144,7 +144,7 @@ local function save_bags_metadata(player, bags_inv)
end end
local meta = player:get_meta() local meta = player:get_meta()
if is_empty then if is_empty then
meta:set_string("unified_inventory:bags", nil) meta:set_string("unified_inventory:bags", "")
else else
meta:set_string("unified_inventory:bags", meta:set_string("unified_inventory:bags",
minetest.serialize(bags)) minetest.serialize(bags))
@ -221,6 +221,11 @@ minetest.register_on_joinplayer(function(player)
on_take = function(inv, listname, index, stack, player) on_take = function(inv, listname, index, stack, player)
player:get_inventory():set_size(listname .. "contents", 0) player:get_inventory():set_size(listname .. "contents", 0)
save_bags_metadata(player, inv) save_bags_metadata(player, inv)
if listname == ui.current_page[player:get_player_name()] then
-- Bag is currently open: avoid follow-up issues by navigating back
-- Trick: the list name is the same as the registered page name
ui.set_inventory_formspec(player, "bags")
end
end, end,
allow_move = function() allow_move = function()
return 0 return 0

View File

@ -115,6 +115,11 @@ function unified_inventory.set_category_index(category_name, index)
update_category_list() update_category_list()
end end
function unified_inventory.add_category_item(category_name, item) function unified_inventory.add_category_item(category_name, item)
if type(item) ~= "string" then
minetest.log("warning", "[unified_inventory] Cannot register category item: " .. dump(item))
return
end
ensure_category_exists(category_name) ensure_category_exists(category_name)
unified_inventory.registered_category_items[category_name][item] = true unified_inventory.registered_category_items[category_name][item] = true
end end

View File

@ -1,4 +1,5 @@
local S = minetest.get_translator("unified_inventory") local S = minetest.get_translator("unified_inventory")
local ui = unified_inventory
unified_inventory.register_category('plants', { unified_inventory.register_category('plants', {
symbol = "flowers:tulip", symbol = "flowers:tulip",
@ -25,71 +26,87 @@ unified_inventory.register_category('lighting', {
label = S("Lighting") label = S("Lighting")
}) })
local function register_automatic_categorization()
if unified_inventory.automatic_categorization then -- Add biome nodes to environment category
minetest.register_on_mods_loaded(function() for _,def in pairs(minetest.registered_biomes) do
local env_nodes = {
-- Add biome nodes to environment category def.node_riverbed, def.node_top, def.node_filler, def.node_dust,
for _,def in pairs(minetest.registered_biomes) do }
local env_nodes = { for i,node in pairs(env_nodes) do
def.node_riverbed, def.node_top, def.node_filler, def.node_dust, if node then
} unified_inventory.add_category_item('environment', node)
for i,node in pairs(env_nodes) do
if node then
unified_inventory.add_category_item('environment', node)
end
end end
end end
end
-- Add minable ores to minerals and everything else (pockets of stone & sand variations) to environment -- Preparation for ore registration: find all possible drops (digging)
for _,item in pairs(minetest.registered_ores) do local possible_node_dig_drops = {
if item.ore_type == "scatter" then -- ["default:stone_with_coal"] = { "default:coal_lump", "mymod:raregem" }
local drop = minetest.registered_nodes[item.ore].drop -- Ores may be contained multiple times, depending on drop chances.
if drop and drop ~= "" then }
unified_inventory.add_category_item('minerals', item.ore) for itemname, recipes in pairs(ui.crafts_for.usage) do
unified_inventory.add_category_item('minerals', drop) for _, recipe in ipairs(recipes) do
else if recipe.type == "digging" or recipe.type == "digging_chance" then
unified_inventory.add_category_item('environment', item.ore) if not possible_node_dig_drops[itemname] then
possible_node_dig_drops[itemname] = {}
end end
else local stack = ItemStack(recipe.output)
unified_inventory.add_category_item('environment', item.ore) table.insert(possible_node_dig_drops[itemname], stack:get_name())
end end
end end
end
-- Add items by item definition -- Add minable ores to minerals and everything else (pockets of stone & sand variations) to environment
for name, def in pairs(minetest.registered_items) do for _, odef in pairs(minetest.registered_ores) do
local group = def.groups or {} local drops = possible_node_dig_drops[odef.ore]
if not group.not_in_creative_inventory then if drops and odef.ore_type == "scatter" then
if group.stair or ui.add_category_item('minerals', odef.ore)
group.slab or -- Register all possible drops as "minerals"
group.wall or ui.add_category_items('minerals', drops)
group.fence then possible_node_dig_drops[odef.ore] = {} -- mask as handled
unified_inventory.add_category_item('building', name) else
elseif group.flora or ui.add_category_item('environment', odef.ore)
group.flower or end
group.seed or end
group.leaves or
group.sapling or -- Add items by item definition
group.tree then for name, def in pairs(minetest.registered_items) do
unified_inventory.add_category_item('plants', name) local group = def.groups or {}
elseif def.type == 'tool' then if not group.not_in_creative_inventory then
unified_inventory.add_category_item('tools', name) if group.stair or
elseif def.liquidtype == 'source' then group.slab or
unified_inventory.add_category_item('environment', name) group.wall or
elseif def.light_source and def.light_source > 0 then group.fence then
unified_inventory.add_category_item('lighting', name) unified_inventory.add_category_item('building', name)
elseif group.door or elseif group.flora or
minetest.global_exists("doors") and ( group.flower or
doors.registered_doors and doors.registered_doors[name..'_a'] or group.seed or
doors.registered_trapdoors and doors.registered_trapdoors[name] group.leaves or
) then group.sapling or
unified_inventory.add_category_item('building', name) group.tree then
end unified_inventory.add_category_item('plants', name)
elseif def.type == 'tool' then
unified_inventory.add_category_item('tools', name)
elseif def.liquidtype == 'source' then
unified_inventory.add_category_item('environment', name)
elseif def.light_source and def.light_source > 0 then
unified_inventory.add_category_item('lighting', name)
elseif group.door or
minetest.global_exists("doors") and (
doors.registered_doors and doors.registered_doors[name..'_a'] or
doors.registered_trapdoors and doors.registered_trapdoors[name]
) then
unified_inventory.add_category_item('building', name)
end end
end end
end) end
end end
if ui.automatic_categorization then
ui.register_on_initialized(register_automatic_categorization)
end
-- [[ -- [[
unified_inventory.add_category_items('plants', { unified_inventory.add_category_items('plants', {
"default:dry_grass_5", "default:dry_grass_5",
@ -256,23 +273,6 @@ unified_inventory.add_category_items('minerals', {
"default:coal_lump", "default:coal_lump",
"default:bronzeblock", "default:bronzeblock",
"default:goldblock", "default:goldblock",
"stairs:slab_bronzeblock",
"stairs:slab_copperblock",
"stairs:slab_steelblock",
"stairs:slab_tinblock",
"stairs:stair_bronzeblock",
"stairs:stair_copperblock",
"stairs:stair_inner_bronzeblock",
"stairs:stair_inner_copperblock",
"stairs:stair_inner_steelblock",
"stairs:stair_inner_tinblock",
"stairs:stair_outer_bronzeblock",
"stairs:stair_outer_copperblock",
"stairs:stair_outer_steelblock",
"stairs:stair_outer_tinblock",
"stairs:stair_steelblock",
"stairs:stair_tinblock",
}) })
unified_inventory.add_category_items('building', { unified_inventory.add_category_items('building', {

View File

@ -53,8 +53,9 @@ unified_inventory = {
standard_background = "bgcolor[#0000]background9[0,0;1,1;ui_formbg_9_sliced.png;true;16]", standard_background = "bgcolor[#0000]background9[0,0;1,1;ui_formbg_9_sliced.png;true;16]",
hide_disabled_buttons = minetest.settings:get_bool("unified_inventory_hide_disabled_buttons", false), hide_disabled_buttons = minetest.settings:get_bool("unified_inventory_hide_disabled_buttons", false),
hide_uncraftable_items = minetest.settings:get_bool("unified_inventory_hide_uncraftable_items", false),
version = 4 version = 5
} }
local ui = unified_inventory local ui = unified_inventory
@ -191,9 +192,12 @@ dofile(modpath.."/register.lua")
if minetest.settings:get_bool("unified_inventory_bags") ~= false then if minetest.settings:get_bool("unified_inventory_bags") ~= false then
dofile(modpath.."/bags.lua") dofile(modpath.."/bags.lua")
end end
if minetest.settings:get_bool("unified_inventory_item_names") ~= false then
dofile(modpath.."/item_names.lua") dofile(modpath.."/item_names.lua")
dofile(modpath.."/waypoints.lua") end
if minetest.settings:get_bool("unified_inventory_waypoints") ~= false then
dofile(modpath.."/waypoints.lua")
end
dofile(modpath.."/legacy.lua") -- mod compatibility dofile(modpath.."/legacy.lua") -- mod compatibility
minetest.log("action", "[unified_inventory] loaded.") minetest.log("action", "[unified_inventory] loaded.")

View File

@ -270,8 +270,8 @@ local function formspec_add_item_browser(player, formspec, ui_peruser)
button_name, minetest.formspec_escape(tooltip) button_name, minetest.formspec_escape(tooltip)
) )
n = n + 2 n = n + 2
list_index = list_index + 1
end end
list_index = list_index + 1
end end
end end
formspec[n] = "style[page_number;content_offset=0]" formspec[n] = "style[page_number;content_offset=0]"
@ -349,12 +349,29 @@ function ui.apply_filter(player, filter, search_dir)
end end
local player_name = player:get_player_name() local player_name = player:get_player_name()
-- Whether to show uncraftable items
local fprefilter = function(_)
return true
end
if ui.hide_uncraftable_items and not ui.is_creative(player_name) then
fprefilter = function(name)
return ui.get_recipe_list(name)
end
end
local registered_items = minetest.registered_items
local lfilter = string.lower(filter) local lfilter = string.lower(filter)
local ffilter local ffilter
if lfilter:sub(1, 6) == "group:" then if lfilter:sub(1, 6) == "group:" then
-- Group filter: all groups of the item must match -- Group filter: all groups of the item must match
local groups = lfilter:sub(7):split(",") local groups = lfilter:sub(7):split(",")
ffilter = function(name, def) ffilter = function(name)
local def = registered_items[name]
if not def then
return false
end
for _, group in ipairs(groups) do for _, group in ipairs(groups) do
if not def.groups[group] if not def.groups[group]
or def.groups[group] <= 0 then or def.groups[group] <= 0 then
@ -368,7 +385,12 @@ function ui.apply_filter(player, filter, search_dir)
local player_info = minetest.get_player_information(player_name) local player_info = minetest.get_player_information(player_name)
local lang = player_info and player_info.lang_code or "" local lang = player_info and player_info.lang_code or ""
ffilter = function(name, def) ffilter = function(name)
local def = registered_items[name]
if not def then
return false
end
local lname = string.lower(name) local lname = string.lower(name)
local ldesc = string.lower(def.description) local ldesc = string.lower(def.description)
local llocaldesc = minetest.get_translated_string local llocaldesc = minetest.get_translated_string
@ -378,32 +400,29 @@ function ui.apply_filter(player, filter, search_dir)
end end
end end
local is_itemdef_listable = ui.is_itemdef_listable
local filtered_items = {} local filtered_items = {}
local category = ui.current_category[player_name] or 'all' local category = ui.current_category[player_name] or 'all'
if category == 'all' then if category == 'all' then
for name, def in pairs(minetest.registered_items) do for _, name in ipairs(ui.items_list) do
if is_itemdef_listable(def) if fprefilter(name) and ffilter(name) then
and ffilter(name, def) then
table.insert(filtered_items, name) table.insert(filtered_items, name)
end end
end end
elseif category == 'uncategorized' then elseif category == 'uncategorized' then
for name, def in pairs(minetest.registered_items) do for _, name in ipairs(ui.items_list) do
if is_itemdef_listable(def) if not ui.find_category(name)
and not ui.find_category(name) and fprefilter(name)
and ffilter(name, def) then and ffilter(name) then
table.insert(filtered_items, name) table.insert(filtered_items, name)
end end
end end
else else
-- Any other category is selected -- Any other category is selected
for name, exists in pairs(ui.registered_category_items[category]) do for name, exists in pairs(ui.registered_category_items[category]) do
local def = minetest.registered_items[name] if exists
if exists and def and fprefilter(name)
and is_itemdef_listable(def) and ffilter(name) then
and ffilter(name, def) then
table.insert(filtered_items, name) table.insert(filtered_items, name)
end end
end end

View File

@ -3,6 +3,8 @@
local item_names = {} -- [player_name] = { hud, dtime, itemname } local item_names = {} -- [player_name] = { hud, dtime, itemname }
local dlimit = 3 -- HUD element will be hidden after this many seconds local dlimit = 3 -- HUD element will be hidden after this many seconds
local hudbars_mod = minetest.get_modpath("hudbars") local hudbars_mod = minetest.get_modpath("hudbars")
local only_names = minetest.settings:get_bool("unified_inventory_only_names", true)
local max_length = tonumber(minetest.settings:get("unified_inventory_max_item_name_length")) or 80
local function set_hud(player) local function set_hud(player)
local player_name = player:get_player_name() local player_name = player:get_player_name()
@ -16,7 +18,8 @@ local function set_hud(player)
item_names[player_name] = { item_names[player_name] = {
hud = player:hud_add({ hud = player:hud_add({
hud_elem_type = "text", -- TODO: remove compatibility code when 5.8.0 is no longer used
[minetest.features.hud_def_type_field and "type" or "hud_elem_type"] = "text",
position = {x=0.5, y=1}, position = {x=0.5, y=1},
offset = off, offset = off,
alignment = {x=0, y=-1}, alignment = {x=0, y=-1},
@ -60,6 +63,7 @@ minetest.register_globalstep(function(dtime)
data.itemname = itemname data.itemname = itemname
data.index = index data.index = index
data.dtime = 0 data.dtime = 0
local lang_code = minetest.get_player_information(player:get_player_name()).lang_code
local desc = stack.get_meta local desc = stack.get_meta
and stack:get_meta():get_string("description") and stack:get_meta():get_string("description")
@ -69,6 +73,14 @@ minetest.register_globalstep(function(dtime)
local def = minetest.registered_items[itemname] local def = minetest.registered_items[itemname]
desc = def and def.description or "" desc = def and def.description or ""
end end
if only_names and desc and string.find(desc, "\n") then
desc = string.match(desc, "([^\n]*)")
end
desc = minetest.get_translated_string(lang_code, desc)
desc = minetest.strip_colors(desc)
if string.len(desc) > max_length and max_length > 0 then
desc = string.sub(desc, 1, max_length) .. " [...]"
end
player:hud_change(data.hud, 'text', desc) player:hud_change(data.hud, 'text', desc)
end end
end end

View File

@ -1,98 +1,91 @@
# textdomain: unified_inventory # textdomain: unified_inventory
Mixing= Category:=Kategorie:
Cooking= Mixing=Miksowanie
Digging= Cooking=Gotowanie
Digging=Kopanie
Bags=Plecaki Bags=Plecaki
Bag @1=Plecak @1 Bag @1=Plecak @1
Small Bag=Maly plecak Small Bag=Mały plecak
Medium Bag=Sredni plecak Medium Bag=Średni plecak
Large Bag=Duzy plecak Large Bag=Duży plecak
All Items= All Items=Wszystkie przedmioty
Misc. Items= Misc. Items=Różne przedmioty
Plant Life= Plant Life=Życie roślin
Building Materials= Building Materials=Materiały budowlane
Tools= Tools=Narzędzia
Minerals and Metals= Minerals and Metals=Minerały i metale
Environment and Worldgen= Environment and Worldgen=Otoczenie i generowanie świata
Lighting= Lighting=Oświetlenie
and = i and = i
Scroll categories left= Scroll categories left=Przewiń kategorię w lewo
Scroll categories right= Scroll categories right=Przewiń kategorię w prawo
Search=Szukaj Search=Szukaj
Reset search and display everything= Reset search and display everything=Zresetuj wyszukiwanie i pokaż wszystko
First page=Pierwsza strona First page=Pierwsza strona
Back three pages=3 strony w tyl Back three pages=Trzy strony do tyłu
Back one page=1 strona w tyl Back one page=Stronę do tyłu
Forward one page=1 strona do przodu Forward one page=Stronę do przodu
Forward three pages=3 strony do przodu Forward three pages=Trzy strony do przodu
Last page=Ostatnia strona Last page=Ostatnia strona
No matching items=Brak pasujacych przedmiotow No matching items=Brak pasujących przedmiotów
No matches.=Brak wyników No matches.=Brak wyników
Page=Strona Page=Strona
@1 of @2=@1 z @2 @1 of @2=@1 z @2
Filter=Filtr Filter=Filtr
Can use the creative inventory= Can use the creative inventory=Może używać kreatywnego ekwipunku
Forces Unified Inventory to be displayed in Full mode if Lite mode is configured globally= Forces Unified Inventory to be displayed in Full mode if Lite mode is configured globally=Wymusza wyświetlanie Unified Inventory w trybie Full jeżeli tryb Lite jest skonfigurowany globalnie
Crafting Grid= Crafting Grid=Siatka craftingu
Crafting Guide= Crafting Guide=Przewodnik craftingu
Set home position=Ustaw pozycję wyjściową Set home position=Ustaw pozycję domu
Home position set to: @1=Pozycja domowa ustawiona na: @1 Home position set to: @1=Pozycja domu ustawiona na: @1
You don't have the "home" privilege!=Nie masz uprawnien do zmiany czasu "home"! You don't have the "home" privilege!=Brak uprawnień "home"!
Go home=Idź do domu Go home=Idź do domu
Set time to day=Ustaw czas na dzień Set time to day=Ustaw czas na dzień
Time of day set to 6am=Czas ustawiony na 6:00 Time of day set to 6am=Czas ustawiony na 6:00
You don't have the settime privilege!=Nie masz uprawnien do zmiany czasu "settime"! You don't have the settime privilege!=Brak uprawnień "settime"!
Set time to night=Ustaw czas na noc Set time to night=Ustaw czas na noc
Time of day set to 9pm=Czas ustawiony na 21:00 Time of day set to 9pm=Czas ustawiony na 21:00
Clear inventory=Wyczyść zapasy Clear inventory=Wyczyść ekwipunek
This button has been disabled outside of creative mode to prevent accidental inventory trashing.@nUse the trash slot instead.= This button has been disabled outside of creative mode to prevent accidental inventory trashing.@nUse the trash slot instead.=Aby zapobiec przypadkowemu skasowaniu ekwipunku, ten przycisk został wyłączony poza trybem kreatywnym.@nUżyj zamiast tego ikony śmietnika.
Inventory cleared!=Zapasy zostały wyczyszczone! Inventory cleared!=Ekwipunek został wyczyszczony!
Trash:=Smietnik: Trash:=Śmietnik:
Refill:=Uzupelnianie: Refill:=Uzupełnianie:
Any item belonging to the @1 group= Any item belonging to the @1 group=Każdy przedmiot należący do @1 grupy
Any item belonging to the groups @1= Any item belonging to the groups @1=Każdy przedmiot należacy do grup @1
Recipe @1 of @2=Recepta @1 z @2 Recipe @1 of @2=Recepta @1 z @2
Usage @1 of @2=Użycie @1 z @2 Usage @1 of @2=Użycie @1 z @2
No recipes=Brak recepty No recipes=Brak recepty
No usages=Bez użycia No usages=Bez użycia
Result=Wynik Result=Wynik
Ingredient=Składnik Ingredient=Składnik
Show next recipe= Show next recipe=Pokaż nastepną recepturę
Show next usage= Show next usage=Pokaż następne użycie
Show previous recipe= Show previous recipe=Pokaż poprzednią recepturę
Show previous usage= Show previous usage=Pokaż poprzednie użycie
@1 (@2)= @1 (@2)=@1 (@2)
Give me:=Daj mi: Give me:=Daj mi:
This recipe is too@@large to be displayed.= This recipe is too@@large to be displayed.=Receptura jest zbyt@@duża aby ją wyświetlić.
To craft grid:= To craft grid:=Do siatki craftingu.
All=Wszystko All=Wszystko
Crafting= Crafting=Crafting
White=Bialy White=Biały
Yellow=Zolty Yellow=Zółty
Red=Czerwony Red=Czerwony
Green=Zielony Green=Zielony
Blue=Niebieski Blue=Niebieski
Waypoints=Punkty orientacyjne Waypoints=Punkty orientacyjne
Select Waypoint #@1=Wybierz punkt #@1 Select Waypoint #@1=Wybierz punkt #@1
Waypoint @1=Punkty orientacyjne @1 Waypoint @1=Punkty orientacyjne @1
Set waypoint to current location=Ustaw punkt orientacyjny na biezacej pozycji Set waypoint to current location=Ustaw punkt orientacyjny na bieżacej pozycji
Hide waypoint= Hide waypoint=Ukryj punkt orientacyjny
Show waypoint= Show waypoint=Pokaż punkt orientacyjny
Hide coordinates= Hide coordinates=Ukryj koordynaty
Show coordinates= Show coordinates=Pokaż koordynaty
Change color of waypoint display=Zmien kolor punktu Change color of waypoint display=Zmień kolor punktu
Edit waypoint name=Edytuj nazwe punktu Edit waypoint name=Edytuj nazwę punktu
Waypoint active=Punkt wlaczony Waypoint active=Punkt włączony
Waypoint inactive=Punkt wylaczony Waypoint inactive=Punkt wyłączony
Finish editing=Zakoncz edycje Finish editing=Zakończ edycję
World position=Pozycja World position=Pozycja
Name=Nazwa Name=Nazwa
HUD text color=Kolor tekstu HUD HUD text color=Kolor tekstu HUD
##### not used anymore #####
invisible=niewidzialny
visible=widomy
Make waypoint @1=Robić punkt @1
@1 display of waypoint coordinates=@1 koordynatow punktu

View File

@ -1,23 +1,23 @@
# textdomain: unified_inventory # textdomain: unified_inventory
Mixing=Мешать Mixing=Мешать
Cooking=Варить Cooking=Готовить
Digging=Копать Digging=Копать
Bags=Сумки Bags=Сумки
Bag @1=Сумка @1 Bag @1=Сумка @1
Small Bag=Малая сумка Small Bag=Малая сумка
Medium Bag=Средняя сумка Medium Bag=Средняя сумка
Large Bag=Большая сумка Large Bag=Большая сумка
All Items= All Items=Все предметы
Misc. Items= Misc. Items=Разн. предметы
Plant Life= Plant Life=Растения
Building Materials= Building Materials=Стройматериалы
Tools= Tools=Инструменты
Minerals and Metals= Minerals and Metals=Металлы и минералы
Environment and Worldgen= Environment and Worldgen=Окружение и генер.мира
Lighting= Lighting=Освещение
and = и and = и
Scroll categories left= Scroll categories left=Листать влево
Scroll categories right= Scroll categories right=Листать вправо
Search=Поиск Search=Поиск
Reset search and display everything=Сброс поиска, показать всё Reset search and display everything=Сброс поиска, показать всё
First page=Первая страница First page=Первая страница
@ -32,7 +32,7 @@ Page=Страница
@1 of @2=@1 из @2 @1 of @2=@1 из @2
Filter=Фильтр Filter=Фильтр
Can use the creative inventory=Можно использовать инвентарь творческого режима Can use the creative inventory=Можно использовать инвентарь творческого режима
Forces Unified Inventory to be displayed in Full mode if Lite mode is configured globally= Forces Unified Inventory to be displayed in Full mode if Lite mode is configured globally=Отображает инвентарь в полном режиме, если простой режим установлен глобально
Crafting Grid=Решетка крафта Crafting Grid=Решетка крафта
Crafting Guide=Книга рецептов Crafting Guide=Книга рецептов
Set home position=Установить позицию дома Set home position=Установить позицию дома
@ -59,11 +59,11 @@ Result=Результат
Ingredient=Состав Ingredient=Состав
Show next recipe=Следующий рецепт Show next recipe=Следующий рецепт
Show next usage=Следующее использование Show next usage=Следующее использование
Show previous recipe=Прошлый рецепт Show previous recipe=Предыдущий рецепт
Show previous usage=Прошлая страница Show previous usage=Предыдущая страница
@1 (@2)= @1 (@2)=
Give me:=Дай мне: Give me:=Дай мне:
This recipe is too@@large to be displayed.= This recipe is too@@large to be displayed.=Этот рецепт слишком большой
To craft grid:=На решeтку крафта: To craft grid:=На решeтку крафта:
All=Все All=Все
Crafting=Крафт Crafting=Крафт
@ -76,10 +76,10 @@ Waypoints=Путевые точки
Select Waypoint #@1=Выбрать путевую точку №@1 Select Waypoint #@1=Выбрать путевую точку №@1
Waypoint @1=Путевая точка @1 Waypoint @1=Путевая точка @1
Set waypoint to current location=Установить путевую точку по текущей позиции Set waypoint to current location=Установить путевую точку по текущей позиции
Hide waypoint= Hide waypoint=Скрыть точку
Show waypoint= Show waypoint=Показать точку
Hide coordinates= Hide coordinates=Скрыть координаты
Show coordinates= Show coordinates=Показать координаты
Change color of waypoint display=Поменять цвет путевой точки Change color of waypoint display=Поменять цвет путевой точки
Edit waypoint name=Переименовать путевую точку Edit waypoint name=Переименовать путевую точку
Waypoint active=Путевая точка включена Waypoint active=Путевая точка включена
@ -88,13 +88,4 @@ Finish editing=Закончить редакцию
World position=Позиция мира World position=Позиция мира
Name=Имя Name=Имя
HUD text color=Цвет текста HUDа HUD text color=Цвет текста HUDа
Category:=Категории:
##### not used anymore #####
invisible=невидимой
visible=видимой
Make waypoint @1=Сделать путевую точку @1
Disable=Выключить
Enable=Включить
@1 display of waypoint coordinates=@1 показ координат путевых точек

View File

@ -166,7 +166,7 @@ local function stack_image_button(x, y, w, h, buttonname_prefix, item)
local group_name = name:sub(7) local group_name = name:sub(7)
local group_item = ui.get_group_item(group_name) local group_item = ui.get_group_item(group_name)
show_is_group = not group_item.sole show_is_group = not group_item.sole
displayitem = group_item.item or "unknown" displayitem = group_item.item or name
selectitem = group_item.sole and displayitem or name selectitem = group_item.sole and displayitem or name
end end
local label = show_is_group and "G" or "" local label = show_is_group and "G" or ""
@ -249,11 +249,10 @@ ui.register_page("craftguide", {
local n = 4 local n = 4
local item_def = minetest.registered_items[item_name]
local item_name_shown local item_name_shown
if minetest.registered_items[item_name] if item_def and item_def.description then
and minetest.registered_items[item_name].description then item_name_shown = S("@1 (@2)", item_def.description, item_name)
item_name_shown = S("@1 (@2)",
minetest.registered_items[item_name].description, item_name)
else else
item_name_shown = item_name item_name_shown = item_name
end end
@ -278,12 +277,14 @@ ui.register_page("craftguide", {
F(role_text[dir]), item_name_shown) F(role_text[dir]), item_name_shown)
n = n + 2 n = n + 2
local giveme_form = table.concat({ local giveme_form =
"label[".. (give_x+0.1)..",".. (craftguidey + 2.7) .. ";" .. F(S("Give me:")) .. "]", "label[" .. (give_x + 0.1) .. "," .. (craftguidey + 2.7) .. ";" .. F(S("Give me:")) .. "]" ..
"button["..(give_x)..",".. (craftguidey + 2.9) .. ";0.75,0.5;craftguide_giveme_1;1]", "button[" .. (give_x) .. "," .. (craftguidey + 2.9) .. ";0.75,0.5;craftguide_giveme_1;1]"
"button["..(give_x+0.8)..",".. (craftguidey + 2.9) .. ";0.75,0.5;craftguide_giveme_10;10]", if item_def and item_def.type ~= "tool" then
"button["..(give_x+1.6)..",".. (craftguidey + 2.9) .. ";0.75,0.5;craftguide_giveme_99;99]" giveme_form = giveme_form ..
}) "button[" .. (give_x + 0.8) .. "," .. (craftguidey + 2.9) .. ";0.75,0.5;craftguide_giveme_10;10]" ..
"button[" .. (give_x + 1.6) .. "," .. (craftguidey + 2.9) .. ";0.75,0.5;craftguide_giveme_99;99]"
end
if not craft then if not craft then
-- No craft recipes available for this item. -- No craft recipes available for this item.

View File

@ -1,17 +1,36 @@
#Enabling lite mode enables a smaller and simpler version of the Unified # Reduced formspec layout, optimized for smaller displays.
#Inventory, optimized for small displays. # Note: This may also disable some features to free up visual space.
unified_inventory_lite (Lite mode) bool false unified_inventory_lite (Lite mode) bool false
#If enabled, bags will be made available which can be used to extend # Provides craftable bag items to extend the inventory space.
#inventory storage size.
unified_inventory_bags (Enable bags) bool true unified_inventory_bags (Enable bags) bool true
#If enabled, the trash slot can be used by those without both creative # Shows the trash slot to everyone.
#and the give privilege. # When disabled, only players with the privilege "creative" or "give" will
# have this slot shown in their inventory.
unified_inventory_trash (Enable trash) bool true unified_inventory_trash (Enable trash) bool true
#If enabled, disabled buttons will be hidden instead of grayed out. # Provides waypoints on a per-player basis to remember positions on the map.
unified_inventory_waypoints (Enable waypoints) bool true
# If enabled, disabled buttons will be hidden instead of grayed out.
unified_inventory_hide_disabled_buttons (Hide disabled buttons) bool false unified_inventory_hide_disabled_buttons (Hide disabled buttons) bool false
# Hides items with no known craft recipe from the category "all" (default).
# This setting has no effect on players in creative mode.
unified_inventory_hide_uncraftable_items (Hide uncraftable items) bool false
unified_inventory_automatic_categorization (Items automatically added to categories) bool true # Automatically categorizes registered items based on their
# groups. This is based on a fuzzy match, thus is not 100% accurate.
unified_inventory_automatic_categorization (Categories: add items automatically) bool true
# Shows the selected wielded item description in the HUD for a few seconds.
unified_inventory_item_names (Enable HUD item names) bool true
# Trims the shown wielded item description to the first line.
unified_inventory_only_names (HUD item name: first line only) bool true
# Hard character limit of the wielded item description.
# Crops the shown description to the specified length.
# 0 disables this functionality.
unified_inventory_max_item_name_length (HUD item names: character limit) int 80

View File

@ -103,7 +103,7 @@ local function get_waypoint_data(player)
end end
ui.register_page("waypoints", { ui.register_page("waypoints", {
get_formspec = function(player) get_formspec = function(player, perplayer_formspec)
local player_name = player:get_player_name() local player_name = player:get_player_name()
local wp_info_x = ui.style_full.form_header_x + 1.25 local wp_info_x = ui.style_full.form_header_x + 1.25
local wp_info_y = ui.style_full.form_header_y + 0.5 local wp_info_y = ui.style_full.form_header_y + 0.5
@ -115,12 +115,16 @@ ui.register_page("waypoints", {
local sel = waypoints.selected or 1 local sel = waypoints.selected or 1
local formspec = { local formspec = {
ui.style_full.standard_inv_bg,
string.format("label[%f,%f;%s]", string.format("label[%f,%f;%s]",
ui.style_full.form_header_x, ui.style_full.form_header_y, F(S("Waypoints"))), ui.style_full.form_header_x, ui.style_full.form_header_y, F(S("Waypoints"))),
"image["..wp_info_x..","..wp_info_y..";1,1;ui_waypoints_icon.png]" "image["..wp_info_x..","..wp_info_y..";1,1;ui_waypoints_icon.png]"
} }
local n=4 local n=3
if not perplayer_formspec.is_lite_mode then
formspec[n] = ui.style_full.standard_inv_bg
n = n + 1
end
-- Tabs buttons: -- Tabs buttons:
for i = 1, COUNT do for i = 1, COUNT do
@ -212,7 +216,10 @@ ui.register_page("waypoints", {
formspec[n+2] = string.format("label[%f,%f;%s: %s]", formspec[n+2] = string.format("label[%f,%f;%s: %s]",
wp_info_x, wp_info_y+2.60, F(S("HUD text color")), hud_colors[waypoint.color or 1][3]) wp_info_x, wp_info_y+2.60, F(S("HUD text color")), hud_colors[waypoint.color or 1][3])
return {formspec=table.concat(formspec)} return {
formspec = table.concat(formspec),
draw_inventory = not perplayer_formspec.is_lite_mode,
}
end, end,
}) })
@ -220,7 +227,6 @@ ui.register_button("waypoints", {
type = "image", type = "image",
image = "ui_waypoints_icon.png", image = "ui_waypoints_icon.png",
tooltip = S("Waypoints"), tooltip = S("Waypoints"),
hide_lite=true
}) })
local function update_hud(player, waypoints, temp, i) local function update_hud(player, waypoints, temp, i)