From 747add56f15dd93cd1c85280ee0854814699cae2 Mon Sep 17 00:00:00 2001 From: Lars Mueller Date: Fri, 14 Jan 2022 22:08:22 +0100 Subject: [PATCH] Make player_api optional, fallback to properties --- mod.conf | 3 ++- skin.lua | 35 +++++++++++++++++++++++++++++------ 2 files changed, 31 insertions(+), 7 deletions(-) diff --git a/mod.conf b/mod.conf index 86e4dfa..79ec965 100644 --- a/mod.conf +++ b/mod.conf @@ -1,6 +1,7 @@ name = epidermis description = Feature-fledged skin (painting) mod -depends = modlib, moblib, player_api +depends = modlib, moblib +optional_depends = player_api author = appguru(eu) license = MIT min_minetest_version = 5.4 \ No newline at end of file diff --git a/skin.lua b/skin.lua index 7e7f9a3..bbe5ff4 100644 --- a/skin.lua +++ b/skin.lua @@ -1,14 +1,37 @@ +local player_api = rawget(_G, "player_api") + local function get_textures(player) - local anim = player_api.get_animation(player) - return anim.textures or player_api.registered_models[anim.model].textures + if player_api then + local anim = player_api.get_animation(player) + return anim.textures or player_api.registered_models[anim.model].textures + end + return player:get_properties().textures end +local function get_texture(player, index) + return assert(get_textures(player)[index]) +end + +local function set_textures(player, textures) + if player_api then + player_api.set_textures(player, textures) + return + end + player:set_properties{textures = textures} +end + +local function set_texture(player, index, texture) + local textures = modlib.table.copy(get_textures(player)) + textures[index] = texture + set_textures(player, textures) +end + +local skin_texture_index = 1 + function epidermis.get_skin(player) - return get_textures(player)[1] + return get_texture(player, skin_texture_index) end function epidermis.set_skin(player, skin) - local textures = modlib.table.copy(get_textures(player)) - textures[1] = skin - player_api.set_textures(player, textures) + set_texture(player, skin_texture_index, skin) end \ No newline at end of file