Transformer Factory
基本信息
net.glease.tc4tweak.asm.TransformerFactory —— 把「某个目标类该用哪个 Visitor」
这一信息封装起来,并携带两个开关:isExpandFrames() 与 isInactive()。
构造形式(TC4Transformer 中出现 4 种)
| 形式 | 例 | 说明 |
|---|---|---|
new TransformerFactory(XxxVisitor::new) |
绝大多数 | 方法引用构造 |
new TransformerFactory(XxxVisitor::new, Side.CLIENT) |
11 条 | 标注客户端侧 |
XxxVisitor.createFactory(...) |
BlockMagicalLeavesVisitor 等 |
需额外参数(方法名等) |
XxxVisitor.FACTORY |
TileAlchemyFurnaceAdvancedRendererVisitor.FACTORY |
预建静态常量 |
两个判定
| 方法 | 作用 |
|---|---|
isExpandFrames() |
为 true 时 TC4Transformer 用 ClassWriter.COMPUTE_FRAMES,并以 ClassReader.SKIP_FRAMES 读入 |
isInactive() |
为 true 时直接跳过变换(transform 原样返回字节) |
isInactive() 的匿名覆写实例见 TC4 Transformer:
ScanManager 在 GT6 下返回 true。
apply(int api, ClassVisitor cv)
把 Visitor 应用到 ASM 的 ClassVisitor 上,由 TC4Transformer.transform
以 ASM5 常量调用。
相关条目
源码
src/main/java/net/glease/tc4tweak/asm/TransformerFactory.java