NotFine AsmTransformers(NotFine 的 transformer 枚举)
基本信息
| 属性 | 值 |
|---|---|
| 类 | jss.notfine.asm.AsmTransformers |
| 路径 | src/main/java/jss/notfine/asm/AsmTransformers.java |
| 行数 | 33 |
| 类型 | public enum AsmTransformers implements ITransformers(:12) |
| 枚举项数 | 2 |
| 所属 modid | notfine(不是 angelica) |
2 个枚举项
| 枚举项 | applyIf 条件 |
transformer 类名 | 行 |
|---|---|---|---|
RENDERBLOCKS |
AngelicaConfig.enableMCPatcherForgeFeatures && MCPatcherForgeConfig.CustomColors.enabled |
jss.notfine.asm.RenderBlocksTransformer |
:14-16 |
WORLDRENDERER |
NotFineConfig.renderPass |
jss.notfine.asm.WorldRendererTransformer |
:17-19 |
RENDERBLOCKS 是双重门控:既要求 Angelica 主配置的总开关,又要求 MCPatcherForge 的 custom_colors 分类开关。
WORLDRENDERER 恒为 false
NotFineConfig.renderPass 在 NotFineConfig.java:40 被无条件覆盖为 false(见 NotFine 的缺陷说明)。因此 WORLDRENDERER 的 applyIf 永远返回 false,WorldRendererTransformer 实际上永远不会被注册。
这是一处典型的「配置项存在但代码从不采用」:notfine.cfg 里的 renderPass 开关写了、注释写了、AsmTransformers 也绑定了,唯独 loadSettings() 在保存后把它抹成 false。
构造即建 Builder
:23-25:
AsmTransformers(Supplier<Boolean> applyIf, String transformer) {
this.builder = new TransformerBuilder().setApplyIf(applyIf).addClientTransformers(transformer);
}
每个枚举项在类加载时就构造好一个 TransformerBuilder,并通过 addClientTransformers(client 限定)登记类名。
注册路径
由 AngelicaClientTweaker :119-121 消费:
final List<String> notFineTransformers = Arrays.asList(ITransformers.getTransformers(AsmTransformers.class));
if (!notFineTransformers.isEmpty()) Namer.initNames();
transformers.addAll(notFineTransformers);
ITransformers.getTransformers(...) 是 gtnhmixins 的框架方法,会按各枚举项的 applyIf 过滤。Namer.initNames() 只在结果非空时调用一次。
因为 WORLDRENDERER 恒 false,notFineTransformers 最多只含 1 项(RenderBlocksTransformer,且需两级开关都开)。
ASM 实现类
jss/notfine/asm/ 目录共 4 个 java 文件 + 1 个 mappings 目录:
| 文件 | 角色 |
|---|---|
AsmTransformers.java |
本枚举 |
RenderBlocksTransformer.java |
对应 RENDERBLOCKS |
WorldRendererTransformer.java |
对应 WORLDRENDERER(实际不可达) |
ASMUtils.java |
ASM 辅助 |
mappings/ |
混淆映射目录 |
与 Angelica 侧兼容 transformer 的区别
NotFine AsmTransformers |
Angelica CompatHandlers |
|
|---|---|---|
| 项数 | 2 | 5 |
| 注册方式 | gtnhmixins ITransformers 框架 |
手写 getTransformers() 返回类名 |
| 门控 | 逐项 Supplier<Boolean> |
逐项 CompatConfig 开关 |
| 额外机制 | 无 | handler 非空时追加 GenericCompatTransformer |
| 过滤时机 | getTransformers(AsmTransformers.class) 内部 |
getHandlers() 循环内 |
两套机制在 AngelicaClientTweaker.getASMTransformerClass() 里被合并到同一个 List<String>,因此 Namer 初始化只需一次。
相关条目
- NotFine -
NotFineConfig.renderPass缺陷所在 - AngelicaClientTweaker - transformer 列表第 (2) 段
- CompatHandlers - transformer 列表第 (1) 段
- McPatcherForgeConfig -
CustomColors.enabled - AngelicaModulesConfig -
enableMCPatcherForgeFeatures