Allow character creator, homedecor and wardrobe mods to work together. – by auouymous

master
Milan 2022-02-08 09:08:53 +01:00
parent 8636079b5d
commit 369c088067
2 changed files with 22 additions and 3 deletions

View File

@ -42,6 +42,9 @@ local function changeWardrobeSkin(playerName, skin)
error("unknown skin '"..skin.."'");
end;
-- clear homedecor wardrobe skin
player:set_attribute("homedecor:player_skin", "")
wardrobe.playerSkins[playerName] = skin;
wardrobe.storage.savePlayerSkins();
end;
@ -80,11 +83,23 @@ local SKIN_CHANGE_METHODS =
{
required_mods = { '3d_armor' },
initSkin = nil,
initSkin = function(player)
local playerName = player:get_player_name()
if not playerName or playerName == "" then return end
local skin = wardrobe.playerSkins[playerName]
if not skin or not wardrobe.skinNames[skin] then return end
armor.textures[playerName].skin = skin
armor:update_player_visuals(player)
end,
changeSkin = function(playerName, skin)
changeWardrobeSkin(playerName, skin);
armor.textures[playerName].skin = skin;
if skin == nil then
-- character creator skin will restore at next login, or now by pressing 'Done' in character creator
armor.textures[playerName].skin = armor.default_skin..".png"
else
armor.textures[playerName].skin = skin
end
end,
updateSkin = function(player)

View File

@ -14,7 +14,7 @@ local function showForm(player, page)
local s = 1 + SKINS_PER_PAGE*(page-1);
local e = math.min(s+SKINS_PER_PAGE-1, n);
local fs = "size[5,10]";
local fs = "size[5,11]";
fs = fs.."label[0,0;Change Into:]";
for i = s, e do
local slot = i-s+1;
@ -29,6 +29,7 @@ local function showForm(player, page)
if page < nPages then
fs = fs.."button_exit[4,9;1,1;n:p"..(page+1)..";next]";
end
fs = fs.."button_exit[0,10;5,1;c:c;clear]";
minetest.show_formspec(playerName, FORM_NAME, fs);
end
@ -52,6 +53,9 @@ minetest.register_on_player_receive_fields(
elseif action == "s" then
wardrobe.changePlayerSkin(playerName, value);
return;
elseif action == "c" then
wardrobe.changePlayerSkin(playerName, nil);
return;
end
end
end