StacksOnStacksCompatHandler

基本信息

属性 值
类名 com.gtnewhorizons.angelicacompat.asm.handlers.StacksOnStacksCompatHandler
实现接口 CompatHandler
启用条件 PatchesConfig.patchStacksOnStacks == true
注册枚举 CompatHandlers.STACKS_ON_STACKS
启用版本 Minecraft 1.7.10(仅客户端)

功能

为 com.tierzero.stacksonstacks(Stacks on Stacks)mod 同时注册 3 个通用 transformer 目标 + 1 个特定 transformer:

getFieldLevelTessellator()

类 方法
com.tierzero.stacksonstacks.util.ClientUtils drawQuad、drawRectangularPrism

→ 由 FieldLevelTessellatorTransformer 读取并改写。

getTileEntityNullGuard()

类 方法
com.tierzero.stacksonstacks.client.render.RenderTilePile renderWorldBlock

→ 由 GetTileEntityNullGuardTransformer 读取并插入 null 守卫。

getThreadSafeISBRHAnnotations()

类 perThread
com.tierzero.stacksonstacks.client.render.RenderTilePile true

→ 由 ThreadSafeISBRHAnnotationTransformer 读取并写入类级注解。

extraTransformers()

返回:

ImmutableList.of("com.gtnewhorizons.angelicacompat.asm.transformers.specific.StacksOnStacksTransformer");

→ 由 AngelicaCompatCore 的 getASMTransformerClass() 加入额外 transformer 类数组,强制装载 StacksOnStacksTransformer(即使其不在通用 AsmTransformers 枚举中)。

实现要点

4 个方法都返回 ImmutableMap / ImmutableList,与 CompatRegistry 的 4 个收集 map 一一对应:

CompatHandler 方法 CompatRegistry 字段
getFieldLevelTessellator fieldLevelTessellatorTransforms
getTileEntityNullGuard tileEntityNullGuardTransforms
getThreadSafeISBRHAnnotations threadSafeISBRHAnnotations
getHUDCachingEarlyReturn hudCachingEarlyReturns
extraTransformers 单独走 AngelicaCompatCore.getASMTransformerClass()

输出与调试

无独立日志;统一通过 AngelicaCompatCore 在 DUMP_CLASSES 模式下输出改写后字节码。

数值

数值 默认 含义
通用 transformer 注册 3 类 × 2 method map FieldLevel 2 方法 + NullGuard 1 方法 + ISBRH 1 类
特定 transformer 1 类 StacksOnStacksTransformer
触发开关 PatchesConfig.patchStacksOnStacks 配置关闭则 handler 与额外 transformer 均不装载

限制

  • extraTransformers() 不会接受通用 AsmTransformers 枚举里的开关(如 enableSodium),仅跟随 patchStacksOnStacks 装载。
  • ImmutableMap.of 不允许重复类名;若同一类出现在两个 map 内会被覆盖(保留先调用的 CompatHandler 结果)。

第三方 mod 集成

仅针对 com.tierzero.stacksonstacks (Stacks on Stacks) mod。

相关条目