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