EarlyRedirectorTransformer
基本信息
| 属性 | 值 |
|---|---|
| 类 | com.gtnewhorizons.angelica.loading.fml.transformers.EarlyRedirectorTransformer |
| 路径 | src/main/java/com/gtnewhorizons/angelica/loading/fml/transformers/EarlyRedirectorTransformer.java |
| 行数 | 27 |
| 类型 | public class ... implements IClassTransformer(:19) |
| 内部实现 | EarlyRedirectorCore(glsm 子项目) |
它是什么
生命周期最短的 transformer:coremod 构造期注册,运行期被移除。全类只有一个字段 + 一个方法 + 一段 Javadoc。
Javadoc 是本类最重要的文档(:7-18)
A scoped redirector that only transforms classes from known-misbehaving (core)mod packages.
Some mods prematurely load classes that call GL functions during coremod discovery/injectData.
Those classes get missed by the late-registered AngelicaRedirectorTransformer, so their
GL calls permanently bypass GLSM.
Registered in AngelicaClientTweaker constructor. Removed by AngelicaLateTweaker
once the full redirector is in its proper post-mixin position.
即:某些 mod 在 coremod discovery/injectData 阶段就提前加载了会调 GL 函数的类。完整版 AngelicaRedirectorTransformer 注册得太晚(要在 mixin 之后),这些类一旦已被加载就再也拦不住,GL 调用永久绕过 GLSM。本类作为「早期保险」先挂上。
挂在哪个阶段
| 阶段 | 位置 |
|---|---|
| 注册 | AngelicaClientTweaker 构造函数(Javadoc :14 明确),手工 classloader 排除式注册 |
| 排序 | 早于 mixin(EcosystemNarrowRules.EARLY_REDIRECTOR_TARGETS,见 @see :17) |
| 移除 | AngelicaLateTweaker.getLaunchArguments :55-71,removeIf 匹配 EARLY_REDIRECTOR_CLASS 常量(:18) |
| 移除条件 | 仅在 RFB 未加载 时——RFB 路径根本不追加 AngelicaLateTweaker |
transform(:22-25)把 transformedName 传给 EarlyRedirectorCore("com.gtnewhorizons.angelica.transform")。
已知问题
- 「已知行为不良」是硬编码名单:
EcosystemNarrowRules.EARLY_REDIRECTOR_TARGETS(在 glsm 子项目)列出的包才被本类处理。名单外的提前加载行为无法覆盖,且扩充名单需改 glsm 子项目。 - 替换时机依赖
AngelicaLateTweaker,而后者在 RFB 路径下不存在——本类与完整版 redirector 不会同时存在(RFB 路径由RFBAngelicaRedirector独立承担),所以 RFB 用户完全拿不到本保险。这是两条路径的行为差异,不是缺陷。 - 无 dump:与 AngelicaRedirectorTransformer 同样不调用 AngelicaClassDump。
EARLY_REDIRECTOR_CLASS常量在 AngelicaLateTweaker 里重复定义(:18),本类自身没有暴露自己的类名字符串——字符串重复两处,有失同步风险。
相关条目
- AngelicaRedirectorTransformer - 完整版,本类的替代者
- AngelicaClientTweaker - 构造期注册点
- AngelicaLateTweaker - 运行期移除点
- RFBAngelicaRedirector - RFB 路径的对应物
- FML Transformers - RFB 路径无对应类的说明