module-compat
基本信息
| 属性 | 值 |
|---|---|
| modid | unimixins-compat |
| Java 文件 | 10 |
| 加载插件 | io.github.legacymoddingmc.unimixins.compat.CompatCore |
| 产出 | …-compat-1.7.10.jar |
| 启用版本 | Minecraft 1.7.10 |
功能
兼容性与调试模块。mcmod.info 自述
UniMixins module that improves compatibility and helps debug crashes。
本仓中唯一注册 ASM transformer 的模块。
4 个 transformer
| transformer | 行数 | 作用 |
|---|---|---|
| ASMRemapperTransformer | 185 | 把 ASM 包名重映射到当前运行时 |
| EnhanceCrashReportsTransformer | 85 | 在 enhanceCrashReport 末尾挂钩子 |
| HackClasspathModDiscoveryTransformer | 78 | 修 dev 环境 classpath mod 不加载 |
| IgnoreDuplicateJarsTransformer | 139 | 忽略 java agent 带来的重复 jar |
其它类
| 类 | 作用 |
|---|---|
CompatModule |
空 @Mod 标记类 |
CompatCore |
IFMLLoadingPlugin |
CompatConfig |
3 个开关 |
CrashReportEnhancer |
崩溃报告增强逻辑 |
MixinErrorHandler |
mixin 错误处理 |
api/RemapASMForMixin |
注解:标记需要重映射的类 |
CompatCore 的两条注册路径
⚠️ 注册方式分两批,机制不同:
-
ASMRemapperTransformer 走
Launch.classLoader.registerTransformer(...), 且在构造函数里注册(不是getASMTransformerClass())。源码注释说明理由: 「We register the transformer this way to register it as early as possible.」 → 早于 ASM 转换阶段本身,最优先。 -
其余 3 个走
getASMTransformerClass()返回数组,按配置条件加入。
CompatConfig(3 个开关)
| 字段 | 触发条件 |
|---|---|
enableRemapper |
注册 ASMRemapperTransformer |
enhanceCrashReports |
加入 EnhanceCrashReportsTransformer |
improveInitPhaseDetection |
未被 getASMTransformerClass() 使用 |
⚠️ HackClasspathModDiscoveryTransformer 不受配置控制,
而是由系统属性开关:
if (Boolean.parseBoolean(System.getProperty("unimixins.compat.hackClasspathModDiscovery", "false")))
即需 -Dunimixins.compat.hackClasspathModDiscovery=true 启动。
把它当成配置项(.cfg 里可改)是错的。
⚠️ IgnoreDuplicateJarsTransformer 走静态方法 wantsToRun() 判定,
既非配置项也非系统属性。
相关条目
- 模块总览 - 10 模块对照
- CompatConfig - 3 个开关
- ASMRemapperTransformer - 本模块最核心的 transformer
- SanityCheckHelper -
ConfigUtil所在模块