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。这是源码事实记录,本条目未运行该路径。

相关条目