程序包 com.playerblocklife

# 类 SkinManager

java.lang.Object
com.playerblocklife.SkinManager

public class SkinManager extends Object
皮肤管理器 - 负责玩家皮肤的获取、缓存和应用

主要功能：

- 从多种来源获取玩家皮肤数据（SkinsRestorer插件、PlayerProfile、本地缓存）
- 皮肤数据Base64编码和缓存管理
- 自定义模型数据分配和管理
- 异步皮肤加载避免阻塞主线程
- 皮肤缓存过期清理
- 完整的SkinsRestorer插件集成支持

皮肤获取优先级（根据配置的source字段）：

1. skinsrestorer：优先从SkinsRestorer插件获取皮肤纹理数据
2. player_profile：优先使用Bukkit的PlayerProfile API
3. local_cache：优先从本地缓存加载
4. 默认Steve皮肤（所有来源都失败时的备用）

SkinsRestorer集成特性：

- 自动检测SkinsRestorer插件是否安装
- 使用反射安全调用SkinsRestorer API，避免硬依赖
- 获取完整的皮肤纹理数据（value和signature）
- 支持离线服务器，避免默认Steve皮肤问题
- 优雅降级：SkinsRestorer失败时自动回退到其他来源

皮肤缓存默认保留7天，过期后自动重新获取。

从以下版本开始:
  1.0.0
版本:
  2.1.0
作者:
  xiaobai

## 构造器概要

构造器
构造器
说明
`SkinManager(PlayerBlockLife plugin)`

## 方法概要

修饰符和类型
方法
说明
`void`
`cleanupOldCache()`
`org.bukkit.inventory.ItemStack`
`createPlayerHead(UUID playerId, String playerName)`
创建带有玩家皮肤的头颅物品
`Map<UUID,Integer>`
`getAllCustomModelData()`
`Map<UUID,String>`
`getAllSkinData()`
`Integer`
`getCustomModelData(UUID playerId)`
`boolean`
`isSkinLoaded(UUID playerId)`
`void`
`loadAllSkins()`
`void`
`loadPlayerSkinAsync(org.bukkit.entity.Player player)`
`void`
`saveSkinData()`

### 从类继承的方法 java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## 构造器详细资料

### SkinManager

public SkinManager(PlayerBlockLife plugin)

## 方法详细资料

### loadAllSkins

public void loadAllSkins()

### loadPlayerSkinAsync

public void loadPlayerSkinAsync(org.bukkit.entity.Player player)

### createPlayerHead

public org.bukkit.inventory.ItemStack createPlayerHead(UUID playerId, String playerName)
创建带有玩家皮肤的头颅物品

使用Base64纹理数据创建自定义玩家头颅，支持离线服务器皮肤显示。

参数:
  `playerId` - 玩家UUID
  `playerName` - 玩家名称
返回:
  带有玩家皮肤的玩家头颅物品

### isSkinLoaded

public boolean isSkinLoaded(UUID playerId)

### getCustomModelData

public Integer getCustomModelData(UUID playerId)

### getAllSkinData

public Map<UUID,String> getAllSkinData()

### getAllCustomModelData

public Map<UUID,Integer> getAllCustomModelData()

### saveSkinData

public void saveSkinData()

### cleanupOldCache

public void cleanupOldCache()