Make player_api optional, fallback to properties

master
Lars Mueller 2022-01-14 22:08:22 +01:00
parent 0522e867b3
commit 747add56f1
2 changed files with 31 additions and 7 deletions

View File

@ -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

View File

@ -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