Delete unused playerdata after load time

master
Lars Mueller 2022-01-14 23:44:23 +01:00
parent 747add56f1
commit 73eba66b0a
1 changed files with 14 additions and 7 deletions

View File

@ -35,16 +35,23 @@ local used_textures = {}
for _, filename in ipairs(minetest.get_dir_list(epidermis.paths.playerdata, false)) do
local playername = filename:match"^(.-)%.lua$"
if playername then
local filepath = concat_path{epidermis.paths.playerdata, filename}
if player_exists(playername) then
local playerdata = epidermis.get_player_data(playername)
used_textures[playerdata.epidermis] = true
else
assert(os.remove(filepath))
end
local playerdata = epidermis.get_player_data(playername)
used_textures[playerdata.epidermis] = true
end
end
-- HACK the auth handler returns nil at load time (see https://github.com/minetest/minetest/issues/11956)
minetest.after(0, function()
for _, filename in ipairs(minetest.get_dir_list(epidermis.paths.playerdata, false)) do
local playername = filename:match"^(.-)%.lua$"
if playername and not player_exists(playername) then
local playerdata = epidermis.get_player_data(playername)
used_textures[playerdata.epidermis] = true
assert(os.remove(concat_path{epidermis.paths.playerdata, playername .. ".lua"}))
end
end
end)
-- Remove unused textures & store highest texture ID
local epidermi_texture_path = epidermis.paths.dynamic_textures.epidermi
for _, dirname in ipairs(minetest.get_dir_list(epidermi_texture_path, true)) do