EnhanceCrashReportsTransformer
基本信息
| 属性 | 值 |
|---|---|
| 类名 | io.github.legacymoddingmc.unimixins.compat.asm.EnhanceCrashReportsTransformer |
| 文件 | module-compat/src/main/java/…/compat/asm/EnhanceCrashReportsTransformer.java |
| 行数 | 85 |
| 接口 | IClassTransformer |
| 开关 | enhanceCrashReports(默认 true) |
| 启用版本 | Minecraft 1.7.10 |
功能
在 FMLCommonHandler#enhanceCrashReport 方法末尾插入钩子,
把 mixin 错误与已应用 mixin 列表写进崩溃报告。
⚠️ 用 transformer 而非 mixin —— 这是刻意选择
源码注释原文:
Inserts a hook at the end of FMLCommonHandler#enhanceCrashReport. We use a transformer instead of a mixin because FML is a minefield for mixin errors.
即 FML 自身的类在 1.7.10 上做 mixin 极不稳定(类加载时机早于 mixin 引导), 故改用 ASM transformer 绕开这个雷区。
这是本仓「何时不该用 mixin」的关键判据: 要改 FML 引导期的类,就用 transformer,不要用 mixin。
消费点
由 CompatCore 的 getASMTransformerClass() 在
CompatConfig.enhanceCrashReports 为真时加入。
⚠️ 与 ASMRemapperTransformer 不同,本类走
标准 getASMTransformerClass() 路径,而非构造器里的
Launch.classLoader.registerTransformer(...) 早注册。
配套的运行时逻辑在 CrashReportEnhancer(同模块,
module-compat/src/main/java/…/compat/CrashReportEnhancer.java)。
相关条目
- module-compat - 注册方
- CompatConfig -
enhanceCrashReports开关 - ASMRemapperTransformer - 同模块的早注册 transformer
- MixinErrorHandler - mixin 错误处理