CodeChickenLib.cfg
基本信息
| 属性 | 值 |
|---|---|
| 路径 | <minecraftDir>/config/CodeChickenLib.cfg |
| 创建处 | ASMHelper.java:35-45(loadConfig() 静态初始化) |
| 实现类 | 生产环境 DefaultingConfigFile;开发环境 ConfigFile |
| 活跃配置项 | 3 |
| 头部注释 | CodeChickenLib development configuration file.(仅开发环境写入) |
功能
这是 ASM 工具包 专用的调试配置文件,与主配置 CodeChickenCore.cfg 完全独立。
ASMHelper.config 在类静态初始化时创建(ASMHelper.java:32)。loadConfig()(:35-45)通过反射读取 FMLInjectionData.data()[6] 拿到游戏目录(弱引用式写法,注释为 weak reference for environments without FML),拼出 config/CodeChickenLib.cfg(:37-39)。
| 运行环境 | 判定 | 返回类型 | 行 |
|---|---|---|---|
| 生产(混淆) | ObfMapping.obfuscated == true |
new DefaultingConfigFile(file) |
:40 |
| 开发(未混淆) | 否则 | new ConfigFile(file).setComment("CodeChickenLib development configuration file.") |
:41 |
DefaultingConfigFile 只在文件已存在时加载(DefaultingConfigFile.java:7-10),因此首次运行不会自动创建该文件。
三个配置项
| 配置项 | 读取位置 | 类型 | 默认值 | 作用 |
|---|---|---|---|---|
dump_asm |
ModularASMTransformer.java:50 |
布尔 | false |
开启 ASM 指令转储 |
textify |
ASMHelper.java:171 |
布尔 | true |
转储格式:Textifier(可读文本)vs ASMifier(ASM 语法) |
mappingDir |
ObfMapping.java:97-98 |
字符串 | 无(null) |
存放 packaged.srg、fields.csv、methods.csv 的目录 |
textify 的两个分支
ASMHelper.java:160 依据该开关选择 visitor:
ClassVisitor cv = new TraceClassVisitor(null, textify ? new Textifier() : new ASMifier(), pout);
默认 true 即输出可读文本。
mappingDir 的搜索顺序
MCPRemapper.getConfFiles()(ObfMapping.java:96-116)先取该标签,再按 DIR_GUESSES = 6 次自动猜测 + DIR_ASKS = 3 次询问依次尝试(:99、:118-119)。confDirectoryGuess 的猜测顺序为:
| 序号 | 路径 | 行 |
|---|---|---|
| 0 | 标签值本身(若已设置) | :125 |
| 1 | <mcDir>/../conf |
:127 |
| 2 | <mcDir>/../build/unpacked/conf |
:129 |
| 3 | 基于 user.home 的路径 |
:131-132 |
全部失败时抛 RuntimeException("Failed to select mappings directory, set it manually in the config")(:115)。前 6 次猜测的异常被静默吞掉(:107),第 7 次起才 printStackTrace()。
失效风险
ASMHelper.config 在 loadConfig() 抛异常时返回 null(:42-44)。而 ModularASMTransformer.java:50 与 ASMHelper.java:171 都直接调用 config.getTag(...),未做 null 检查。在无 FML 的环境下这两个调用点会 NPE。这是源码事实记录,本条目未运行该路径。
相关条目
- ASM 工具包 - 本文件的唯一使用方
- 配置库 -
DefaultingConfigFile/ConfigFile的实现 - CodeChickenCore.cfg - 主配置文件,与本文件无关