程序包 com.playerblocklife

# 类 ConfigManager

java.lang.Object
com.playerblocklife.ConfigManager

public class ConfigManager extends Object
配置管理器 - 负责加载、保存和管理插件的配置文件

主要功能包括：

- 加载和验证配置文件
- 配置版本检查和自动更新
- 提供类型安全的配置项访问方法
- 处理配置文件的保存和重载
- 管理SkinsRestorer插件集成配置
- 支持多种皮肤来源的优先级配置

SkinsRestorer配置支持：

- `skin.source`：皮肤来源优先级（skinsrestorer/player_profile/local_cache）
- `skin.use-skinsrestorer`：是否启用SkinsRestorer支持
- `skin.cache.expire_days`：皮肤缓存过期时间
- 默认配置已优化，优先使用SkinsRestorer以支持离线服务器

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

## 构造器概要

构造器
构造器
说明
`ConfigManager(PlayerBlockLife plugin)`
构造一个新的配置管理器

## 方法概要

修饰符和类型
方法
说明
`int`
`getAutoSaveInterval()`
`String`
`getBlockMaterial()`
`int`
`getBlocksPerPlayer()`
`int`
`getBroadcastRange()`
`int`
`getCacheExpireDays()`
`org.bukkit.configuration.file.FileConfiguration`
`getConfig()`
获取配置对象
`int`
`getDepth()`
`int`
`getExpRewardAmount()`
`String`
`getExternalMessageFileName()`
`int`
`getMaxAttempts()`
`String`
`getMessage(String path, String defaultValue)`
`int`
`getMinDistance()`
`String`
`getOnFailureAction()`
`String`
`getSkinSource()`
获取皮肤来源配置
`int`
`getSpreadRange()`
`String`
`getStorageType()`
`boolean`
`isAdminOnly(String commandName)`
`boolean`
`isAdminUseAllowed(String commandName)`
`boolean`
`isAutoGenerationEnabled()`
`boolean`
`isAutoSaveEnabled()`
`boolean`
`isBecomeSpectator()`
`boolean`
`isBroadcastOnBlockBreak()`
`boolean`
`isBroadcastOnPlayerDeath()`
`boolean`
`isCommandEnabled(String commandName)`
`boolean`
`isDieWhenBlocksGone()`
`boolean`
`isGiveExpReward()`
`boolean`
`isHealthSystemEnabled()`
`boolean`
`isProtectFromExplosions()`
`boolean`
`isProtectFromFire()`
`boolean`
`isProtectFromPistons()`
`boolean`
`isRequireOpenSky()`
`boolean`
`isSelfUseAllowed(String commandName)`
`boolean`
`isSkinSystemEnabled()`
`void`
`loadConfig()`
加载插件配置
`void`
`reloadConfig()`
重新加载配置文件
`void`
`saveConfig()`
保存当前配置到文件
`boolean`
`useExternalMessageFile()`
`boolean`
`useSkinsRestorer()`
检查是否启用SkinsRestorer插件支持

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

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

## 构造器详细资料

### ConfigManager

public ConfigManager(PlayerBlockLife plugin)
构造一个新的配置管理器

参数:
  `plugin` - 插件主类实例，用于访问插件相关功能

## 方法详细资料

### loadConfig

public void loadConfig()
加载插件配置

执行以下操作：

1. 确保插件数据文件夹存在
2. 如果配置文件不存在，从JAR中复制默认配置
3. 调用reloadConfig()重新加载配置

另请参阅:
  - `reloadConfig()`

### reloadConfig

public void reloadConfig()
重新加载配置文件

执行以下操作：

1. 从磁盘重新加载配置文件
2. 加载JAR中的默认配置作为后备
3. 检查配置版本并进行必要的更新

另请参阅:
  - `checkConfigVersion()`

### saveConfig

public void saveConfig()
保存当前配置到文件

将内存中的配置数据写入到config.yml文件中。 如果保存失败，会记录错误日志。

抛出:
  `IOException` - 如果文件写入失败

### getConfig

public org.bukkit.configuration.file.FileConfiguration getConfig()
获取配置对象

如果配置对象为null，会自动调用reloadConfig()加载配置。

返回:
  当前的FileConfiguration配置对象
另请参阅:
  - `reloadConfig()`

### getBlocksPerPlayer

public int getBlocksPerPlayer()

### getSpreadRange

public int getSpreadRange()

### getMinDistance

public int getMinDistance()

### getDepth

public int getDepth()

### getBlockMaterial

public String getBlockMaterial()

### isDieWhenBlocksGone

public boolean isDieWhenBlocksGone()

### isBecomeSpectator

public boolean isBecomeSpectator()

### isHealthSystemEnabled

public boolean isHealthSystemEnabled()

### isSkinSystemEnabled

public boolean isSkinSystemEnabled()

### getSkinSource

public String getSkinSource()
获取皮肤来源配置

支持的皮肤来源：

- skinsrestorer：优先从SkinsRestorer插件获取皮肤纹理数据
  - 推荐用于离线服务器
  - 支持玩家自定义皮肤
  - 避免默认Steve皮肤问题
- player_profile：优先使用Bukkit的PlayerProfile API
  - 需要玩家在线验证
  - 适合在线服务器
  - 支持Mojang官方皮肤
- local_cache：优先从本地缓存加载皮肤数据
  - 减少网络请求
  - 提高加载速度
  - 支持离线使用

默认配置已将此值设为"skinsrestorer"，以优化离线服务器体验。

返回:
  皮肤来源配置值
另请参阅:
  - `useSkinsRestorer()`
  - 引用无效

        SkinManager#loadPlayerSkinAsync()

### useSkinsRestorer

public boolean useSkinsRestorer()
检查是否启用SkinsRestorer插件支持

当此方法返回true时，插件将：

- 优先从SkinsRestorer插件获取玩家皮肤纹理
- 支持离线服务器获取玩家自定义皮肤
- 避免方块总是显示默认Steve皮肤的问题
- 使用反射安全调用SkinsRestorer API，无需硬依赖

默认配置已将此值设为true，以优化离线服务器体验。

返回:
  如果启用SkinsRestorer支持返回true，否则返回false
另请参阅:
  - `getSkinSource()`

### getCacheExpireDays

public int getCacheExpireDays()

### isAutoSaveEnabled

public boolean isAutoSaveEnabled()

### getAutoSaveInterval

public int getAutoSaveInterval()

### getStorageType

public String getStorageType()

### isBroadcastOnBlockBreak

public boolean isBroadcastOnBlockBreak()

### isBroadcastOnPlayerDeath

public boolean isBroadcastOnPlayerDeath()

### getBroadcastRange

public int getBroadcastRange()

### isGiveExpReward

public boolean isGiveExpReward()

### getExpRewardAmount

public int getExpRewardAmount()

### isProtectFromExplosions

public boolean isProtectFromExplosions()

### isProtectFromFire

public boolean isProtectFromFire()

### isProtectFromPistons

public boolean isProtectFromPistons()

### isAutoGenerationEnabled

public boolean isAutoGenerationEnabled()

### isRequireOpenSky

public boolean isRequireOpenSky()

### getMaxAttempts

public int getMaxAttempts()

### getOnFailureAction

public String getOnFailureAction()

### isCommandEnabled

public boolean isCommandEnabled(String commandName)

### isSelfUseAllowed

public boolean isSelfUseAllowed(String commandName)

### isAdminUseAllowed

public boolean isAdminUseAllowed(String commandName)

### isAdminOnly

public boolean isAdminOnly(String commandName)

### useExternalMessageFile

public boolean useExternalMessageFile()

### getExternalMessageFileName

public String getExternalMessageFileName()

### getMessage

public String getMessage(String path, String defaultValue)