From cafba3bc536d89eb7b97046b3942c08ff09ead89 Mon Sep 17 00:00:00 2001 From: codexp Date: Sat, 28 Apr 2018 01:04:12 +0200 Subject: [PATCH] load skin when player has joined the game --- homedecor/wardrobe.lua | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/homedecor/wardrobe.lua b/homedecor/wardrobe.lua index 920064e1..0decf878 100644 --- a/homedecor/wardrobe.lua +++ b/homedecor/wardrobe.lua @@ -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)