diff --git a/skinMethods.lua b/skinMethods.lua index bcfcac1..9220b43 100644 --- a/skinMethods.lua +++ b/skinMethods.lua @@ -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) diff --git a/wardrobe.lua b/wardrobe.lua index 09bfe2f..74178dd 100644 --- a/wardrobe.lua +++ b/wardrobe.lua @@ -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