forked from minetest-mods/craftguide
Full backward compat with MT 0.4.17
This commit is contained in:
parent
19fb5e2691
commit
3320fbdd6b
95
init.lua
95
init.lua
|
@ -1,5 +1,9 @@
|
||||||
craftguide = {}
|
craftguide = {}
|
||||||
|
|
||||||
|
local CORE_VERSION = core.get_version().string
|
||||||
|
CORE_VERSION = CORE_VERSION:match("[^%-]*"):gsub("%.", "")
|
||||||
|
CORE_VERSION = tonumber(CORE_VERSION)
|
||||||
|
|
||||||
-- Caches
|
-- Caches
|
||||||
local pdata = {}
|
local pdata = {}
|
||||||
local init_items = {}
|
local init_items = {}
|
||||||
|
@ -28,13 +32,22 @@ local on_joinplayer = core.register_on_joinplayer
|
||||||
local get_all_recipes = core.get_all_craft_recipes
|
local get_all_recipes = core.get_all_craft_recipes
|
||||||
local register_command = core.register_chatcommand
|
local register_command = core.register_chatcommand
|
||||||
local get_player_by_name = core.get_player_by_name
|
local get_player_by_name = core.get_player_by_name
|
||||||
|
local slz, dslz = core.serialize, core.deserialize
|
||||||
local on_mods_loaded = core.register_on_mods_loaded
|
local on_mods_loaded = core.register_on_mods_loaded
|
||||||
local on_leaveplayer = core.register_on_leaveplayer
|
local on_leaveplayer = core.register_on_leaveplayer
|
||||||
local serialize, deserialize = core.serialize, core.deserialize
|
|
||||||
local on_receive_fields = core.register_on_player_receive_fields
|
local on_receive_fields = core.register_on_player_receive_fields
|
||||||
|
|
||||||
local ESC = core.formspec_escape
|
local ESC = core.formspec_escape
|
||||||
local S = core.get_translator("craftguide")
|
local S = CORE_VERSION >= 500 and core.get_translator("craftguide") or
|
||||||
|
function(...)
|
||||||
|
local args = {...}
|
||||||
|
local i = 1
|
||||||
|
|
||||||
|
return args[1]:gsub("@%d+", function()
|
||||||
|
i = i + 1
|
||||||
|
return args[i]
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
|
||||||
local maxn, sort, concat, copy, insert =
|
local maxn, sort, concat, copy, insert =
|
||||||
table.maxn, table.sort, table.concat, table.copy, table.insert
|
table.maxn, table.sort, table.concat, table.copy, table.insert
|
||||||
|
@ -55,10 +68,6 @@ local WH_LIMIT = 8
|
||||||
local XOFFSET = sfinv_only and 3.83 or 4.66
|
local XOFFSET = sfinv_only and 3.83 or 4.66
|
||||||
local YOFFSET = sfinv_only and 6 or 6.6
|
local YOFFSET = sfinv_only and 6 or 6.6
|
||||||
|
|
||||||
local CORE_VERSION = core.get_version().string
|
|
||||||
CORE_VERSION = match(CORE_VERSION, "[^%-]*"):gsub("%.", "")
|
|
||||||
CORE_VERSION = tonumber(CORE_VERSION)
|
|
||||||
|
|
||||||
craftguide.background = "craftguide_bg_full.png#10"
|
craftguide.background = "craftguide_bg_full.png#10"
|
||||||
|
|
||||||
local PNG = {
|
local PNG = {
|
||||||
|
@ -550,8 +559,9 @@ local function get_output_fs(fs, L)
|
||||||
local tooltip = custom_recipe and custom_recipe.description or
|
local tooltip = custom_recipe and custom_recipe.description or
|
||||||
L.shapeless and S("Shapeless") or S("Cooking")
|
L.shapeless and S("Shapeless") or S("Cooking")
|
||||||
|
|
||||||
fs[#fs + 1] = fmt("tooltip[%f,%f;%f,%f;%s]",
|
if CORE_VERSION >= 500 then
|
||||||
pos_x, pos_y, 0.5, 0.5, ESC(tooltip))
|
fs[#fs + 1] = fmt(FMT.tooltip, pos_x, pos_y, 0.5, 0.5, ESC(tooltip))
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
local arrow_X = L.rightest + (L.s_btn_size or 1.1)
|
local arrow_X = L.rightest + (L.s_btn_size or 1.1)
|
||||||
|
@ -862,25 +872,6 @@ local function search(data)
|
||||||
data.items = filtered_list
|
data.items = filtered_list
|
||||||
end
|
end
|
||||||
|
|
||||||
local function init_data(name)
|
|
||||||
pdata[name] = {
|
|
||||||
filter = "",
|
|
||||||
pagenum = 1,
|
|
||||||
items = init_items,
|
|
||||||
items_raw = init_items,
|
|
||||||
}
|
|
||||||
end
|
|
||||||
|
|
||||||
local function reset_data(data)
|
|
||||||
data.filter = ""
|
|
||||||
data.pagenum = 1
|
|
||||||
data.rnum = 1
|
|
||||||
data.query_item = nil
|
|
||||||
data.show_usages = nil
|
|
||||||
data.recipes = nil
|
|
||||||
data.items = data.items_raw
|
|
||||||
end
|
|
||||||
|
|
||||||
local old_register_alias = core.register_alias
|
local old_register_alias = core.register_alias
|
||||||
|
|
||||||
core.register_alias = function(old, new)
|
core.register_alias = function(old, new)
|
||||||
|
@ -1006,7 +997,31 @@ local function get_init_items()
|
||||||
sort(init_items)
|
sort(init_items)
|
||||||
end
|
end
|
||||||
|
|
||||||
on_mods_loaded(get_init_items)
|
local function init_data(name)
|
||||||
|
local items = CORE_VERSION >= 500 and init_items or
|
||||||
|
(#init_items == 0 and get_init_items() or init_items)
|
||||||
|
|
||||||
|
pdata[name] = {
|
||||||
|
filter = "",
|
||||||
|
pagenum = 1,
|
||||||
|
items = items,
|
||||||
|
items_raw = items,
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
local function reset_data(data)
|
||||||
|
data.filter = ""
|
||||||
|
data.pagenum = 1
|
||||||
|
data.rnum = 1
|
||||||
|
data.query_item = nil
|
||||||
|
data.show_usages = nil
|
||||||
|
data.recipes = nil
|
||||||
|
data.items = data.items_raw
|
||||||
|
end
|
||||||
|
|
||||||
|
if CORE_VERSION >= 500 then
|
||||||
|
on_mods_loaded(get_init_items)
|
||||||
|
end
|
||||||
|
|
||||||
on_joinplayer(function(player)
|
on_joinplayer(function(player)
|
||||||
local name = player:get_player_name()
|
local name = player:get_player_name()
|
||||||
|
@ -1419,12 +1434,17 @@ if progressive_mode then
|
||||||
on_joinplayer(function(player)
|
on_joinplayer(function(player)
|
||||||
PLAYERS = get_players()
|
PLAYERS = get_players()
|
||||||
|
|
||||||
local meta = player:get_meta()
|
|
||||||
local name = player:get_player_name()
|
local name = player:get_player_name()
|
||||||
local data = pdata[name]
|
local data = pdata[name]
|
||||||
|
|
||||||
data.inv_items = deserialize(meta:get_string("inv_items")) or {}
|
if CORE_VERSION >= 500 then
|
||||||
data.known_recipes = deserialize(meta:get_string("known_recipes")) or 0
|
local meta = player:get_meta()
|
||||||
|
data.inv_items = dslz(meta:get_string("inv_items")) or {}
|
||||||
|
data.known_recipes = dslz(meta:get_string("known_recipes")) or 0
|
||||||
|
else
|
||||||
|
data.inv_items = dslz(player:get_attribute("inv_items")) or {}
|
||||||
|
data.known_recipes = dslz(player:get_attribute("known_recipes")) or 0
|
||||||
|
end
|
||||||
|
|
||||||
data.hud = {
|
data.hud = {
|
||||||
bg = player:hud_add({
|
bg = player:hud_add({
|
||||||
|
@ -1459,13 +1479,22 @@ if progressive_mode then
|
||||||
}
|
}
|
||||||
|
|
||||||
local function save_meta(player)
|
local function save_meta(player)
|
||||||
local meta = player:get_meta()
|
local meta
|
||||||
local name = player:get_player_name()
|
local name = player:get_player_name()
|
||||||
local data = pdata[name]
|
local data = pdata[name]
|
||||||
|
|
||||||
|
if CORE_VERSION >= 500 then
|
||||||
|
meta = player:get_meta()
|
||||||
|
end
|
||||||
|
|
||||||
for i = 1, #to_save do
|
for i = 1, #to_save do
|
||||||
local meta_name = to_save[i]
|
local meta_name = to_save[i]
|
||||||
meta:set_string(meta_name, serialize(data[meta_name]))
|
|
||||||
|
if CORE_VERSION >= 500 then
|
||||||
|
meta:set_string(meta_name, slz(data[meta_name]))
|
||||||
|
else
|
||||||
|
player:set_attribute(meta_name, slz(data[meta_name]))
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user