ConfigTemplate
基本信息
| 属性 | 值 |
|---|---|
| 类名 | myessentials.config.api.ConfigTemplate |
| 类型 | abstract class,3 个 protected 字段 + 8 个方法 |
| 启用版本 | Minecraft 1.7.10 |
功能
配置绑定与热重载的框架基类,被 Config 继承。
3 个 init 重载
| 签名 | 用途 |
|---|---|
init(String forgeConfigPath, String modID) |
由路径字符串初始化 |
init(File forgeConfigFile, String modID) |
由文件初始化 |
init(Configuration forgeConfig, String modID) |
由已有 Configuration 初始化 |
三者最终都汇入第三个:this.config = ...; this.modID = modID; bind(); reload();
方法
| 方法 | 说明 |
|---|---|
getForgeConfig() |
取底层 Configuration |
getModID() |
取 modid |
addBinding(ConfigProperty) |
追加绑定(不重载) |
addBinding(ConfigProperty, boolean reload) |
追加绑定,可选立即重载 |
reload() |
config.load() 后逐项回填 |
实现要点
properties是protected List<ConfigProperty>(裸类型,无泛型参数)。reload()的流程是:先config.load(),再对properties中每项 取config.getCategory(property.category)并把文件值写回 ConfigProperty。reload()依赖properties已填充。bind()通过反射扫描this的所有ConfigProperty字段并加入列表—— 这就是 Config 只需声明字段、无需手动addBinding的原因。- 异常处理用
org.apache.commons.lang3.exception.ExceptionUtils。 - 本类没有
@Config注解(Forge 的自动配置机制未使用)。
相关条目
- Config - 唯一的子类(3 个配置项)
- ConfigProperty - 绑定与回填的值容器
- MyEssentialsCore -
Config.instance.init的调用方