mirror of
https://github.com/minetest-mods/craftguide.git
synced 2025-06-29 06:30:55 +02:00
Compare commits
8 Commits
Author | SHA1 | Date | |
---|---|---|---|
efe7434dd4 | |||
df26d31a2d | |||
50d19faa48 | |||
d93f5b0cf2 | |||
f83bc9cccf | |||
f88e0412fc | |||
6e6ff93d29 | |||
2fd3604cac |
51
init.lua
51
init.lua
@ -23,6 +23,7 @@ local reg_aliases = core.registered_aliases
|
|||||||
local log = core.log
|
local log = core.log
|
||||||
local after = core.after
|
local after = core.after
|
||||||
local clr = core.colorize
|
local clr = core.colorize
|
||||||
|
local sound_play = core.sound_play
|
||||||
local parse_json = core.parse_json
|
local parse_json = core.parse_json
|
||||||
local write_json = core.write_json
|
local write_json = core.write_json
|
||||||
local chat_send = core.chat_send_player
|
local chat_send = core.chat_send_player
|
||||||
@ -103,6 +104,7 @@ local FMT = {
|
|||||||
image = "image[%f,%f;%f,%f;%s]",
|
image = "image[%f,%f;%f,%f;%s]",
|
||||||
button = "button[%f,%f;%f,%f;%s;%s]",
|
button = "button[%f,%f;%f,%f;%s;%s]",
|
||||||
tooltip = "tooltip[%f,%f;%f,%f;%s]",
|
tooltip = "tooltip[%f,%f;%f,%f;%s]",
|
||||||
|
hypertext = "hypertext[%f,%f;%f,%f;;%s]",
|
||||||
item_image = "item_image[%f,%f;%f,%f;%s]",
|
item_image = "item_image[%f,%f;%f,%f;%s]",
|
||||||
image_button = "image_button[%f,%f;%f,%f;%s;%s;%s]",
|
image_button = "image_button[%f,%f;%f,%f;%s;%s;%s]",
|
||||||
animated_image = "animated_image[%f,%f;%f,%f;;%s;%u;%u]",
|
animated_image = "animated_image[%f,%f;%f,%f;;%s;%u;%u]",
|
||||||
@ -707,9 +709,21 @@ local function cache_recipes(item)
|
|||||||
_recipes[#recipes + 1 - k] = v
|
_recipes[#recipes + 1 - k] = v
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local shift = 0
|
||||||
|
local size_rpl = maxn(replacements[item])
|
||||||
|
local size_rcp = #_recipes
|
||||||
|
|
||||||
|
if size_rpl > size_rcp then
|
||||||
|
shift = size_rcp - size_rpl
|
||||||
|
end
|
||||||
|
|
||||||
for k, v in pairs(replacements[item]) do
|
for k, v in pairs(replacements[item]) do
|
||||||
|
k = k + shift
|
||||||
|
|
||||||
|
if _recipes[k] then
|
||||||
_recipes[k].replacements = v
|
_recipes[k].replacements = v
|
||||||
end
|
end
|
||||||
|
end
|
||||||
|
|
||||||
recipes = _recipes
|
recipes = _recipes
|
||||||
end
|
end
|
||||||
@ -870,13 +884,13 @@ local function get_tooltip(item, info, lang_code)
|
|||||||
end
|
end
|
||||||
|
|
||||||
if info.replace then
|
if info.replace then
|
||||||
for i = 1, #info.replace do
|
for i = 1, #info.replace.items do
|
||||||
local rpl = match(info.replace[i], "%S+")
|
local rpl = match(info.replace.items[i], "%S+")
|
||||||
local desc = clr("#ff0", get_desc(rpl, lang_code))
|
local desc = clr("#ff0", get_desc(rpl, lang_code))
|
||||||
|
|
||||||
if info.cooktime then
|
if info.replace.type == "cooking" then
|
||||||
tooltip = add(S("Replaced by @1 on smelting", desc))
|
tooltip = add(S("Replaced by @1 on smelting", desc))
|
||||||
elseif info.burntime then
|
elseif info.replace.type == "fuel" then
|
||||||
tooltip = add(S("Replaced by @1 on burning", desc))
|
tooltip = add(S("Replaced by @1 on burning", desc))
|
||||||
else
|
else
|
||||||
tooltip = add(S("Replaced by @1 on crafting", desc))
|
tooltip = add(S("Replaced by @1 on crafting", desc))
|
||||||
@ -1059,11 +1073,11 @@ local function get_grid_fs(lang_code, fs, rcp, spacing)
|
|||||||
for j = 1, #(rcp.replacements or {}) do
|
for j = 1, #(rcp.replacements or {}) do
|
||||||
local replacement = rcp.replacements[j]
|
local replacement = rcp.replacements[j]
|
||||||
if replacement[1] == name then
|
if replacement[1] == name then
|
||||||
replace = replace or {}
|
replace = replace or {type = rcp.type, items = {}}
|
||||||
|
|
||||||
local added
|
local added
|
||||||
|
|
||||||
for _, v in ipairs(replace) do
|
for _, v in ipairs(replace.items) do
|
||||||
if replacement[2] == v then
|
if replacement[2] == v then
|
||||||
added = true
|
added = true
|
||||||
break
|
break
|
||||||
@ -1072,7 +1086,7 @@ local function get_grid_fs(lang_code, fs, rcp, spacing)
|
|||||||
|
|
||||||
if not added then
|
if not added then
|
||||||
label = fmt("%s%s\nR", label ~= "" and "\n" or "", label)
|
label = fmt("%s%s\nR", label ~= "" and "\n" or "", label)
|
||||||
replace[#replace + 1] = replacement[2]
|
replace.items[#replace.items + 1] = replacement[2]
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -1173,8 +1187,8 @@ local function get_title_fs(query_item, lang_code, favs, fs, spacing)
|
|||||||
local t_desc = query_item
|
local t_desc = query_item
|
||||||
t_desc = #t_desc > 40 and fmt("%s...", sub(t_desc, 1, 37)) or t_desc
|
t_desc = #t_desc > 40 and fmt("%s...", sub(t_desc, 1, 37)) or t_desc
|
||||||
|
|
||||||
fs[#fs + 1] = fmt("hypertext[9.05,%f;5.85,1.2;;%s]",
|
fs[#fs + 1] = fmt(FMT.hypertext,
|
||||||
spacing - 0.1,
|
9.05, spacing - 0.1, 5.85, 1.2,
|
||||||
fmt("<item name=%s float=right width=64 height=64 rotate=yes>" ..
|
fmt("<item name=%s float=right width=64 height=64 rotate=yes>" ..
|
||||||
"<big><b>%s</b></big>\n<style color=#7bf font=mono>%s</style>",
|
"<big><b>%s</b></big>\n<style color=#7bf font=mono>%s</style>",
|
||||||
query_item, desc, t_desc))
|
query_item, desc, t_desc))
|
||||||
@ -1342,7 +1356,7 @@ local function make_fs(data)
|
|||||||
lbl = ES"Collect items to reveal more recipes"
|
lbl = ES"Collect items to reveal more recipes"
|
||||||
end
|
end
|
||||||
|
|
||||||
fs[#fs + 1] = fmt("hypertext[%f,%f;%f,%f;;%s]",
|
fs[#fs + 1] = fmt(FMT.hypertext,
|
||||||
0.05, 3, 8.29, 1,
|
0.05, 3, 8.29, 1,
|
||||||
fmt("<center><style size=20><b>%s</b></style></center>]",
|
fmt("<center><style size=20><b>%s</b></style></center>]",
|
||||||
translate(data.lang_code, lbl)))
|
translate(data.lang_code, lbl)))
|
||||||
@ -1496,15 +1510,15 @@ core.register_craft = function(def)
|
|||||||
end
|
end
|
||||||
|
|
||||||
for i = 1, #output do
|
for i = 1, #output do
|
||||||
local name = output[i]
|
local item = output[i]
|
||||||
rcp_num[name] = (rcp_num[name] or 0) + 1
|
rcp_num[item] = (rcp_num[item] or 0) + 1
|
||||||
|
|
||||||
if def.replacements then
|
if def.replacements then
|
||||||
if def.type == "fuel" then
|
if def.type == "fuel" then
|
||||||
replacements.fuel[name] = def.replacements
|
replacements.fuel[item] = def.replacements
|
||||||
else
|
else
|
||||||
replacements[name] = replacements[name] or {}
|
replacements[item] = replacements[item] or {}
|
||||||
replacements[name][rcp_num[name]] = def.replacements
|
replacements[item][rcp_num[item]] = def.replacements
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -1641,9 +1655,14 @@ on_joinplayer(function(player)
|
|||||||
end)
|
end)
|
||||||
|
|
||||||
local function fields(player, _f)
|
local function fields(player, _f)
|
||||||
|
if _f.quit then return end
|
||||||
local name = player:get_player_name()
|
local name = player:get_player_name()
|
||||||
local data = pdata[name]
|
local data = pdata[name]
|
||||||
|
|
||||||
|
if not _f.key_enter_field then
|
||||||
|
sound_play("craftguide_click", {to_player = name, gain = 0.2})
|
||||||
|
end
|
||||||
|
|
||||||
if _f.clear then
|
if _f.clear then
|
||||||
reset_data(data)
|
reset_data(data)
|
||||||
|
|
||||||
@ -2118,7 +2137,7 @@ on_leaveplayer(function(player)
|
|||||||
end)
|
end)
|
||||||
|
|
||||||
function craftguide.show(name, item, show_usages)
|
function craftguide.show(name, item, show_usages)
|
||||||
if not true_str(name)then
|
if not true_str(name) then
|
||||||
return err "craftguide.show(): player name missing"
|
return err "craftguide.show(): player name missing"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
BIN
sounds/craftguide_click.ogg
Normal file
BIN
sounds/craftguide_click.ogg
Normal file
Binary file not shown.
Reference in New Issue
Block a user