This commit is contained in:
Jean-Patrick Guerrero 2021-01-13 22:16:46 +01:00
parent f2820c0328
commit 9901a6f8ea

151
init.lua
View File

@ -290,6 +290,10 @@ local function is_group(item)
end end
local function fmt(elem, ...) local function fmt(elem, ...)
if not fs_elements[elem] then
return sprintf(elem, ...)
end
return sprintf(fs_elements[elem], ...) return sprintf(fs_elements[elem], ...)
end end
@ -442,7 +446,7 @@ function i3.register_craft(def)
if true_str(def.url) then if true_str(def.url) then
if not http then if not http then
return err(sprintf([[i3.register_craft(): Unable to reach %s. return err(fmt([[i3.register_craft(): Unable to reach %s.
No HTTP support for this mod: add it to the `secure.http_mods` or No HTTP support for this mod: add it to the `secure.http_mods` or
`secure.trusted_mods` setting.]], def.url)) `secure.trusted_mods` setting.]], def.url))
end end
@ -610,7 +614,7 @@ local function toupper(str)
end end
local function snip(str, limit) local function snip(str, limit)
return #str > limit and sprintf("%s...", sub(str, 1, limit - 3)) or str return #str > limit and fmt("%s...", sub(str, 1, limit - 3)) or str
end end
local function get_desc(item, lang_code) local function get_desc(item, lang_code)
@ -769,7 +773,7 @@ local function drop_table(name, drop)
i3.register_craft{ i3.register_craft{
type = rarity and "digging_chance" or "digging", type = rarity and "digging_chance" or "digging",
items = {name}, items = {name},
output = sprintf("%s %u", dname, dcount), output = fmt("%s %u", dname, dcount),
rarity = rarity, rarity = rarity,
tools = di.tools, tools = di.tools,
} }
@ -915,7 +919,7 @@ local function sort_itemlist(player, az)
if next(meta.fields) or wear then if next(meta.fields) or wear then
stack_meta[#stack_meta + 1] = stack stack_meta[#stack_meta + 1] = stack
else else
new_inv[#new_inv + 1] = sprintf("%s %u", name, count) new_inv[#new_inv + 1] = fmt("%s %u", name, count)
end end
end end
end end
@ -963,7 +967,7 @@ local function compress_items(player)
local leftover = count local leftover = count
for _ = 1, iter do for _ = 1, iter do
_new_inv[#_new_inv + 1] = sprintf("%s %u", name, min(stackmax, leftover)) _new_inv[#_new_inv + 1] = fmt("%s %u", name, min(stackmax, leftover))
leftover = leftover - stackmax leftover = leftover - stackmax
end end
end end
@ -1036,7 +1040,7 @@ local function get_stack(player, pname, stack, message)
if inv:room_for_item("main", stack) then if inv:room_for_item("main", stack) then
inv:add_item("main", stack) inv:add_item("main", stack)
msg(pname, sprintf("%s added in your inventory", message)) msg(pname, fmt("%s added in your inventory", message))
else else
local dir = player:get_look_dir() local dir = player:get_look_dir()
local ppos = player:get_pos() local ppos = player:get_pos()
@ -1044,7 +1048,7 @@ local function get_stack(player, pname, stack, message)
local look_at = vec_add(ppos, vec_mul(dir, 1)) local look_at = vec_add(ppos, vec_mul(dir, 1))
core.add_item(look_at, stack) core.add_item(look_at, stack)
msg(pname, sprintf("%s spawned", message)) msg(pname, fmt("%s spawned", message))
end end
end end
@ -1054,7 +1058,7 @@ local function craft_stack(player, pname, data, craft_rcp)
local output = craft_rcp and data.recipes[data.rnum].output or data.usages[data.unum].output local output = craft_rcp and data.recipes[data.rnum].output or data.usages[data.unum].output
output = ItemStack(output) output = ItemStack(output)
local stackname, stackcount, stackmax = output:get_name(), output:get_count(), output:get_stack_max() local stackname, stackcount, stackmax = output:get_name(), output:get_count(), output:get_stack_max()
local scrbar_val = data[sprintf("scrbar_%s", craft_rcp and "rcp" or "usg")] or 1 local scrbar_val = data[fmt("scrbar_%s", craft_rcp and "rcp" or "usg")] or 1
for name, count in pairs(data.export_counts[rcp_usg].rcp) do for name, count in pairs(data.export_counts[rcp_usg].rcp) do
local items = {[name] = count} local items = {[name] = count}
@ -1079,7 +1083,7 @@ local function craft_stack(player, pname, data, craft_rcp)
end end
for k, v in pairs(items) do for k, v in pairs(items) do
inv:remove_item("main", sprintf("%s %s", k, v * scrbar_val)) inv:remove_item("main", fmt("%s %s", k, v * scrbar_val))
end end
end end
@ -1093,12 +1097,12 @@ local function craft_stack(player, pname, data, craft_rcp)
local message local message
if c > 1 then if c > 1 then
message = clr("#ff0", sprintf("%s x %s", c, desc)) message = clr("#ff0", fmt("%s x %s", c, desc))
else else
message = clr("#ff0", sprintf("%s", desc)) message = clr("#ff0", fmt("%s", desc))
end end
local stack = ItemStack(sprintf("%s %s", stackname, c)) local stack = ItemStack(fmt("%s %s", stackname, c))
get_stack(player, pname, stack, message) get_stack(player, pname, stack, message)
leftover = leftover - stackmax leftover = leftover - stackmax
end end
@ -1131,8 +1135,8 @@ local function select_item(player, name, data, _f)
if creative_enabled(name) then if creative_enabled(name) then
local stack = ItemStack(item) local stack = ItemStack(item)
local stackmax = stack:get_stack_max() local stackmax = stack:get_stack_max()
stack = sprintf("%s %s", item, stackmax) stack = fmt("%s %s", item, stackmax)
get_stack(player, name, stack, clr("#ff0", sprintf("%u x %s", stackmax, item))) get_stack(player, name, stack, clr("#ff0", fmt("%u x %s", stackmax, item)))
end end
return return
@ -1191,7 +1195,7 @@ local function get_tooltip(item, info)
end end
local function add(str) local function add(str)
return sprintf("%s\n%s", tooltip, str) return fmt("%s\n%s", tooltip, str)
end end
if info.cooktime then if info.cooktime then
@ -1232,8 +1236,7 @@ local function get_tooltip(item, info)
if several then if several then
for i = 1, #info.tools do for i = 1, #info.tools do
names = sprintf("%s\t\t- %s\n", names = fmt("%s\t\t- %s\n", names, clr("#ff0", get_desc(info.tools[i])))
names, clr("#ff0", get_desc(info.tools[i])))
end end
tooltip = add(S("Only drop if using one of these tools: @1", tooltip = add(S("Only drop if using one of these tools: @1",
@ -1244,7 +1247,7 @@ local function get_tooltip(item, info)
end end
end end
return sprintf("tooltip[%s;%s]", item, ESC(tooltip)) return fmt("tooltip[%s;%s]", item, ESC(tooltip))
end end
local function get_output_fs(fs, data, rcp, is_recipe, shapeless, right, btn_size, _btn_size) local function get_output_fs(fs, data, rcp, is_recipe, shapeless, right, btn_size, _btn_size)
@ -1255,7 +1258,7 @@ local function get_output_fs(fs, data, rcp, is_recipe, shapeless, right, btn_siz
shapeless and "shapeless" or "furnace" shapeless and "shapeless" or "furnace"
if not custom_recipe then if not custom_recipe then
icon = sprintf("i3_%s.png^[resize:16x16", icon) icon = fmt("i3_%s.png^[resize:16x16", icon)
end end
local pos_x = right + btn_size + 0.42 local pos_x = right + btn_size + 0.42
@ -1290,11 +1293,11 @@ local function get_output_fs(fs, data, rcp, is_recipe, shapeless, right, btn_siz
fs(fmt("image", X, Y - 0.11, bt_s, bt_s, PNG.slot)) fs(fmt("image", X, Y - 0.11, bt_s, bt_s, PNG.slot))
local _name = sprintf("_%s", name) local _name = fmt("_%s", name)
fs(fmt("item_image_button", fs(fmt("item_image_button",
X + 0.11, Y, ITEM_BTN_SIZE, ITEM_BTN_SIZE, X + 0.11, Y, ITEM_BTN_SIZE, ITEM_BTN_SIZE,
sprintf("%s %u", name, count * (is_recipe and data.scrbar_rcp or data.scrbar_usg or 1)), fmt("%s %u", name, count * (is_recipe and data.scrbar_rcp or data.scrbar_usg or 1)),
_name, "")) _name, ""))
local def = reg_items[name] local def = reg_items[name]
@ -1389,7 +1392,7 @@ local function get_grid_fs(fs, data, rcp, is_recipe)
end end
if not added then if not added then
label = sprintf("%s%s\nR", label ~= "" and "\n" or "", label) label = fmt("%s%s\nR", label ~= "" and "\n" or "", label)
replace.items[#replace.items + 1] = replacement[2] replace.items[#replace.items + 1] = replacement[2]
end end
end end
@ -1399,10 +1402,10 @@ local function get_grid_fs(fs, data, rcp, is_recipe)
fs(fmt("image", X, Y, btn_size, btn_size, PNG.slot)) fs(fmt("image", X, Y, btn_size, btn_size, PNG.slot))
end end
local btn_name = groups and sprintf("group|%s|%s", groups[1], item) or item local btn_name = groups and fmt("group|%s|%s", groups[1], item) or item
fs(fmt("item_image_button", X, Y, btn_size, btn_size, fs(fmt("item_image_button", X, Y, btn_size, btn_size,
sprintf("%s %u", item, is_recipe and data.scrbar_rcp or data.scrbar_usg or 1), fmt("%s %u", item, is_recipe and data.scrbar_rcp or data.scrbar_usg or 1),
btn_name, label)) btn_name, label))
local def = reg_items[name] local def = reg_items[name]
@ -1448,8 +1451,8 @@ local function get_rcp_lbl(fs, data, panel, rn, is_recipe)
if rn > 1 then if rn > 1 then
local btn_suffix = is_recipe and "recipe" or "usage" local btn_suffix = is_recipe and "recipe" or "usage"
local prev_name = sprintf("prev_%s", btn_suffix) local prev_name = fmt("prev_%s", btn_suffix)
local next_name = sprintf("next_%s", btn_suffix) local next_name = fmt("next_%s", btn_suffix)
local x_arrow = data.xoffset + 5.09 local x_arrow = data.xoffset + 5.09
local y_arrow = data.yoffset + 3.2 local y_arrow = data.yoffset + 3.2
@ -1481,19 +1484,19 @@ local function get_model_fs(fs, data, def, model_alias)
if v.color then if v.color then
if is_num(v.color) then if is_num(v.color) then
local hex = sprintf("%02x", v.color) local hex = fmt("%02x", v.color)
while #hex < 8 do while #hex < 8 do
hex = "0" .. hex hex = "0" .. hex
end end
_name = sprintf("%s^[multiply:%s", v.name, _name = fmt("%s^[multiply:%s", v.name,
sprintf("#%s%s", sub(hex, 3), sub(hex, 1, 2))) fmt("#%s%s", sub(hex, 3), sub(hex, 1, 2)))
else else
_name = sprintf("%s^[multiply:%s", v.name, v.color) _name = fmt("%s^[multiply:%s", v.name, v.color)
end end
elseif v.animation then elseif v.animation then
_name = sprintf("%s^[verticalframe:%u:0", v.name, v.animation.aspect_h) _name = fmt("%s^[verticalframe:%u:0", v.name, v.animation.aspect_h)
end end
t[#t + 1] = _name or v.name or v t[#t + 1] = _name or v.name or v
@ -1515,17 +1518,17 @@ local function get_header(fs, data)
local star_x, star_y, star_size = data.xoffset + 0.4, data.yoffset + 0.5, 0.4 local star_x, star_y, star_size = data.xoffset + 0.4, data.yoffset + 0.5, 0.4
if nfavs < MAX_FAVS or (nfavs == MAX_FAVS and fav) then if nfavs < MAX_FAVS or (nfavs == MAX_FAVS and fav) then
local fav_marked = sprintf("i3_fav%s.png", fav and "_off" or "") local fav_marked = fmt("i3_fav%s.png", fav and "_off" or "")
fs(sprintf("style[fav;fgimg=%s;fgimg_hovered=%s;fgimg_pressed=%s]", fs(fmt("style[fav;fgimg=%s;fgimg_hovered=%s;fgimg_pressed=%s]",
sprintf("i3_fav%s.png", fav and "" or "_off"), fav_marked, fav_marked), fmt("i3_fav%s.png", fav and "" or "_off"), fav_marked, fav_marked),
fmt("image_button", star_x, star_y, star_size, star_size, "", "fav", ""), fmt("image_button", star_x, star_y, star_size, star_size, "", "fav", ""),
sprintf("tooltip[fav;%s]", fav and ES"Unmark this item" or ES"Mark this item")) fmt("tooltip[fav;%s]", fav and ES"Unmark this item" or ES"Mark this item"))
else else
fs(sprintf("style[nofav;fgimg=%s;fgimg_hovered=%s;fgimg_pressed=%s]", fs(fmt("style[nofav;fgimg=%s;fgimg_hovered=%s;fgimg_pressed=%s]",
"i3_fav_off.png", PNG.cancel, PNG.cancel), "i3_fav_off.png", PNG.cancel, PNG.cancel),
fmt("image_button", star_x, star_y, star_size, star_size, "", "nofav", ""), fmt("image_button", star_x, star_y, star_size, star_size, "", "nofav", ""),
sprintf("tooltip[nofav;%s]", ES"Cannot mark this item. Bookmark limit reached.")) fmt("tooltip[nofav;%s]", ES"Cannot mark this item. Bookmark limit reached."))
end end
local desc_lim, name_lim = 32, 34 local desc_lim, name_lim = 32, 34
@ -1563,11 +1566,11 @@ local function get_export_fs(fs, data, panel, is_recipe, is_usage, max_stacks_rc
local name = is_recipe and "rcp" or "usg" local name = is_recipe and "rcp" or "usg"
local show_export = (is_recipe and data.export_rcp) or (is_usage and data.export_usg) local show_export = (is_recipe and data.export_rcp) or (is_usage and data.export_usg)
fs(sprintf("style[export_%s;fgimg=%s;fgimg_hovered=%s]", fs(fmt("style[export_%s;fgimg=%s;fgimg_hovered=%s]",
name, sprintf("%s", show_export and PNG.export_hover or PNG.export), PNG.export_hover), name, fmt("%s", show_export and PNG.export_hover or PNG.export), PNG.export_hover),
fmt("image_button", fmt("image_button",
data.xoffset + 7.35, data.yoffset + 0.2, 0.45, 0.45, "", sprintf("export_%s", name), ""), data.xoffset + 7.35, data.yoffset + 0.2, 0.45, 0.45, "", fmt("export_%s", name), ""),
sprintf("tooltip[export_%s;%s]", name, ES"Quick crafting")) fmt("tooltip[export_%s;%s]", name, ES"Quick crafting"))
if not show_export then return end if not show_export then return end
@ -1584,13 +1587,11 @@ local function get_export_fs(fs, data, panel, is_recipe, is_usage, max_stacks_rc
end end
end end
fs(sprintf("style[scrbar_%s;noclip=true]", name), fs(fmt("style[scrbar_%s;noclip=true]", name),
sprintf("scrollbaroptions[min=1;max=%u;smallstep=1]", craft_max), fmt("scrollbaroptions[min=1;max=%u;smallstep=1]", craft_max),
fmt("scrollbar", fmt("scrollbar", data.xoffset + 8.1, data.yoffset, 3, 0.35, fmt("scrbar_%s", name), stack_fs),
data.xoffset + 8.1, data.yoffset, 3, 0.35, sprintf("scrbar_%s", name), stack_fs), fmt("button", data.xoffset + 8.1, data.yoffset + 0.4, 3, 0.7, fmt("craft_%s", name),
fmt("button", data.xoffset + 8.1, data.yoffset + 0.4, 3, 0.7, sprintf("craft_%s", name), fmt("%s", fmt(stack_fs > 1 and ES"Craft %u items" or ES"Craft %u item", stack_fs))))
sprintf("%s", sprintf(stack_fs > 1 and ES"Craft %u items" or ES"Craft %u item",
stack_fs))))
end end
local function get_rcp_extra(player, fs, data, panel, is_recipe, is_usage) local function get_rcp_extra(player, fs, data, panel, is_recipe, is_usage)
@ -1626,8 +1627,7 @@ local function get_rcp_extra(player, fs, data, panel, is_recipe, is_usage)
get_rcp_lbl(fs, data, panel, rn, is_recipe) get_rcp_lbl(fs, data, panel, rn, is_recipe)
else else
local lbl = is_recipe and ES"No recipes" or ES"No usages" local lbl = is_recipe and ES"No recipes" or ES"No usages"
fs(fmt("button", fs(fmt("button", data.xoffset + 0.1, data.yoffset + (panel.height / 2) - 0.5,
data.xoffset + 0.1, data.yoffset + (panel.height / 2) - 0.5,
7.8, 1, "no_rcp", lbl)) 7.8, 1, "no_rcp", lbl))
end end
end end
@ -1685,7 +1685,7 @@ local function get_item_list(fs, data, full_height)
local filtered = data.filter ~= "" local filtered = data.filter ~= ""
fs("box[0.2,0.2;4.55,0.6;#bababa25]", "set_focus[filter]") fs("box[0.2,0.2;4.55,0.6;#bababa25]", "set_focus[filter]")
fs(sprintf("field[0.3,0.2;%f,0.6;filter;;%s]", filtered and 3.45 or 3.9, ESC(data.filter))) fs(fmt("field[0.3,0.2;%f,0.6;filter;;%s]", filtered and 3.45 or 3.9, ESC(data.filter)))
fs("field_close_on_enter[filter;false]") fs("field_close_on_enter[filter;false]")
if filtered then if filtered then
@ -1699,9 +1699,8 @@ local function get_item_list(fs, data, full_height)
data.pagemax = max(1, ceil(#data.items / IPP)) data.pagemax = max(1, ceil(#data.items / IPP))
fs(fmt("button", fs(fmt("button", data.xoffset - 2.4, 0.14, 1.88, 0.7, "pagenum",
data.xoffset - 2.4, 0.14, 1.88, 0.7, "pagenum", fmt("%s / %u", clr("#ff0", data.pagenum), data.pagemax)))
sprintf("%s / %u", clr("#ff0", data.pagenum), data.pagemax)))
if #data.items == 0 then if #data.items == 0 then
local lbl = ES"No item to show" local lbl = ES"No item to show"
@ -1729,12 +1728,12 @@ local function get_item_list(fs, data, full_height)
fs(fmt("image", X, Y, 1, 1, PNG.slot)) fs(fmt("image", X, Y, 1, 1, PNG.slot))
end end
fs(fmt("item_image_button", X, Y, 1, 1, item, sprintf("%s_inv", item), "")) fs(fmt("item_image_button", X, Y, 1, 1, item, fmt("%s_inv", item), ""))
end end
end end
local function add_subtitle(fs, title, x, y, ctn_len, font_size) local function add_subtitle(fs, title, x, y, ctn_len, font_size)
fs(sprintf("style_type[label;font=bold;font_size=%s]", font_size), fmt("label", x, y, title), fs(fmt("style_type[label;font=bold;font_size=%s]", font_size), fmt("label", x, y, title),
"style_type[label;font=normal;font_size=+0]", fmt("box", x, y + 0.3, ctn_len, 0.05, "#666")) "style_type[label;font=normal;font_size=+0]", fmt("box", x, y + 0.3, ctn_len, 0.05, "#666"))
end end
@ -1745,9 +1744,9 @@ local function get_award_list(fs, ctn_len, yextra, award_list, awards_unlocked,
yextra = yextra + 3.5 yextra = yextra + 3.5
end end
local percent = sprintf("%.1f%%", (awards_unlocked * 100) / award_list_nb):gsub(".0", "") local percent = fmt("%.1f%%", (awards_unlocked * 100) / award_list_nb):gsub(".0", "")
add_subtitle(fs, sprintf("%s: %u of %u (%s)", ES"Achievements", add_subtitle(fs, fmt("%s: %u of %u (%s)", ES"Achievements",
awards_unlocked, award_list_nb, percent), 0, yextra, ctn_len, "+2") awards_unlocked, award_list_nb, percent), 0, yextra, ctn_len, "+2")
for i = 1, award_list_nb do for i = 1, award_list_nb do
@ -1780,7 +1779,7 @@ local function get_award_list(fs, ctn_len, yextra, award_list, awards_unlocked,
local icon = def.icon or "awards_unknown.png" local icon = def.icon or "awards_unknown.png"
if not award.unlocked then if not award.unlocked then
icon = sprintf("%s^\\[colorize:#000:180", icon) icon = fmt("%s^\\[colorize:#000:180", icon)
end end
fs(fmt("image", 0, y + 0.01, icon_size, icon_size, icon), fs(fmt("image", 0, y + 0.01, icon_size, icon_size, icon),
@ -1793,7 +1792,7 @@ local function get_award_list(fs, ctn_len, yextra, award_list, awards_unlocked,
fs(fmt("box", icon_size + 0.1, y + 0.8, box_len, 0.3, "#101010"), fs(fmt("box", icon_size + 0.1, y + 0.8, box_len, 0.3, "#101010"),
fmt("box", icon_size + 0.1, y + 0.8, curr_bar, 0.3, "#9dc34c"), fmt("box", icon_size + 0.1, y + 0.8, curr_bar, 0.3, "#9dc34c"),
"style_type[label;font_size=-2]", "style_type[label;font_size=-2]",
fmt("label", icon_size + 0.5, y + 0.97, sprintf("%u / %u", current, target))) fmt("label", icon_size + 0.5, y + 0.97, fmt("%u / %u", current, target)))
y = y - 0.14 y = y - 0.14
end end
@ -1820,22 +1819,22 @@ local function get_ctn_content(fs, data, player, xoffset, yoffset, ctn_len, awar
(half == 1 and i == floor(hearts)) and "i3_heart_half.png" or "i3_heart.png")) (half == 1 and i == floor(hearts)) and "i3_heart_half.png" or "i3_heart.png"))
end end
fs(sprintf("list[current_player;craft;%f,%f;3,3;]", xoffset, yoffset + 1.45), fs(fmt("list[current_player;craft;%f,%f;3,3;]", xoffset, yoffset + 1.45),
fmt("image", xoffset + 3.64, yoffset + 2.88, 0.7, 0.7, PNG.arrow), fmt("image", xoffset + 3.64, yoffset + 2.88, 0.7, 0.7, PNG.arrow),
sprintf("list[current_player;craftpreview;%f,%f;1,1;]", xoffset + 4.45, yoffset + 2.7), fmt("list[current_player;craftpreview;%f,%f;1,1;]", xoffset + 4.45, yoffset + 2.7),
"listring[detached:i3_trash;main]", "listring[detached:i3_trash;main]",
sprintf("list[detached:i3_trash;main;%f,%f;1,1;]", xoffset + 4.45, yoffset + 3.95), fmt("list[detached:i3_trash;main;%f,%f;1,1;]", xoffset + 4.45, yoffset + 3.95),
fmt("image", xoffset + 4.45, yoffset + 3.95, 1, 1, PNG.trash)) fmt("image", xoffset + 4.45, yoffset + 3.95, 1, 1, PNG.trash))
if __3darmor then if __3darmor then
add_subtitle(fs, ES"Armor", 0, yextra, ctn_len, "+2") add_subtitle(fs, ES"Armor", 0, yextra, ctn_len, "+2")
fs(sprintf("list[detached:%s_armor;armor;0,%f;3,2;]", name, yextra + 0.6)) fs(fmt("list[detached:%s_armor;armor;0,%f;3,2;]", name, yextra + 0.6))
local armor_def = armor.def[name] local armor_def = armor.def[name]
fs(fmt("label", 3.75, yextra + 1.55, sprintf("%s: %s", ES"Level", armor_def.level)), fs(fmt("label", 3.75, yextra + 1.55, fmt("%s: %s", ES"Level", armor_def.level)),
fmt("label", 3.75, yextra + 1.95, sprintf("%s: %s", ES"Heal", armor_def.heal))) fmt("label", 3.75, yextra + 1.95, fmt("%s: %s", ES"Heal", armor_def.heal)))
end end
if __skinsdb then if __skinsdb then
@ -1850,7 +1849,7 @@ local function get_ctn_content(fs, data, player, xoffset, yoffset, ctn_len, awar
add_subtitle(fs, ES"Skins", 0, yextra, ctn_len, "+2") add_subtitle(fs, ES"Skins", 0, yextra, ctn_len, "+2")
fs(sprintf("dropdown[0,%f;3.55,0.6;skins;%s;%u;true]", fs(fmt("dropdown[0,%f;3.55,0.6;skins;%s;%u;true]",
yextra + 0.6, concat(t, ","), data.skin_id or 1)) yextra + 0.6, concat(t, ","), data.skin_id or 1))
end end
@ -1880,7 +1879,7 @@ local function get_inventory_mode(player, fs, data, full_height)
fs(fmt("model", (__3darmor or __skinsdb) and 0.2 or 0, 0.2, 4, 5.5, "player_model", fs(fmt("model", (__3darmor or __skinsdb) and 0.2 or 0, 0.2, 4, 5.5, "player_model",
props.mesh, concat(props.textures, ","), "0,-150", "false", "false", props.mesh, concat(props.textures, ","), "0,-150", "false", "false",
sprintf("%u,%u", anim.x, anim.y))) fmt("%u,%u", anim.x, anim.y)))
else else
local size = 2.5 local size = 2.5
fs(fmt("image", 0.7, 0.2, size, size * props.visual_size.y, props.textures[1])) fs(fmt("image", 0.7, 0.2, size, size * props.visual_size.y, props.textures[1]))
@ -1921,14 +1920,14 @@ local function get_inventory_mode(player, fs, data, full_height)
max_val = max_val + (award_list_nb * 13.2) max_val = max_val + (award_list_nb * 13.2)
end end
fs(sprintf([[ fs(fmt([[
scrollbaroptions[arrows=hide;thumbsize=%u;max=%u] scrollbaroptions[arrows=hide;thumbsize=%u;max=%u]
scrollbar[9.69,0.2;0.3,5.5;vertical;scrbar_inv;%u] scrollbar[9.69,0.2;0.3,5.5;vertical;scrbar_inv;%u]
scrollbaroptions[arrows=default;thumbsize=0;max=1000] scrollbaroptions[arrows=default;thumbsize=0;max=1000]
]], ]],
(max_val * 3) / 15, max_val, data.scrbar_inv or 0)) (max_val * 3) / 15, max_val, data.scrbar_inv or 0))
fs(sprintf("scroll_container[3.9,0.2;%f,5.5;scrbar_inv;vertical]", ctn_len)) fs(fmt("scroll_container[3.9,0.2;%f,5.5;scrbar_inv;vertical]", ctn_len))
end end
get_ctn_content(fs, data, player, xoffset, yoffset, ctn_len, award_list, awards_unlocked, get_ctn_content(fs, data, player, xoffset, yoffset, ctn_len, award_list, awards_unlocked,
@ -1951,7 +1950,7 @@ local function get_inventory_mode(player, fs, data, full_height)
fs(fmt("image_button", i + 3.447 - (i * 0.4), fs(fmt("image_button", i + 3.447 - (i * 0.4),
full_height - 0.6, 0.35, 0.35, "", btn_name, "")) full_height - 0.6, 0.35, 0.35, "", btn_name, ""))
fs(sprintf("tooltip[%s;%s]", btn_name, tooltip)) fs(fmt("tooltip[%s;%s]", btn_name, tooltip))
end end
end end
@ -1966,11 +1965,11 @@ local function make_fs(player, data)
data.xoffset = ROWS + 1.2 data.xoffset = ROWS + 1.2
local full_height = LINES + 1.73 local full_height = LINES + 1.73
fs(sprintf("formspec_version[%u]size[%f,%f]no_prepend[]bgcolor[#0000]", fs(fmt("formspec_version[%u]size[%f,%f]no_prepend[]bgcolor[#0000]",
MIN_FORMSPEC_VERSION, data.xoffset + (data.query_item and 8 or 0), full_height), styles) MIN_FORMSPEC_VERSION, data.xoffset + (data.query_item and 8 or 0), full_height), styles)
fs(sprintf("style[guide_mode;fgimg=%s]", data.inv_mode and PNG.tab or PNG.tab_hover)) fs(fmt("style[guide_mode;fgimg=%s]", data.inv_mode and PNG.tab or PNG.tab_hover))
fs(sprintf("style[inv_mode;fgimg=%s]", data.inv_mode and PNG.tab_hover or PNG.tab)) fs(fmt("style[inv_mode;fgimg=%s]", data.inv_mode and PNG.tab_hover or PNG.tab))
fs(fmt("image_button", 2.05, full_height, 3, 0.5, "", "guide_mode", ES"Crafting Guide")) fs(fmt("image_button", 2.05, full_height, 3, 0.5, "", "guide_mode", ES"Crafting Guide"))
fs(fmt("image_button", 5.15, full_height, 3, 0.5, "", "inv_mode", ES"Inventory")) fs(fmt("image_button", 5.15, full_height, 3, 0.5, "", "inv_mode", ES"Inventory"))
@ -1985,7 +1984,7 @@ local function make_fs(player, data)
get_panels(player, fs, data) get_panels(player, fs, data)
end end
--print("make_fs()", sprintf("%.2f ms", (os.clock() - start) * 1000)) --print("make_fs()", fmt("%.2f ms", (os.clock() - start) * 1000))
return concat(fs) return concat(fs)
end end
@ -2097,7 +2096,7 @@ local function search(data)
local item = data.items_raw[i] local item = data.items_raw[i]
local def = reg_items[item] local def = reg_items[item]
local desc = lower(translate(data.lang_code, def and def.description)) or "" local desc = lower(translate(data.lang_code, def and def.description)) or ""
local search_in = sprintf("%s %s", item, desc) local search_in = fmt("%s %s", item, desc)
local to_add local to_add
if search_filter then if search_filter then