Player skins: Adjust inventory preview image, too
This commit is contained in:
parent
a4d40560c3
commit
2c5038ad05
6 changed files with 59 additions and 32 deletions
|
@ -70,10 +70,22 @@ function mcl_player.player_set_model(player, model_name)
|
|||
player_model[name] = model_name
|
||||
end
|
||||
|
||||
function mcl_player.player_set_textures(player, textures)
|
||||
function mcl_player.player_set_textures(player, textures, preview)
|
||||
local name = player:get_player_name()
|
||||
player_textures[name] = textures
|
||||
player:set_properties({textures = textures,})
|
||||
if preview then
|
||||
player:set_attribute("mcl_player:preview", preview)
|
||||
end
|
||||
end
|
||||
|
||||
function mcl_player.player_get_preview(player)
|
||||
local preview = player:get_attribute("mcl_player:preview")
|
||||
if not preview then
|
||||
return "player.png"
|
||||
else
|
||||
return preview
|
||||
end
|
||||
end
|
||||
|
||||
function mcl_player.player_set_animation(player, anim_name, speed)
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
-- Released by TenPlus1 and based on Zeg9's code under MIT license
|
||||
|
||||
skins = {
|
||||
skins = {}, meta = {},
|
||||
skins = {}, previews = {}, meta = {},
|
||||
modpath = minetest.get_modpath("simple_skins"),
|
||||
skin_count = 0, -- counter of _custom_ skins (all skins except character.png)
|
||||
}
|
||||
|
@ -49,18 +49,30 @@ while true do
|
|||
skins.skin_count = skins.skin_count + 1
|
||||
end
|
||||
|
||||
skins.set_player_skin = function(player, skin)
|
||||
skins.set_player_skin = function(player, skin_id)
|
||||
if not player then
|
||||
return
|
||||
return false
|
||||
end
|
||||
local playername = player:get_player_name()
|
||||
local skin, preview
|
||||
if skin_id == nil or type(skin_id) ~= "number" or skin_id < 0 or skin_id > skins.skin_count then
|
||||
return false
|
||||
elseif skin_id == 0 then
|
||||
skin = "character"
|
||||
preview = "player"
|
||||
else
|
||||
skin = "character_" .. tostring(skin_id)
|
||||
preview = "player_" .. tostring(skin_id)
|
||||
end
|
||||
skins.skins[playername] = skin
|
||||
player:set_attribute("simple_skins:skin", skins.skins[playername])
|
||||
skins.previews[playername] = preview
|
||||
player:set_attribute("simple_skins:skin_id", skin_id)
|
||||
skins.update_player_skin(player)
|
||||
if minetest.get_modpath("3d_armor") then
|
||||
armor.textures[playername].skin = skin .. ".png"
|
||||
armor:update_player_visuals(player)
|
||||
end
|
||||
return true
|
||||
end
|
||||
|
||||
skins.update_player_skin = function(player)
|
||||
|
@ -68,27 +80,21 @@ skins.update_player_skin = function(player)
|
|||
return
|
||||
end
|
||||
local playername = player:get_player_name()
|
||||
mcl_player.player_set_textures(player, { skins.skins[playername] .. ".png" })
|
||||
mcl_player.player_set_textures(player, { skins.skins[playername] .. ".png" }, skins.previews[playername] .. ".png" )
|
||||
end
|
||||
|
||||
-- load player skin on join
|
||||
minetest.register_on_joinplayer(function(player)
|
||||
|
||||
local name = player:get_player_name()
|
||||
local skin = player:get_attribute("simple_skins:skin")
|
||||
local skin_id = player:get_attribute("simple_skins:skin_id")
|
||||
local set_skin
|
||||
-- do we already have a skin in player attributes?
|
||||
if skin then
|
||||
set_skin = skin
|
||||
|
||||
if skin_id then
|
||||
set_skin = tonumber(skin_id)
|
||||
-- otherwise use random skin if not set
|
||||
else
|
||||
local r = math.random(0, skins.skin_count)
|
||||
if r == 0 then
|
||||
set_skin = "character"
|
||||
else
|
||||
set_skin = "character_" .. r
|
||||
end
|
||||
set_skin = math.random(0, skins.skin_count)
|
||||
end
|
||||
if set_skin then
|
||||
skins.set_player_skin(player, set_skin)
|
||||
|
@ -125,16 +131,11 @@ minetest.register_chatcommand("setskin", {
|
|||
end
|
||||
|
||||
local skin
|
||||
if skin_id == nil or skin_id > skins.skin_count or skin_id < 0 then
|
||||
local ok = skins.set_player_skin(player, skin_id)
|
||||
if not ok then
|
||||
return false, S("Invalid skin number! Valid numbers: 0 to @1", skins.skin_count)
|
||||
elseif skin_id == 0 then
|
||||
skin = "character"
|
||||
else
|
||||
skin = "character_" .. tostring(skin_id)
|
||||
end
|
||||
|
||||
skins.set_player_skin(player, skin)
|
||||
local skinfile = skin..".png"
|
||||
local skinfile = "Skin #"..skin_id
|
||||
|
||||
local your_msg = S("Your skin has been set to: @1", skinfile)
|
||||
if name == playername then
|
||||
|
|
BIN
mods/PLAYER/simple_skins/textures/player_1.png
Normal file
BIN
mods/PLAYER/simple_skins/textures/player_1.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 2.6 KiB |
Loading…
Add table
Add a link
Reference in a new issue