Compare commits
16 Commits
8e6a3740ae
...
version-1
Author | SHA1 | Date | |
---|---|---|---|
d1a4396fbe | |||
fbbf786caf | |||
ae124b02c2 | |||
ebd1d1f245 | |||
0f756a5d33 | |||
341a438267 | |||
d86592841e | |||
f25426911d | |||
04b2edceb4 | |||
5a24e9f6fc | |||
eb96c89b5d | |||
606ba6a1a3 | |||
c0bd9977be | |||
26e0e41593 | |||
a89245c41b | |||
f5c982cc85 |
11
.github/workflows/check-release.yml
vendored
Normal file
@ -0,0 +1,11 @@
|
||||
on: [push, pull_request]
|
||||
name: Check & Release
|
||||
jobs:
|
||||
lint:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@master
|
||||
- name: lint
|
||||
uses: Roang-zero1/factorio-mod-luacheck@master
|
||||
with:
|
||||
luacheckrc_url: https://raw.githubusercontent.com/minetest-mods/unified_inventory/master/.luacheckrc
|
20
.luacheckrc
Normal file
@ -0,0 +1,20 @@
|
||||
unused_args = false
|
||||
allow_defined_top = true
|
||||
max_line_length = 999
|
||||
|
||||
globals = {
|
||||
"unified_inventory",
|
||||
}
|
||||
|
||||
read_globals = {
|
||||
string = {fields = {"split", "trim"}},
|
||||
table = {fields = {"copy", "getn"}},
|
||||
|
||||
"minetest", "vector",
|
||||
"ItemStack", "datastorage",
|
||||
|
||||
"hb",
|
||||
}
|
||||
|
||||
files["callbacks.lua"].ignore = { "player", "draw_lite_mode" }
|
||||
files["bags.lua"].ignore = { "player" }
|
@ -1,5 +1,9 @@
|
||||
# Unified Inventory
|
||||
|
||||
[](https://github.com/minetest-mods/unified_inventory/actions)
|
||||
|
||||

|
||||
|
||||
Unified Inventory replaces the default survival and creative inventory.
|
||||
|
||||
|
||||
@ -13,15 +17,14 @@ Unified Inventory replaces the default survival and creative inventory.
|
||||
* Home function to teleport
|
||||
* Trash slot
|
||||
* Lite mode: reduces the item browser width
|
||||
* `minetest.conf` setting `unified_inventory_lite = true`
|
||||
* Mod API for modders: see [mod_api.txt](doc/mod_api.txt)
|
||||
* Setting-determinated features: see [settingtypes.txt](settingtypes.txt)
|
||||
|
||||
|
||||
## Requirements
|
||||
|
||||
* Minetest 5.0.0+ since commit 4403b69
|
||||
* Minetest 0.4.16+ prior commit 4403b69
|
||||
|
||||
* Minetest 5.0.0+
|
||||
|
||||
# Licenses
|
||||
|
||||
|
6
api.lua
@ -16,8 +16,8 @@ minetest.after(0.01, function()
|
||||
table.insert(unified_inventory.items_list, name)
|
||||
local all_names = rev_aliases[name] or {}
|
||||
table.insert(all_names, name)
|
||||
for _, name in ipairs(all_names) do
|
||||
local recipes = minetest.get_all_craft_recipes(name)
|
||||
for _, player_name in ipairs(all_names) do
|
||||
local recipes = minetest.get_all_craft_recipes(player_name)
|
||||
if recipes then
|
||||
for _, recipe in ipairs(recipes) do
|
||||
|
||||
@ -188,7 +188,9 @@ function unified_inventory.go_home(player)
|
||||
local pos = unified_inventory.home_pos[player:get_player_name()]
|
||||
if pos then
|
||||
player:set_pos(pos)
|
||||
return true
|
||||
end
|
||||
return false
|
||||
end
|
||||
|
||||
-- register_craft
|
||||
|
48
bags.lua
@ -1,4 +1,4 @@
|
||||
--[[
|
||||
--[[
|
||||
Bags for Minetest
|
||||
|
||||
Copyright (c) 2012 cornernote, Brett O'Donnell <cornernote@gmail.com>
|
||||
@ -7,22 +7,24 @@ License: GPLv3
|
||||
|
||||
local S = minetest.get_translator("unified_inventory")
|
||||
local F = minetest.formspec_escape
|
||||
local bags_inv_bg_prefix = "image[-0.1,1.0;10.05,"
|
||||
|
||||
unified_inventory.register_page("bags", {
|
||||
get_formspec = function(player)
|
||||
local player_name = player:get_player_name()
|
||||
return { formspec = table.concat({
|
||||
"background[0.06,0.99;7.92,7.52;ui_bags_main_form.png]",
|
||||
string.gsub(unified_inventory.standard_inv_bg, "YYY", "4.4"),
|
||||
bags_inv_bg_prefix.."1.175;ui_bags_header.png]",
|
||||
"label[0,0;" .. F(S("Bags")) .. "]",
|
||||
"button[0,2;2,0.5;bag1;" .. F(S("Bag @1", 1)) .. "]",
|
||||
"button[2,2;2,0.5;bag2;" .. F(S("Bag @1", 2)) .. "]",
|
||||
"button[4,2;2,0.5;bag3;" .. F(S("Bag @1", 3)) .. "]",
|
||||
"button[6,2;2,0.5;bag4;" .. F(S("Bag @1", 4)) .. "]",
|
||||
"button[0,2.2;2,0.5;bag1;" .. F(S("Bag @1", 1)) .. "]",
|
||||
"button[2,2.2;2,0.5;bag2;" .. F(S("Bag @1", 2)) .. "]",
|
||||
"button[4,2.2;2,0.5;bag3;" .. F(S("Bag @1", 3)) .. "]",
|
||||
"button[6,2.2;2,0.5;bag4;" .. F(S("Bag @1", 4)) .. "]",
|
||||
"listcolors[#00000000;#00000000]",
|
||||
"list[detached:" .. F(player_name) .. "_bags;bag1;0.5,1;1,1;]",
|
||||
"list[detached:" .. F(player_name) .. "_bags;bag2;2.5,1;1,1;]",
|
||||
"list[detached:" .. F(player_name) .. "_bags;bag3;4.5,1;1,1;]",
|
||||
"list[detached:" .. F(player_name) .. "_bags;bag4;6.5,1;1,1;]"
|
||||
"list[detached:" .. F(player_name) .. "_bags;bag1;0.5,1.1;1,1;]",
|
||||
"list[detached:" .. F(player_name) .. "_bags;bag2;2.5,1.1;1,1;]",
|
||||
"list[detached:" .. F(player_name) .. "_bags;bag3;4.5,1.1;1,1;]",
|
||||
"list[detached:" .. F(player_name) .. "_bags;bag4;6.5,1.1;1,1;]"
|
||||
}) }
|
||||
end,
|
||||
})
|
||||
@ -47,26 +49,27 @@ for bag_i = 1, 4 do
|
||||
local stack = get_player_bag_stack(player, bag_i)
|
||||
local image = stack:get_definition().inventory_image
|
||||
local fs = {
|
||||
string.gsub(unified_inventory.standard_inv_bg, "YYY", "4.4"),
|
||||
"image[7,0;1,1;" .. image .. "]",
|
||||
"label[0,0;" .. F(S("Bag @1", bag_i)) .. "]",
|
||||
"listcolors[#00000000;#00000000]",
|
||||
"list[current_player;bag" .. bag_i .. "contents;0,1;8,3;]",
|
||||
"list[current_player;bag" .. bag_i .. "contents;0,1.1;8,3;]",
|
||||
"listring[current_name;bag" .. bag_i .. "contents]",
|
||||
"listring[current_player;main]"
|
||||
"listring[current_player;main]",
|
||||
}
|
||||
local slots = stack:get_definition().groups.bagslots
|
||||
if slots == 8 then
|
||||
fs[#fs + 1] = "background[0.06,0.99;7.92,7.52;ui_bags_sm_form.png]"
|
||||
fs[#fs + 1] = bags_inv_bg_prefix.."1.175;ui_bags_inv_small.png]"
|
||||
elseif slots == 16 then
|
||||
fs[#fs + 1] = "background[0.06,0.99;7.92,7.52;ui_bags_med_form.png]"
|
||||
fs[#fs + 1] = bags_inv_bg_prefix.."2.35;ui_bags_inv_medium.png]"
|
||||
elseif slots == 24 then
|
||||
fs[#fs + 1] = "background[0.06,0.99;7.92,7.52;ui_bags_lg_form.png]"
|
||||
fs[#fs + 1] = bags_inv_bg_prefix.."3.525;ui_bags_inv_large.png]"
|
||||
end
|
||||
local player_name = player:get_player_name() -- For if statement.
|
||||
if unified_inventory.trash_enabled
|
||||
or unified_inventory.is_creative(player_name)
|
||||
or minetest.get_player_privs(player_name).give then
|
||||
fs[#fs + 1] = "background[6.06,0;0.92,0.92;ui_bags_trash.png]"
|
||||
fs[#fs + 1] = "image[5.91,-0.06;1.21,1.15;ui_bags_trash.png]"
|
||||
.. "list[detached:trash;main;6,0.1;1,1;]"
|
||||
end
|
||||
local inv = player:get_inventory()
|
||||
@ -132,7 +135,7 @@ end
|
||||
local function load_bags_metadata(player, bags_inv)
|
||||
local player_inv = player:get_inventory()
|
||||
local meta = player:get_meta()
|
||||
local bags_meta = meta:get_string("unified_inventory:bags")
|
||||
local bags_meta = meta:get("unified_inventory:bags")
|
||||
local bags = bags_meta and minetest.deserialize(bags_meta) or {}
|
||||
local dirty_meta = false
|
||||
if not bags_meta then
|
||||
@ -166,7 +169,6 @@ local function load_bags_metadata(player, bags_inv)
|
||||
end
|
||||
|
||||
minetest.register_on_joinplayer(function(player)
|
||||
local player_inv = player:get_inventory()
|
||||
local player_name = player:get_player_name()
|
||||
local bags_inv = minetest.create_detached_inventory(player_name .. "_bags",{
|
||||
on_put = function(inv, listname, index, stack, player)
|
||||
@ -250,7 +252,7 @@ if minetest.get_modpath("farming") ~= nil then
|
||||
minetest.register_craft({
|
||||
output = "unified_inventory:bag_small",
|
||||
recipe = {
|
||||
{"", "farming:cotton", ""},
|
||||
{"", "farming:string", ""},
|
||||
{"group:wool", "group:wool", "group:wool"},
|
||||
{"group:wool", "group:wool", "group:wool"},
|
||||
},
|
||||
@ -260,8 +262,8 @@ if minetest.get_modpath("farming") ~= nil then
|
||||
output = "unified_inventory:bag_medium",
|
||||
recipe = {
|
||||
{"", "", ""},
|
||||
{"farming:cotton", "unified_inventory:bag_small", "farming:cotton"},
|
||||
{"farming:cotton", "unified_inventory:bag_small", "farming:cotton"},
|
||||
{"farming:string", "unified_inventory:bag_small", "farming:string"},
|
||||
{"farming:string", "unified_inventory:bag_small", "farming:string"},
|
||||
},
|
||||
})
|
||||
|
||||
@ -269,8 +271,8 @@ if minetest.get_modpath("farming") ~= nil then
|
||||
output = "unified_inventory:bag_large",
|
||||
recipe = {
|
||||
{"", "", ""},
|
||||
{"farming:cotton", "unified_inventory:bag_medium", "farming:cotton"},
|
||||
{"farming:cotton", "unified_inventory:bag_medium", "farming:cotton"},
|
||||
{"farming:string", "unified_inventory:bag_medium", "farming:string"},
|
||||
{"farming:string", "unified_inventory:bag_medium", "farming:string"},
|
||||
},
|
||||
})
|
||||
end
|
||||
|
@ -28,7 +28,6 @@ minetest.register_on_joinplayer(function(player)
|
||||
-- Refill slot
|
||||
local refill = minetest.create_detached_inventory(player_name.."refill", {
|
||||
allow_put = function(inv, listname, index, stack, player)
|
||||
local player_name = player:get_player_name()
|
||||
if unified_inventory.is_creative(player_name) then
|
||||
return stack:get_count()
|
||||
else
|
||||
@ -36,7 +35,6 @@ minetest.register_on_joinplayer(function(player)
|
||||
end
|
||||
end,
|
||||
on_put = function(inv, listname, index, stack, player)
|
||||
local player_name = player:get_player_name()
|
||||
local handle_refill = (minetest.registered_items[stack:get_name()] or {}).on_refill or default_refill
|
||||
stack = handle_refill(stack)
|
||||
inv:set_stack(listname, index, stack)
|
||||
|
@ -1,5 +0,0 @@
|
||||
default
|
||||
creative?
|
||||
sfinv?
|
||||
datastorage?
|
||||
farming?
|
@ -1 +0,0 @@
|
||||
Unified Inventory replaces the default survival and creative inventory. It adds a nicer interface and a number of features, such as a crafting guide.
|
7
init.lua
@ -44,7 +44,10 @@ unified_inventory = {
|
||||
main_button_y = 9,
|
||||
craft_result_x = 0.3,
|
||||
craft_result_y = 0.5,
|
||||
form_header_y = 0
|
||||
form_header_y = 0,
|
||||
standard_background = "background[-0.2,-0.2;1,1;ui_form_bg.png;true]", -- the 'true' scales to fill, overrides the 1,1
|
||||
standard_inv = "list[current_player;main;0,YYY;8,4;]", -- the YYY's are placeholders which get
|
||||
standard_inv_bg = "image[-0.1,YYY;10.05,4.70;ui_main_inventory.png]", -- replaced later by string.gsub()
|
||||
}
|
||||
|
||||
-- Disable default creative inventory
|
||||
@ -77,5 +80,3 @@ dofile(modpath.."/item_names.lua")
|
||||
if minetest.get_modpath("datastorage") then
|
||||
dofile(modpath.."/waypoints.lua")
|
||||
end
|
||||
|
||||
minetest.log("action", "[unified_inventory] loaded.")
|
||||
|
24
internal.lua
@ -65,13 +65,13 @@ function unified_inventory.get_formspec(player, page)
|
||||
local formspec = {
|
||||
"size[14,10]",
|
||||
pagedef.formspec_prepend and "" or "no_prepend[]",
|
||||
"background[-0.19,-0.25;14.4,10.75;ui_form_bg.png]" -- Background
|
||||
unified_inventory.standard_background -- Background
|
||||
}
|
||||
local n = 4
|
||||
|
||||
if draw_lite_mode then
|
||||
formspec[1] = "size[11,7.7]"
|
||||
formspec[3] = "background[-0.19,-0.2;11.4,8.4;ui_form_bg.png]"
|
||||
formspec[3] = unified_inventory.standard_background
|
||||
end
|
||||
|
||||
if unified_inventory.is_creative(player_name)
|
||||
@ -99,21 +99,17 @@ function unified_inventory.get_formspec(player, page)
|
||||
end
|
||||
end
|
||||
|
||||
local j = 1 --Modif NALC (sys4 20/11/2018) 12 buttons max by row
|
||||
for i, def in pairs(filtered_inv_buttons) do
|
||||
|
||||
if draw_lite_mode and i > 4 then
|
||||
button_row = 1
|
||||
button_col = 1
|
||||
elseif not draw_lite_mode and j > 12 then
|
||||
button_row = 1
|
||||
j = 1
|
||||
end
|
||||
|
||||
if def.type == "image" then
|
||||
if (def.condition == nil or def.condition(player) == true) then
|
||||
formspec[n] = "image_button["
|
||||
formspec[n+1] = ( ui_peruser.main_button_x + 0.65 * (j - 1) - button_col * 0.65 * 4) -- Modif NALC
|
||||
formspec[n+1] = ( ui_peruser.main_button_x + 0.65 * (i - 1) - button_col * 0.65 * 4)
|
||||
formspec[n+2] = ","..(ui_peruser.main_button_y + button_row * 0.7)..";0.8,0.8;"
|
||||
formspec[n+3] = F(def.image)..";"
|
||||
formspec[n+4] = F(def.name)..";]"
|
||||
@ -122,20 +118,19 @@ function unified_inventory.get_formspec(player, page)
|
||||
n = n+7
|
||||
else
|
||||
formspec[n] = "image["
|
||||
formspec[n+1] = ( ui_peruser.main_button_x + 0.65 * (j - 1) - button_col * 0.65 * 4) -- Modif NALC
|
||||
formspec[n+1] = ( ui_peruser.main_button_x + 0.65 * (i - 1) - button_col * 0.65 * 4)
|
||||
formspec[n+2] = ","..(ui_peruser.main_button_y + button_row * 0.7)..";0.8,0.8;"
|
||||
formspec[n+3] = F(def.image).."^[colorize:#808080:alpha]"
|
||||
n = n+4
|
||||
|
||||
end
|
||||
end
|
||||
j = j + 1 -- Modif NALC
|
||||
end
|
||||
|
||||
if fsdata.draw_inventory ~= false then
|
||||
-- Player inventory
|
||||
formspec[n] = "listcolors[#00000000;#00000000]"
|
||||
formspec[n+1] = "list[current_player;main;0,"..(ui_peruser.formspec_y + 3.5)..";8,4;]"
|
||||
formspec[n+1] = string.gsub(unified_inventory.standard_inv, "YYY", ui_peruser.formspec_y + 3.5)
|
||||
n = n+2
|
||||
end
|
||||
|
||||
@ -220,11 +215,10 @@ function unified_inventory.get_formspec(player, page)
|
||||
else
|
||||
local dir = unified_inventory.active_search_direction[player_name]
|
||||
local list_index = unified_inventory.current_index[player_name]
|
||||
local page = math.floor(list_index / (ui_peruser.items_per_page) + 1)
|
||||
local page2 = math.floor(list_index / (ui_peruser.items_per_page) + 1)
|
||||
local pagemax = math.floor(
|
||||
(#unified_inventory.filtered_items_list[player_name] - 1)
|
||||
/ (ui_peruser.items_per_page) + 1)
|
||||
local item = {}
|
||||
for y = 0, ui_peruser.pagerows - 1 do
|
||||
for x = 0, ui_peruser.pagecols - 1 do
|
||||
local name = unified_inventory.filtered_items_list[player_name][list_index]
|
||||
@ -259,7 +253,7 @@ function unified_inventory.get_formspec(player, page)
|
||||
end
|
||||
end
|
||||
formspec[n] = "label[8.2,"..ui_peruser.form_header_y..";"..F(S("Page")) .. ": "
|
||||
.. S("@1 of @2",page,pagemax).."]"
|
||||
.. S("@1 of @2",page2,pagemax).."]"
|
||||
end
|
||||
n= n+1
|
||||
|
||||
@ -296,10 +290,14 @@ function unified_inventory.apply_filter(player, filter, search_dir)
|
||||
return true
|
||||
end
|
||||
else
|
||||
local lang = minetest.get_player_information(player_name).lang_code
|
||||
ffilter = function(name, def)
|
||||
local lname = string.lower(name)
|
||||
local ldesc = string.lower(def.description)
|
||||
local llocaldesc = minetest.get_translated_string
|
||||
and string.lower(minetest.get_translated_string(lang, def.description))
|
||||
return string.find(lname, lfilter, 1, true) or string.find(ldesc, lfilter, 1, true)
|
||||
or llocaldesc and string.find(llocaldesc, lfilter, 1, true)
|
||||
end
|
||||
end
|
||||
unified_inventory.filtered_items_list[player_name]={}
|
||||
|
@ -1,25 +1,25 @@
|
||||
-- Based on 4itemnames mod by 4aiman
|
||||
|
||||
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 air_hud_mod = minetest.get_modpath("4air")
|
||||
local hud_mod = minetest.get_modpath("hud")
|
||||
local hudbars_mod = minetest.get_modpath("hudbars")
|
||||
|
||||
local function set_hud(player)
|
||||
local player_name = player:get_player_name()
|
||||
local off = {x=0, y=-70}
|
||||
if air_hud_mod or hud_mod then
|
||||
off.y = off.y - 20
|
||||
elseif hudbars_mod then
|
||||
off.y = off.y + 13
|
||||
local off = {x=0, y=-65}
|
||||
if hudbars_mod then
|
||||
-- Assume no alignment (2 per line)
|
||||
off.y = off.y - math.ceil(hb.hudbars_count / 2) * 25
|
||||
else
|
||||
off.y = off.y - 25
|
||||
end
|
||||
|
||||
item_names[player_name] = {
|
||||
hud = player:hud_add({
|
||||
hud_elem_type = "text",
|
||||
position = {x=0.5, y=1},
|
||||
offset = off,
|
||||
alignment = {x=0, y=0},
|
||||
alignment = {x=0, y=-1},
|
||||
number = 0xFFFFFF,
|
||||
text = "",
|
||||
}),
|
||||
|
@ -1,38 +1,100 @@
|
||||
# textdomain: unified_inventory
|
||||
Crafting=Elaboración
|
||||
Cooking=hornear
|
||||
Bags=Bolsas
|
||||
Bag @1=Bolsa @1
|
||||
Small Bag=Bolsa Pequeña
|
||||
Medium Bag=Bolsa Mediana
|
||||
Large Bag=Bolsa Grande
|
||||
Page=Página
|
||||
@1 of @2=@1 de @2
|
||||
Filter=Filtro
|
||||
Can use the creative inventory=Puede usar el inventario creativo
|
||||
Crafting Guide=Guía de Elaboración
|
||||
Set home position=Posición en el mundo
|
||||
Home position set to: @1=Posición de hogar cambiada a: @1
|
||||
You don't have the "home" privilege!=¡No tienes el privilegio "home"!
|
||||
Time of day set to 6am=Hora del día cambiada a 6AM
|
||||
You don't have the settime privilege!=¡No tienes el privilegio "settime"!
|
||||
Time of day set to 9pm=Hora del día cambiada a 9PM
|
||||
Inventory cleared!=¡Inventario limpio!
|
||||
Trash:=Basura:
|
||||
Refill:=Rellenar:
|
||||
Recipe @1 of @2=Receta @1 de @2
|
||||
Result=Resultado
|
||||
To craft grid:=Copiar al cuadro de elaboración
|
||||
All=Todos
|
||||
|
||||
# waypoints.lua
|
||||
|
||||
White=Blanco
|
||||
Yellow=Amarillo
|
||||
Red=Rojo
|
||||
Green=Verde
|
||||
Blue=Azul
|
||||
Waypoints=Puntos de paso
|
||||
Waypoint @1=Puntos de paso @1
|
||||
Waypoint active=Punto de paso activo
|
||||
Waypoint inactive=Punto de paso inactivo
|
||||
Waypoints=Puntos
|
||||
Select Waypoint #@1=Seleccionar Punto #@1
|
||||
Waypoint @1=Punto @1
|
||||
Set waypoint to current location=Establecer el punto a la ubicación actual
|
||||
Make waypoint @1=Hacer punto @1
|
||||
invisible=invisible
|
||||
visible=visible
|
||||
@1 display of waypoint coordinates=Visualizar coordenadas del punto @1
|
||||
Disable=Deshabilitado
|
||||
Enable=Habilitado
|
||||
Change color of waypoint display=Cambiar el color del punto
|
||||
Edit waypoint name=Editar nombre del punto
|
||||
Waypoint active=Punto activo
|
||||
Waypoint inactive=Punto inactivo
|
||||
Finish editing=Terminar edición
|
||||
World position=Posición en el mundo
|
||||
Name=Nombre
|
||||
HUD text color=Color del HUD
|
||||
HUD text color=Color del texto de la Interfaz
|
||||
|
||||
# group.lua
|
||||
|
||||
and = y
|
||||
|
||||
# register.lua
|
||||
|
||||
Can use the creative inventory=Puede usar el inventario creativo
|
||||
Forces Unified Inventory to be displayed in Full mode if Lite mode is configured globally=Obliga al Inventario Unificado a mostrarse en modo Completo si el modo Simple está configurado globalmente
|
||||
Crafting Grid=Cuadricula de Elaboración
|
||||
Crafting Guide=Guía de Elaboración
|
||||
Set home position=Establecer posición de la casa
|
||||
Home position set to: @1=Posición de la casa cambiada a: @1
|
||||
You don't have the \"home\" privilege!=¡No tienes el privilegio \"home\"!
|
||||
Go home=Ir a casa
|
||||
Set time to day=Cambiar a dia
|
||||
Set time to night=Cambiar a noche
|
||||
Time of day set to 6am=Hora del día cambiada a 6 AM
|
||||
Time of day set to 9pm=Hora del día cambiada a 9 PM
|
||||
You don't have the settime privilege!=¡No tienes el privilegio "settime"!
|
||||
Clear inventory=Limpiar inventario
|
||||
Inventory cleared!=¡Inventario limpio!
|
||||
This button has been disabled outside=Este botón ha sido deshabilitado
|
||||
Crafting=Elaboración
|
||||
Trash:=Basura:
|
||||
Refill:=Rellenar:
|
||||
Any item belonging to the @1 group=Cualquier elemento que pertenezca al grupo @1
|
||||
Any item belonging to the groups @1=Cualquier elemento perteneciente a los grupos @1
|
||||
Recipe @1 of @2=Receta @1 de @2
|
||||
Usage @1 of @2=Uso @1 de @2
|
||||
No recipes=No tiene receta
|
||||
No usages=No tiene uso
|
||||
Result=Resultado
|
||||
Ingredient=Ingrediente
|
||||
Show next recipe=Mostrar la siguiente receta
|
||||
Show next usage=Mostrar el siguiente uso
|
||||
Show previous recipe=Mostrar la receta anterior
|
||||
Show previous usage=Mostrar el uso anterior
|
||||
@1 (@2)=@1 (@2)
|
||||
Give me:=Dame:
|
||||
This recipe is too@nlarge to be displayed.=Esta receta es demasiado@ngrande para ser mostrada.
|
||||
To craft grid:=Construir:
|
||||
All=Todos
|
||||
|
||||
# api.lua
|
||||
|
||||
Mixing=Mezclar
|
||||
Cooking=Hornear
|
||||
Digging=Recoger
|
||||
|
||||
# internal.lua
|
||||
|
||||
First page=Primera página
|
||||
Back three pages=Volver tres páginas
|
||||
Back one page=Volver una página
|
||||
Forward one page=Avanzar una página
|
||||
Forward three pages=Avanzar tres páginas
|
||||
Last page=Ultima Pagina
|
||||
Search=Buscar
|
||||
Reset search and display everything=Limpiar la busqueda y mostrar todo
|
||||
No matching items=No se encontraron elementos
|
||||
No matches.=No hay resultados.
|
||||
Page=Página
|
||||
@1 of @2=@1 de @2
|
||||
Filter=Filtro
|
||||
|
||||
# bags.lua
|
||||
|
||||
Bags=Bolsos
|
||||
Bag @1=Bolso @1
|
||||
Small Bag=Bolso Pequeño
|
||||
Medium Bag=Bolso Mediano
|
||||
Large Bag=Bolso Grande
|
||||
|
100
locale/unified_inventory.template.tr
Normal file
@ -0,0 +1,100 @@
|
||||
# textdomain: unified_inventory
|
||||
|
||||
# waypoints.lua
|
||||
|
||||
White=
|
||||
Yellow=
|
||||
Red=
|
||||
Green=
|
||||
Blue=
|
||||
Waypoints=
|
||||
Select Waypoint #@1=
|
||||
Waypoint @1=
|
||||
Set waypoint to current location=
|
||||
Make waypoint @1=
|
||||
invisible=
|
||||
visible=
|
||||
@1 display of waypoint coordinates=
|
||||
Disable=
|
||||
Enable=
|
||||
Change color of waypoint display=
|
||||
Edit waypoint name=
|
||||
Waypoint active=
|
||||
Waypoint inactive=
|
||||
Finish editing=
|
||||
World position=
|
||||
Name=
|
||||
HUD text color=
|
||||
|
||||
# group.lua
|
||||
|
||||
and =
|
||||
|
||||
# register.lua
|
||||
|
||||
Can use the creative inventory=
|
||||
Forces Unified Inventory to be displayed in Full mode if Lite mode is configured globally=
|
||||
Crafting Grid=
|
||||
Crafting Guide=
|
||||
Set home position=
|
||||
Home position set to: @1=
|
||||
You don't have the \"home\" privilege!=
|
||||
Go home=
|
||||
Set time to day=
|
||||
Set time to night=
|
||||
Time of day set to 6am=
|
||||
Time of day set to 9pm=
|
||||
You don't have the settime privilege!=
|
||||
Clear inventory=
|
||||
Inventory cleared!=
|
||||
This button has been disabled outside=
|
||||
Crafting=
|
||||
Trash:=
|
||||
Refill:=
|
||||
Any item belonging to the @1 group=
|
||||
Any item belonging to the groups @1=
|
||||
Recipe @1 of @2=
|
||||
Usage @1 of @2=
|
||||
No recipes=
|
||||
No usages=
|
||||
Result=
|
||||
Ingredient=
|
||||
Show next recipe=
|
||||
Show next usage=
|
||||
Show previous recipe=
|
||||
Show previous usage=
|
||||
@1 (@2)=
|
||||
Give me:=
|
||||
This recipe is too@nlarge to be displayed.=
|
||||
To craft grid:=
|
||||
All=
|
||||
|
||||
# api.lua
|
||||
|
||||
Mixing=
|
||||
Cooking=
|
||||
Digging=
|
||||
|
||||
# internal.lua
|
||||
|
||||
First page=
|
||||
Back three pages=
|
||||
Back one page=
|
||||
Forward one page=
|
||||
Forward three pages=
|
||||
Last page=
|
||||
Search=
|
||||
Reset search and display everything=
|
||||
No matching items=
|
||||
No matches.=
|
||||
Page=
|
||||
@1 of @2=
|
||||
Filter=
|
||||
|
||||
# bags.lua
|
||||
|
||||
Bags=
|
||||
Bag @1=
|
||||
Small Bag=
|
||||
Medium Bag=
|
||||
Large Bag=
|
79
locale/unified_inventory.zh_CN.tr
Normal file
@ -0,0 +1,79 @@
|
||||
# textdomain: unified_inventory
|
||||
# traslation by: IFRFSX(BingFengFSX)
|
||||
#Email: IFRFSX@Protonmail.com
|
||||
|
||||
Crafting=合成
|
||||
Mixing=混合
|
||||
Cooking=烹饪
|
||||
Digging=挖出
|
||||
Bags=背包
|
||||
Bag @1=背包@1
|
||||
Small Bag=小背包
|
||||
Medium Bag=中背包
|
||||
Large Bag=大背包
|
||||
and = 和
|
||||
First page=第一页
|
||||
Back three pages=后退三页
|
||||
Back one page=后退一页
|
||||
Forward one page=前进一页
|
||||
Forward three pages=前进三页
|
||||
Last page=最后一页
|
||||
Search=搜索
|
||||
No matching items=没有匹配物品
|
||||
No matches.=没有匹配
|
||||
Page=页面
|
||||
@1 of @2=第@1页,共@2页
|
||||
Filter=过滤器
|
||||
Can use the creative inventory=可以使用创造背包
|
||||
Crafting Grid=合成表
|
||||
Crafting Guide=合成指南
|
||||
Set home position=设置家的位置
|
||||
Home position set to: @1=家的位置设置到: @1
|
||||
You don't have the "home" privilege!=你没有“home”权限!
|
||||
Go home=回家
|
||||
Set time to day=设置时间到白天
|
||||
Time of day set to 6am=时间设置到早晨6点
|
||||
You don't have the settime privilege!=你没有“settime”权限!
|
||||
Set time to night=设置时间到晚上
|
||||
Time of day set to 9pm=时间设置到晚上9点
|
||||
|
||||
Inventory cleared!=清空背包
|
||||
Clear inventory=清空背包
|
||||
|
||||
Trash:=丢弃:
|
||||
Refill:=填满:
|
||||
Recipe @1 of @2=第@1配方,共@2个
|
||||
Usage @1 of @2=第@1用法,共@2个
|
||||
No recipes=没有配方
|
||||
No usages=没有用法
|
||||
Result=结果
|
||||
Ingredient=原料
|
||||
Give me:=给予:
|
||||
To craft grid:=填充物品到合成表
|
||||
All=全部
|
||||
White=白
|
||||
Yellow=黄
|
||||
Red=红
|
||||
Green=绿
|
||||
Blue=蓝
|
||||
Waypoints=航路点
|
||||
Select Waypoint #@1=查询航路点 #@1
|
||||
Waypoint @1=航路点 @1
|
||||
Set waypoint to current location=将航路点设置到当前位置
|
||||
invisible=不可见的
|
||||
visible=可见的
|
||||
Make waypoint @1=设置航路点 @1
|
||||
@1 display of waypoint coordinates=显示航路点@1坐标
|
||||
Change color of waypoint display=改变航路点显示的颜色
|
||||
Edit waypoint name=编辑航路点名称
|
||||
Waypoint active=航路点已激活
|
||||
Waypoint inactive=航路点未激活
|
||||
Finish editing=完成编辑
|
||||
World position=世界位置
|
||||
Name=名称
|
||||
HUD text color=HUD文本颜色
|
||||
|
||||
Reset search and display everything=重置搜索并显示所有物品
|
||||
|
||||
Any item belonging to the @1 group=属于@1组的任何项目
|
||||
Any item belonging to the groups @1=属于组@1的任何项目
|
79
locale/unified_inventory.zh_TW.tr
Normal file
@ -0,0 +1,79 @@
|
||||
# textdomain: unified_inventory
|
||||
# traslation by: IFRFSX(BingFengFSX)
|
||||
#Email: IFRFSX@Protonmail.com
|
||||
|
||||
Crafting=合成
|
||||
Mixing=混合
|
||||
Cooking=烹飪
|
||||
Digging=挖出
|
||||
Bags=揹包
|
||||
Bag @1=揹包@1
|
||||
Small Bag=小揹包
|
||||
Medium Bag=中揹包
|
||||
Large Bag=大揹包
|
||||
and = 和
|
||||
First page=第一頁
|
||||
Back three pages=後退三頁
|
||||
Back one page=後退一頁
|
||||
Forward one page=前進一頁
|
||||
Forward three pages=前進三頁
|
||||
Last page=最後一頁
|
||||
Search=搜索
|
||||
No matching items=沒有匹配物品
|
||||
No matches.=沒有匹配
|
||||
Page=頁面
|
||||
@1 of @2=第@1頁,共@2頁
|
||||
Filter=過濾器
|
||||
Can use the creative inventory=可以使用創造揹包
|
||||
Crafting Grid=合成表
|
||||
Crafting Guide=合成指南
|
||||
Set home position=設置家的位置
|
||||
Home position set to: @1=家的位置設置到: @1
|
||||
You don't have the "home" privilege!=你沒有“home”權限!
|
||||
Go home=回家
|
||||
Set time to day=設置時間到白天
|
||||
Time of day set to 6am=時間設置到早晨6點
|
||||
You don't have the settime privilege!=你沒有“settime”權限!
|
||||
Set time to night=設置時間到晚上
|
||||
Time of day set to 9pm=時間設置到晚上9點
|
||||
|
||||
Inventory cleared!=清空揹包
|
||||
Clear inventory=清空揹包
|
||||
|
||||
Trash:=丟棄:
|
||||
Refill:=填滿:
|
||||
Recipe @1 of @2=第@1配方,共@2個
|
||||
Usage @1 of @2=第@1用法,共@2個
|
||||
No recipes=沒有配方
|
||||
No usages=沒有用法
|
||||
Result=結果
|
||||
Ingredient=原料
|
||||
Give me:=給予:
|
||||
To craft grid:=填充物品到合成表
|
||||
All=全部
|
||||
White=白
|
||||
Yellow=黃
|
||||
Red=紅
|
||||
Green=綠
|
||||
Blue=藍
|
||||
Waypoints=航路點
|
||||
Select Waypoint #@1=查詢航路點 #@1
|
||||
Waypoint @1=航路點 @1
|
||||
Set waypoint to current location=將航路點設置到當前位置
|
||||
invisible=不可見的
|
||||
visible=可見的
|
||||
Make waypoint @1=設置航路點 @1
|
||||
@1 display of waypoint coordinates=顯示航路點@1座標
|
||||
Change color of waypoint display=改變航路點顯示的顏色
|
||||
Edit waypoint name=編輯航路點名稱
|
||||
Waypoint active=航路點已激活
|
||||
Waypoint inactive=航路點未激活
|
||||
Finish editing=完成編輯
|
||||
World position=世界位置
|
||||
Name=名稱
|
||||
HUD text color=HUD文本顏色
|
||||
|
||||
Reset search and display everything=重置搜索並顯示所有物品
|
||||
|
||||
Any item belonging to the @1 group=屬於@1組的任何項目
|
||||
Any item belonging to the groups @1=屬於組@1的任何項目
|
5
mod.conf
@ -1,4 +1,7 @@
|
||||
name = unified_inventory
|
||||
depends = default
|
||||
optional_depends = creative, sfinv, datastorage, farming
|
||||
description = Unified Inventory replaces the default survival and creative inventory. It adds a nicer interface and a number of features, such as a crafting guide.
|
||||
description = """
|
||||
Unified Inventory replaces the default survival and creative inventory.
|
||||
It adds a nicer interface and a number of features, such as a crafting guide.
|
||||
"""
|
||||
|
55
register.lua
@ -41,6 +41,55 @@ unified_inventory.register_button("craftguide", {
|
||||
tooltip = S("Crafting Guide")
|
||||
})
|
||||
|
||||
unified_inventory.register_button("home_gui_set", {
|
||||
type = "image",
|
||||
image = "ui_sethome_icon.png",
|
||||
tooltip = S("Set home position"),
|
||||
hide_lite=true,
|
||||
action = function(player)
|
||||
local player_name = player:get_player_name()
|
||||
if minetest.check_player_privs(player_name, {home=true}) then
|
||||
unified_inventory.set_home(player, player:get_pos())
|
||||
local home = unified_inventory.home_pos[player_name]
|
||||
if home ~= nil then
|
||||
minetest.sound_play("dingdong",
|
||||
{to_player=player_name, gain = 1.0})
|
||||
minetest.chat_send_player(player_name,
|
||||
S("Home position set to: @1", minetest.pos_to_string(home)))
|
||||
end
|
||||
else
|
||||
minetest.chat_send_player(player_name,
|
||||
S("You don't have the \"home\" privilege!"))
|
||||
unified_inventory.set_inventory_formspec(player, unified_inventory.current_page[player_name])
|
||||
end
|
||||
end,
|
||||
condition = function(player)
|
||||
return minetest.check_player_privs(player:get_player_name(), {home=true})
|
||||
end,
|
||||
})
|
||||
|
||||
unified_inventory.register_button("home_gui_go", {
|
||||
type = "image",
|
||||
image = "ui_gohome_icon.png",
|
||||
tooltip = S("Go home"),
|
||||
hide_lite=true,
|
||||
action = function(player)
|
||||
local player_name = player:get_player_name()
|
||||
if minetest.check_player_privs(player_name, {home=true}) then
|
||||
if unified_inventory.go_home(player) then
|
||||
minetest.sound_play("teleport", {to_player = player_name})
|
||||
end
|
||||
else
|
||||
minetest.chat_send_player(player_name,
|
||||
S("You don't have the \"home\" privilege!"))
|
||||
unified_inventory.set_inventory_formspec(player, unified_inventory.current_page[player_name])
|
||||
end
|
||||
end,
|
||||
condition = function(player)
|
||||
return minetest.check_player_privs(player:get_player_name(), {home=true})
|
||||
end,
|
||||
})
|
||||
|
||||
unified_inventory.register_button("misc_set_day", {
|
||||
type = "image",
|
||||
image = "ui_sun_icon.png",
|
||||
@ -122,7 +171,7 @@ unified_inventory.register_page("craft", {
|
||||
|
||||
local player_name = player:get_player_name()
|
||||
local formspec = "background[2,"..formspecy..";6,3;ui_crafting_form.png]"
|
||||
formspec = formspec.."background[0,"..(formspecy + 3.5)..";8,4;ui_main_inventory.png]"
|
||||
formspec = formspec..string.gsub(unified_inventory.standard_inv_bg, "YYY", (formspecy + 3.4))
|
||||
formspec = formspec.."label[0,"..formheadery..";" ..F(S("Crafting")).."]"
|
||||
formspec = formspec.."listcolors[#00000000;#00000000]"
|
||||
formspec = formspec.."list[current_player;craftpreview;6,"..formspecy..";1,1;]"
|
||||
@ -219,7 +268,7 @@ unified_inventory.register_page("craftguide", {
|
||||
local player_name = player:get_player_name()
|
||||
local player_privs = minetest.get_player_privs(player_name)
|
||||
local fs = {
|
||||
"background[0,"..(formspecy + 3.5)..";8,4;ui_main_inventory.png]",
|
||||
string.gsub(unified_inventory.standard_inv_bg, "YYY", (formspecy + 3.4)),
|
||||
"label[0,"..formheadery..";" .. F(S("Crafting Guide")) .. "]",
|
||||
"listcolors[#00000000;#00000000]"
|
||||
}
|
||||
@ -337,7 +386,7 @@ unified_inventory.register_page("craftguide", {
|
||||
else
|
||||
-- Error
|
||||
fs[#fs + 1] = string.format("label[2,%f;%s]",
|
||||
formspecy, F(S("This recipe is too\nlarge to be displayed.")))
|
||||
formspecy, F(S("This recipe is too@nlarge to be displayed.")))
|
||||
end
|
||||
|
||||
if craft_type.uses_crafting_grid and display_size.width <= 3 then
|
||||
|
BIN
textures/ui_bags_header.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
BIN
textures/ui_bags_inv_large.png
Normal file
After Width: | Height: | Size: 3.3 KiB |
BIN
textures/ui_bags_inv_medium.png
Normal file
After Width: | Height: | Size: 2.2 KiB |
BIN
textures/ui_bags_inv_small.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 7.9 KiB |
Before Width: | Height: | Size: 5.9 KiB |
Before Width: | Height: | Size: 7.0 KiB |
Before Width: | Height: | Size: 6.3 KiB |
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 1003 B |
Before Width: | Height: | Size: 4.0 KiB After Width: | Height: | Size: 4.4 KiB |
Before Width: | Height: | Size: 5.2 KiB After Width: | Height: | Size: 5.7 KiB |
@ -23,7 +23,7 @@ unified_inventory.register_page("waypoints", {
|
||||
if not waypoints_temp[player_name] then waypoints_temp[player_name] = {hud = 1} end
|
||||
|
||||
local waypoints = datastorage.get(player_name, "waypoints")
|
||||
local formspec = "background[0,4.5;8,4;ui_main_inventory.png]" ..
|
||||
local formspec = string.gsub(unified_inventory.standard_inv_bg, "YYY", "4.4") ..
|
||||
"image[0,0;1,1;ui_waypoints_icon.png]" ..
|
||||
"label[1,0;" .. F(S("Waypoints")) .. "]"
|
||||
|
||||
|