load skin when player has joined the game

This commit is contained in:
codexp 2018-04-28 01:04:12 +02:00 committed by Vanessa Dannenberg
parent ac10702849
commit cafba3bc53
1 changed files with 25 additions and 0 deletions

View File

@ -16,6 +16,10 @@ local armor_mod_path = minetest.get_modpath("3d_armor")
local skins = {"male1", "male2", "male3", "male4", "male5"}
local function set_player_skin(player, skin)
minetest.log("verbose",
S("player @1 sets skin to @2", player:get_player_name(), skin) ..
(armor_mod_path and ' [armor]' or '')
)
if armor_mod_path then -- if 3D_armor's installed, let it set the skin
armor.textures[player:get_player_name()].skin = skin
armor:update_player_visuals(player)
@ -64,9 +68,11 @@ homedecor.register("wardrobe", {
for i = 1,5 do
if fields[skins[i]] then
set_player_skin(sender, "homedecor_clothes_"..skins[i]..".png")
sender:set_attribute("homedecor:player_skin", "homedecor_clothes_"..skins[i]..".png")
break
elseif fields["fe"..skins[i]] then
set_player_skin(sender, "homedecor_clothes_fe"..skins[i]..".png")
sender:set_attribute("homedecor:player_skin", "homedecor_clothes_fe"..skins[i]..".png")
break
end
end
@ -75,3 +81,22 @@ homedecor.register("wardrobe", {
minetest.register_alias("homedecor:wardrobe_bottom", "homedecor:wardrobe")
minetest.register_alias("homedecor:wardrobe_top", "air")
minetest.register_on_joinplayer(function(player)
local skin = player:get_attribute("homedecor:player_skin")
if skin ~= nil then
-- setting player skin on connect has no effect, so queue skin change for next game step
table.insert(skin_updates, {player, skin})
end
end)
minetest.register_globalstep(function(dtime)
-- if skin update queue is filled
if #skin_updates > 0 then
-- update player skins
for _,u in pairs(skin_updates) do
set_player_skin(u[1], u[2])
end
skin_updates = {} -- empty queue
end
end)