配置库(codechicken.lib.config)
基本信息
| 属性 | 值 |
|---|---|
| 包名 | codechicken.lib.config |
| 公开类型数 | 5 |
| 消费者 | 配置文件机制被 CodeChickenCorePlugin、TweakTransformer、ASMHelper 共同使用 |
功能
这是 CodeChicken 自带的带注释树形配置解析器,支持 key = value 与 { ... } 花括号分组两种语法,并在保存时保留注释。本模组的两个配置文件(CodeChickenCore.cfg 与 CodeChickenLib.cfg)都由它实现。
类清单
| 类 | 说明 |
|---|---|
ConfigFile |
配置文件根,继承 ConfigTagParent |
ConfigTagParent |
分组节点,负责子标签的增删与读写 |
ConfigTag |
叶子节点,持有值与注释 |
DefaultingConfigFile |
只在文件已存在时加载;saveConfig() 在 file == null 时不写盘 |
SimpleProperties |
扁平 key=value 属性文件(带编码指定) |
ConfigTag 的取值 API
ConfigTag(ConfigTag.java)为每个数据类型提供「带默认值」与「不带默认值」两种重载:
| 方法 | 行 | 无默认时行为 |
|---|---|---|
getValue() |
:69 |
返回 null |
getValue(String defaultValue) |
:73 |
值缺失时返回默认值 |
getIntValue() |
:78 |
Integer.parseInt(getValue()),缺失会 NPE |
getIntValue(int defaultValue) |
:82-85 |
缺失时用默认值 |
getBooleanValue() |
:91 |
基于 getValue() 判定 |
getBooleanValue(boolean defaultValue) |
:99-102 |
缺失时用默认值 |
| 十六进制读取 | :109 |
Long.parseLong(value.replace("0x",""), 16) |
| 枚举读取 | :123 |
type.valueOf(getValue()) |
另有 ConfigTagParent 提供的 getTag(String)(:126)、getTag(String, boolean create)(:105)、hasTag(...)(:194)与 removeTag(String)(:130)。本模组正是用 removeTag("persistantLava") 清理已废弃配置项(见 TweakTransformer)。
useBraces() 决定该分组在保存时是否写成 { ... } 块——CodeChickenCore.cfg 的 checks 与 tweaks 两组都调用了它。
DefaultingConfigFile 的语义
public DefaultingConfigFile(File file) {
super();
if (file.exists()) load(file);
}
(DefaultingConfigFile.java:7-10)它不会自动创建文件。ASMHelper.loadConfig() 在生产(混淆)环境下使用它,在开发环境改用 ConfigFile 并附加开发用注释(ASMHelper.java:40-41)。此外 saveConfig() 在 file != null 时才落盘(:12-15)。
工具类(codechicken.lib.util,2 类)
| 类 | 说明 |
|---|---|
Copyable<T> |
单方法接口 T copy() |
LangProxy |
命名空间限定的本地化封装,构造时给 namespace 追加 "."(LangProxy.java:10),提供 translate(key) 与 format(key, params...) |
相关条目
- CodeChickenCore.cfg - 用本库实现的主配置文件
- CodeChickenLib.cfg - 用本库实现的调试配置文件
- ASM 工具包 -
ASMHelper持有本库的配置实例