Make player_api optional, fallback to properties
parent
0522e867b3
commit
747add56f1
3
mod.conf
3
mod.conf
|
@ -1,6 +1,7 @@
|
||||||
name = epidermis
|
name = epidermis
|
||||||
description = Feature-fledged skin (painting) mod
|
description = Feature-fledged skin (painting) mod
|
||||||
depends = modlib, moblib, player_api
|
depends = modlib, moblib
|
||||||
|
optional_depends = player_api
|
||||||
author = appguru(eu)
|
author = appguru(eu)
|
||||||
license = MIT
|
license = MIT
|
||||||
min_minetest_version = 5.4
|
min_minetest_version = 5.4
|
35
skin.lua
35
skin.lua
|
@ -1,14 +1,37 @@
|
||||||
|
local player_api = rawget(_G, "player_api")
|
||||||
|
|
||||||
local function get_textures(player)
|
local function get_textures(player)
|
||||||
local anim = player_api.get_animation(player)
|
if player_api then
|
||||||
return anim.textures or player_api.registered_models[anim.model].textures
|
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
|
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)
|
function epidermis.get_skin(player)
|
||||||
return get_textures(player)[1]
|
return get_texture(player, skin_texture_index)
|
||||||
end
|
end
|
||||||
|
|
||||||
function epidermis.set_skin(player, skin)
|
function epidermis.set_skin(player, skin)
|
||||||
local textures = modlib.table.copy(get_textures(player))
|
set_texture(player, skin_texture_index, skin)
|
||||||
textures[1] = skin
|
|
||||||
player_api.set_textures(player, textures)
|
|
||||||
end
|
end
|
Loading…
Reference in New Issue