Skip to content

Commit

Permalink
Merge pull request minetest-mods#16 from bell07/clothing_support
Browse files Browse the repository at this point in the history
clothing support
  • Loading branch information
bell07 authored Jun 22, 2018
2 parents bd8a575 + 44b482e commit 2900d78
Show file tree
Hide file tree
Showing 3 changed files with 36 additions and 3 deletions.
1 change: 1 addition & 0 deletions depends.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,5 @@ default
intllib?
unified_inventory?
3d_armor?
clothing?
sfinv?
5 changes: 5 additions & 0 deletions init.lua
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,11 @@ if minetest.global_exists("armor") then
end
end

if minetest.global_exists("clothing") and clothing.player_textures then
skins.clothing_loaded = true
clothing:register_on_update(skins.update_player_skin)
end

-- Update skin on join
skins.ui_context = {}
minetest.register_on_joinplayer(function(player)
Expand Down
33 changes: 30 additions & 3 deletions skin_meta_api.lua
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,18 @@ function skin_class:get_preview()
end

function skin_class:apply_skin_to_player(player)

local function concat_texture(base, ext)
if base == "blank.png" then
return ext
elseif ext == "blank.png" then
return base
else
return base .. "^" .. ext
end
end

local playername = player:get_player_name()
local ver = self:get_meta("format") or "1.0"
default.player_set_model(player, "skinsdb_3d_armor_character.b3d")

Expand All @@ -74,11 +86,26 @@ function skin_class:apply_skin_to_player(player)
v10_texture = self:get_texture()
end

-- Support for clothing
if skins.clothing_loaded and clothing.player_textures[playername] then
local cape = clothing.player_textures[playername].cape
local layers = {}
for k, v in pairs(clothing.player_textures[playername]) do
if k ~= "skin" and k ~= "cape" then
table.insert(layers, v)
end
end
local overlay = table.concat(layers, "^")
v10_texture = concat_texture(v10_texture, cape)
v18_texture = concat_texture(v18_texture, overlay)
end

-- Support for armor
if skins.armor_loaded then
local armor_textures = armor.textures[player:get_player_name()]
local armor_textures = armor.textures[playername]
if armor_textures then
armor_texture = armor_textures.armor
wielditem_texture = armor_textures.wielditem
armor_texture = concat_texture(armor_texture, armor_textures.armor)
wielditem_texture = concat_texture(wielditem_texture, armor_textures.wielditem)
end
end

Expand Down

0 comments on commit 2900d78

Please sign in to comment.