Some cleaning
This commit is contained in:
parent
ea10743255
commit
eedc77086f
153
init.lua
153
init.lua
|
@ -12,6 +12,7 @@ print[[
|
||||||
|
|
||||||
local modpath = core.get_modpath"i3"
|
local modpath = core.get_modpath"i3"
|
||||||
local http = core.request_http_api()
|
local http = core.request_http_api()
|
||||||
|
local storage = core.get_mod_storage()
|
||||||
local _loadfile = dofile(modpath .. "/src/operators.lua")
|
local _loadfile = dofile(modpath .. "/src/operators.lua")
|
||||||
|
|
||||||
local function lf(path)
|
local function lf(path)
|
||||||
|
@ -19,6 +20,8 @@ local function lf(path)
|
||||||
end
|
end
|
||||||
|
|
||||||
i3 = {
|
i3 = {
|
||||||
|
data = core.deserialize(storage:get_string"data") or {},
|
||||||
|
|
||||||
settings = {
|
settings = {
|
||||||
debug_mode = false,
|
debug_mode = false,
|
||||||
max_favs = 6,
|
max_favs = 6,
|
||||||
|
@ -93,155 +96,7 @@ i3.files.common()
|
||||||
i3.files.api(http)
|
i3.files.api(http)
|
||||||
i3.files.compress()
|
i3.files.compress()
|
||||||
i3.files.groups()
|
i3.files.groups()
|
||||||
i3.files.callbacks()
|
i3.files.callbacks(http, storage)
|
||||||
|
|
||||||
local storage = core.get_mod_storage()
|
|
||||||
local slz, dslz, copy = i3.get("slz", "dslz", "copy")
|
|
||||||
local set_fs = i3.set_fs
|
|
||||||
|
|
||||||
i3.data = dslz(storage:get_string"data") or {}
|
|
||||||
|
|
||||||
local init_bags = i3.files.bags()
|
|
||||||
local init_detached = i3.files.detached()
|
|
||||||
local fill_caches = i3.files.caches(http)
|
|
||||||
local init_hud = i3.files.hud()
|
|
||||||
|
|
||||||
local function get_lang_code(info)
|
|
||||||
return info and info.lang_code
|
|
||||||
end
|
|
||||||
|
|
||||||
local function get_formspec_version(info)
|
|
||||||
return info and info.formspec_version or 1
|
|
||||||
end
|
|
||||||
|
|
||||||
local function outdated(name)
|
|
||||||
core.show_formspec(name, "i3_outdated",
|
|
||||||
("size[6.5,1.3]image[0,0;1,1;i3_book.png]label[1,0;%s]button_exit[2.6,0.8;1,1;;OK]"):format(
|
|
||||||
"Your Minetest client is outdated.\nGet the latest version on minetest.net to play the game."))
|
|
||||||
end
|
|
||||||
|
|
||||||
if rawget(_G, "armor") then
|
|
||||||
i3.modules.armor = true
|
|
||||||
armor:register_on_update(set_fs)
|
|
||||||
end
|
|
||||||
|
|
||||||
if rawget(_G, "skins") then
|
|
||||||
i3.modules.skins = true
|
|
||||||
end
|
|
||||||
|
|
||||||
if rawget(_G, "awards") then
|
|
||||||
i3.modules.awards = true
|
|
||||||
|
|
||||||
core.register_on_craft(function(_, player)
|
|
||||||
set_fs(player)
|
|
||||||
end)
|
|
||||||
|
|
||||||
core.register_on_dignode(function(_, _, player)
|
|
||||||
set_fs(player)
|
|
||||||
end)
|
|
||||||
|
|
||||||
core.register_on_placenode(function(_, _, player)
|
|
||||||
set_fs(player)
|
|
||||||
end)
|
|
||||||
|
|
||||||
core.register_on_chat_message(function(name)
|
|
||||||
local player = core.get_player_by_name(name)
|
|
||||||
set_fs(player)
|
|
||||||
end)
|
|
||||||
end
|
|
||||||
|
|
||||||
local function disable_inventories()
|
|
||||||
if rawget(_G, "sfinv") then
|
|
||||||
function sfinv.set_player_inventory_formspec() return end
|
|
||||||
sfinv.enabled = false
|
|
||||||
end
|
|
||||||
|
|
||||||
if rawget(_G, "unified_inventory") then
|
|
||||||
function unified_inventory.set_inventory_formspec() return end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
local function init_data(player, info)
|
|
||||||
local name = player:get_player_name()
|
|
||||||
i3.data[name] = i3.data[name] or {}
|
|
||||||
local data = i3.data[name]
|
|
||||||
|
|
||||||
data.player_name = name
|
|
||||||
data.filter = ""
|
|
||||||
data.pagenum = 1
|
|
||||||
data.items = i3.init_items
|
|
||||||
data.items_raw = i3.init_items
|
|
||||||
data.favs = {}
|
|
||||||
data.sort = "alphabetical"
|
|
||||||
data.show_setting = "home"
|
|
||||||
data.ignore_hotbar = false
|
|
||||||
data.auto_sorting = false
|
|
||||||
data.reverse_sorting = false
|
|
||||||
data.inv_compress = true
|
|
||||||
data.export_counts = {}
|
|
||||||
data.tab = 1
|
|
||||||
data.itab = 1
|
|
||||||
data.subcat = 1
|
|
||||||
data.scrbar_inv = 0
|
|
||||||
data.lang_code = get_lang_code(info)
|
|
||||||
data.fs_version = info.formspec_version
|
|
||||||
|
|
||||||
local inv = player:get_inventory()
|
|
||||||
inv:set_size("main", i3.settings.inv_size)
|
|
||||||
|
|
||||||
core.after(0, set_fs, player)
|
|
||||||
end
|
|
||||||
|
|
||||||
local function save_data(player_name)
|
|
||||||
local _data = copy(i3.data)
|
|
||||||
|
|
||||||
for name, v in pairs(_data) do
|
|
||||||
for dat in pairs(v) do
|
|
||||||
if not i3.saves[dat] then
|
|
||||||
_data[name][dat] = nil
|
|
||||||
|
|
||||||
if player_name and i3.data[player_name] then
|
|
||||||
i3.data[player_name][dat] = nil -- To free up some memory
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
storage:set_string("data", slz(_data))
|
|
||||||
end
|
|
||||||
|
|
||||||
core.register_on_mods_loaded(function()
|
|
||||||
fill_caches()
|
|
||||||
disable_inventories()
|
|
||||||
end)
|
|
||||||
|
|
||||||
core.register_on_joinplayer(function(player)
|
|
||||||
local name = player:get_player_name()
|
|
||||||
local info = core.get_player_information and core.get_player_information(name)
|
|
||||||
|
|
||||||
if not info or get_formspec_version(info) < i3.settings.min_fs_version then
|
|
||||||
return outdated(name)
|
|
||||||
end
|
|
||||||
|
|
||||||
init_data(player, info)
|
|
||||||
init_bags(player)
|
|
||||||
init_detached(player)
|
|
||||||
init_hud(player)
|
|
||||||
end)
|
|
||||||
|
|
||||||
core.register_on_leaveplayer(function(player)
|
|
||||||
local name = player:get_player_name()
|
|
||||||
save_data(name)
|
|
||||||
end)
|
|
||||||
|
|
||||||
core.register_on_shutdown(save_data)
|
|
||||||
|
|
||||||
local function routine()
|
|
||||||
save_data()
|
|
||||||
core.after(i3.settings.save_interval, routine)
|
|
||||||
end
|
|
||||||
|
|
||||||
core.after(i3.settings.save_interval, routine)
|
|
||||||
|
|
||||||
if i3.settings.progressive_mode then
|
if i3.settings.progressive_mode then
|
||||||
i3.files.progressive()
|
i3.files.progressive()
|
||||||
|
|
|
@ -1,10 +1,15 @@
|
||||||
|
local http, storage = ...
|
||||||
|
local init_bags = i3.files.bags()
|
||||||
|
local fill_caches = i3.files.caches(http)
|
||||||
|
local init_detached = i3.files.detached()
|
||||||
local _, get_inventory_fs = i3.files.gui()
|
local _, get_inventory_fs = i3.files.gui()
|
||||||
|
local init_hud = i3.files.hud()
|
||||||
local set_fs = i3.set_fs
|
local set_fs = i3.set_fs
|
||||||
|
|
||||||
IMPORT("vec_eq", "vec_round")
|
IMPORT("vec_eq", "vec_round")
|
||||||
IMPORT("reg_items", "reg_aliases")
|
IMPORT("reg_items", "reg_aliases")
|
||||||
IMPORT("sort", "copy", "insert", "remove", "indexof")
|
IMPORT("sort", "copy", "insert", "remove", "indexof")
|
||||||
IMPORT("S", "min", "random", "translate", "ItemStack")
|
IMPORT("S", "slz", "min", "random", "translate", "ItemStack")
|
||||||
IMPORT("fmt", "find", "match", "sub", "lower", "split", "toupper")
|
IMPORT("fmt", "find", "match", "sub", "lower", "split", "toupper")
|
||||||
IMPORT("msg", "is_fav", "pos_to_str", "str_to_pos", "add_hud_waypoint", "play_sound", "spawn_item")
|
IMPORT("msg", "is_fav", "pos_to_str", "str_to_pos", "add_hud_waypoint", "play_sound", "spawn_item")
|
||||||
IMPORT("search", "get_sorting_idx", "sort_inventory", "sort_by_category", "get_recipes", "get_detached_inv")
|
IMPORT("search", "get_sorting_idx", "sort_inventory", "sort_by_category", "get_recipes", "get_detached_inv")
|
||||||
|
@ -523,3 +528,140 @@ core.register_on_player_inventory_action(function(player, _, _, info)
|
||||||
set_fs(player)
|
set_fs(player)
|
||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
if core.global_exists("armor") then
|
||||||
|
i3.modules.armor = true
|
||||||
|
armor:register_on_update(set_fs)
|
||||||
|
end
|
||||||
|
|
||||||
|
if core.global_exists("skins") then
|
||||||
|
i3.modules.skins = true
|
||||||
|
end
|
||||||
|
|
||||||
|
if core.global_exists("awards") then
|
||||||
|
i3.modules.awards = true
|
||||||
|
|
||||||
|
core.register_on_craft(function(_, player)
|
||||||
|
set_fs(player)
|
||||||
|
end)
|
||||||
|
|
||||||
|
core.register_on_dignode(function(_, _, player)
|
||||||
|
set_fs(player)
|
||||||
|
end)
|
||||||
|
|
||||||
|
core.register_on_placenode(function(_, _, player)
|
||||||
|
set_fs(player)
|
||||||
|
end)
|
||||||
|
|
||||||
|
core.register_on_chat_message(function(name)
|
||||||
|
local player = core.get_player_by_name(name)
|
||||||
|
set_fs(player)
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
|
||||||
|
local function disable_inventories()
|
||||||
|
if rawget(_G, "sfinv") then
|
||||||
|
function sfinv.set_player_inventory_formspec() return end
|
||||||
|
sfinv.enabled = false
|
||||||
|
end
|
||||||
|
|
||||||
|
if rawget(_G, "unified_inventory") then
|
||||||
|
function unified_inventory.set_inventory_formspec() return end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
core.register_on_mods_loaded(function()
|
||||||
|
fill_caches()
|
||||||
|
disable_inventories()
|
||||||
|
end)
|
||||||
|
|
||||||
|
local function get_lang_code(info)
|
||||||
|
return info and info.lang_code
|
||||||
|
end
|
||||||
|
|
||||||
|
local function get_formspec_version(info)
|
||||||
|
return info and info.formspec_version or 1
|
||||||
|
end
|
||||||
|
|
||||||
|
local function outdated(name)
|
||||||
|
core.show_formspec(name, "i3_outdated",
|
||||||
|
("size[6.5,1.3]image[0,0;1,1;i3_book.png]label[1,0;%s]button_exit[2.6,0.8;1,1;;OK]"):format(
|
||||||
|
"Your Minetest client is outdated.\nGet the latest version on minetest.net to play the game."))
|
||||||
|
end
|
||||||
|
|
||||||
|
local function init_data(player, info)
|
||||||
|
local name = player:get_player_name()
|
||||||
|
i3.data[name] = i3.data[name] or {}
|
||||||
|
local data = i3.data[name]
|
||||||
|
|
||||||
|
data.player_name = name
|
||||||
|
data.filter = ""
|
||||||
|
data.pagenum = 1
|
||||||
|
data.items = i3.init_items
|
||||||
|
data.items_raw = i3.init_items
|
||||||
|
data.favs = {}
|
||||||
|
data.sort = "alphabetical"
|
||||||
|
data.show_setting = "home"
|
||||||
|
data.ignore_hotbar = false
|
||||||
|
data.auto_sorting = false
|
||||||
|
data.reverse_sorting = false
|
||||||
|
data.inv_compress = true
|
||||||
|
data.export_counts = {}
|
||||||
|
data.tab = 1
|
||||||
|
data.itab = 1
|
||||||
|
data.subcat = 1
|
||||||
|
data.scrbar_inv = 0
|
||||||
|
data.lang_code = get_lang_code(info)
|
||||||
|
data.fs_version = info.formspec_version
|
||||||
|
|
||||||
|
local inv = player:get_inventory()
|
||||||
|
inv:set_size("main", i3.settings.inv_size)
|
||||||
|
|
||||||
|
core.after(0, set_fs, player)
|
||||||
|
end
|
||||||
|
|
||||||
|
local function save_data(player_name)
|
||||||
|
local _data = copy(i3.data)
|
||||||
|
|
||||||
|
for name, v in pairs(_data) do
|
||||||
|
for dat in pairs(v) do
|
||||||
|
if not i3.saves[dat] then
|
||||||
|
_data[name][dat] = nil
|
||||||
|
|
||||||
|
if player_name and i3.data[player_name] then
|
||||||
|
i3.data[player_name][dat] = nil -- To free up some memory
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
storage:set_string("data", slz(_data))
|
||||||
|
end
|
||||||
|
|
||||||
|
core.register_on_joinplayer(function(player)
|
||||||
|
local name = player:get_player_name()
|
||||||
|
local info = core.get_player_information and core.get_player_information(name)
|
||||||
|
|
||||||
|
if not info or get_formspec_version(info) < i3.settings.min_fs_version then
|
||||||
|
return outdated(name)
|
||||||
|
end
|
||||||
|
|
||||||
|
init_data(player, info)
|
||||||
|
init_bags(player)
|
||||||
|
init_detached(player)
|
||||||
|
init_hud(player)
|
||||||
|
end)
|
||||||
|
|
||||||
|
core.register_on_leaveplayer(function(player)
|
||||||
|
local name = player:get_player_name()
|
||||||
|
save_data(name)
|
||||||
|
end)
|
||||||
|
|
||||||
|
core.register_on_shutdown(save_data)
|
||||||
|
|
||||||
|
local function routine()
|
||||||
|
save_data()
|
||||||
|
core.after(i3.settings.save_interval, routine)
|
||||||
|
end
|
||||||
|
|
||||||
|
core.after(i3.settings.save_interval, routine)
|
||||||
|
|
|
@ -1485,7 +1485,6 @@ local function make_fs(player, data)
|
||||||
fs("bg9", 0, 0, data.inv_width, full_height, PNG.bg_full, 10)
|
fs("bg9", 0, 0, data.inv_width, full_height, PNG.bg_full, 10)
|
||||||
|
|
||||||
local tab = i3.tabs[data.tab]
|
local tab = i3.tabs[data.tab]
|
||||||
|
|
||||||
if tab then
|
if tab then
|
||||||
tab.formspec(player, data, fs)
|
tab.formspec(player, data, fs)
|
||||||
end
|
end
|
||||||
|
|
Ŝarĝante…
Reference in New Issue