summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Weber <web.alexander@web.de>2018-06-21 08:22:54 +0200
committerAlexander Weber <web.alexander@web.de>2018-06-21 08:22:54 +0200
commit44b482e53a75a1d2aa3fa0694c31fab8b233bcce (patch)
treec091790875de1f376f4de606a25c3997f5783325
parentbd8a575c3e69ed451863b025930bdf67c4a9a395 (diff)
clothing support
-rw-r--r--depends.txt1
-rw-r--r--init.lua5
-rw-r--r--skin_meta_api.lua33
3 files changed, 36 insertions, 3 deletions
diff --git a/depends.txt b/depends.txt
index 45a6c66..f64a4ec 100644
--- a/depends.txt
+++ b/depends.txt
@@ -2,4 +2,5 @@ default
intllib?
unified_inventory?
3d_armor?
+clothing?
sfinv?
diff --git a/init.lua b/init.lua
index 34f492e..8be9ac0 100644
--- a/init.lua
+++ b/init.lua
@@ -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)
diff --git a/skin_meta_api.lua b/skin_meta_api.lua
index c08573f..7882392 100644
--- a/skin_meta_api.lua
+++ b/skin_meta_api.lua
@@ -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")
@@ -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