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 http = core.request_http_api()
|
||||
local storage = core.get_mod_storage()
|
||||
local _loadfile = dofile(modpath .. "/src/operators.lua")
|
||||
|
||||
local function lf(path)
|
||||
|
@ -19,6 +20,8 @@ local function lf(path)
|
|||
end
|
||||
|
||||
i3 = {
|
||||
data = core.deserialize(storage:get_string"data") or {},
|
||||
|
||||
settings = {
|
||||
debug_mode = false,
|
||||
max_favs = 6,
|
||||
|
@ -93,155 +96,7 @@ i3.files.common()
|
|||
i3.files.api(http)
|
||||
i3.files.compress()
|
||||
i3.files.groups()
|
||||
i3.files.callbacks()
|
||||
|
||||
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)
|
||||
i3.files.callbacks(http, storage)
|
||||
|
||||
if i3.settings.progressive_mode then
|
||||
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 init_hud = i3.files.hud()
|
||||
local set_fs = i3.set_fs
|
||||
|
||||
IMPORT("vec_eq", "vec_round")
|
||||
IMPORT("reg_items", "reg_aliases")
|
||||
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("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")
|
||||
|
@ -523,3 +528,140 @@ core.register_on_player_inventory_action(function(player, _, _, info)
|
|||
set_fs(player)
|
||||
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)
|
||||
|
||||
local tab = i3.tabs[data.tab]
|
||||
|
||||
if tab then
|
||||
tab.formspec(player, data, fs)
|
||||
end
|
||||
|
|
Ŝarĝante…
Reference in New Issue