mirror of
https://github.com/minetest-mods/skinsdb.git
synced 2024-11-12 21:30:17 +01:00
11bb5bad0e
Previously, the players would have their selected skin reset after renaming the skin textures to the dot separator. This commit implements skin name migration to ease the transition for server owners. See 'skins.__fuzzy_match_skin_name' for a detailed explanation.
51 lines
1.5 KiB
Lua
51 lines
1.5 KiB
Lua
local function get_skin(skin_name)
|
|
local skin = skins.get(skin_name)
|
|
or skins.__fuzzy_match_skin_name("(unittest)", skin_name, true)
|
|
return skin and skin:get_key() or nil
|
|
end
|
|
|
|
local function run_unittest()
|
|
local PATH = ":UNITTEST:"
|
|
|
|
-- -----
|
|
-- `.`: Simple register + retrieve operations
|
|
skins.register_skin(PATH, "player.DotSep.png")
|
|
skins.register_skin(PATH, "player._DotSep_666_.1.png")
|
|
|
|
assert(get_skin("player.DotSep"))
|
|
assert(get_skin("player._DotSep_666_.1"))
|
|
assert(get_skin("player.DotSep.1") == nil)
|
|
|
|
-- -----
|
|
-- Ambiguous skin names (filenames without extension). Register + retrieve
|
|
skins.new("player_AmbSki")
|
|
skins.new("player_AmbSki_1")
|
|
skins.new("player_AmbSki_666_1")
|
|
|
|
assert(get_skin("player_AmbSki"))
|
|
assert(get_skin("player_AmbSki_") == nil)
|
|
assert(get_skin("player_AmbSki_1"))
|
|
assert(get_skin("player_AmbSki_666_1"))
|
|
-- There are no `__` patterns as they were silently removed by string.split
|
|
|
|
|
|
-- -----
|
|
-- Mod Storage backwards compatibility
|
|
-- Match the old `_` notation to `.`-separated skins
|
|
skins.register_skin(PATH, "player.ComPat42.png")
|
|
skins.register_skin(PATH, "player.ComPat42.5.png")
|
|
skins.register_skin(PATH, "player._Com_Pat_42.png")
|
|
skins.register_skin(PATH, "player._Com_Pat_42.1.png")
|
|
|
|
assert(get_skin("player_ComPat42") == "player.ComPat42")
|
|
assert(get_skin("player_ComPat42_5") == "player.ComPat42.5")
|
|
assert(get_skin("player_Com_Pat_42") == "player._Com_Pat_42")
|
|
assert(get_skin("player_Com_Pat_42_1") == "player._Com_Pat_42.1")
|
|
|
|
|
|
error("Unittest passed! Please disable them now.")
|
|
end
|
|
|
|
run_unittest()
|
|
|