配置库(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...)

相关条目