CompatHandlers

基本信息

属性 值
类名 com.gtnewhorizons.angelicacompat.asm.handlers.CompatHandlers
类型 enum
注册方式 enum 静态注册(4 个常量)

功能

按 PatchesConfig 开关批量装载/卸载 4 个 CompatHandler 实例:

枚举常量 applyIf 字段 装载的 handler
STACKS_ON_STACKS () -> PatchesConfig.patchStacksOnStacks new StacksOnStacksCompatHandler()
EXTRA_UTILS () -> PatchesConfig.patchExtraUtils new ExtraUtilsCompatHandler()
THAUMCRAFT () -> PatchesConfig.patchThaumcraft new ThaumcraftCompatHandler()
THAUMIC_HORIZONS () -> PatchesConfig.patchThaumicHorizons new ThaumicHorizonsCompatHandler()

装载 API

getHandlers() 是惰性初始化的:

public static List<CompatHandler> getHandlers() {
    if (compatHandlers != null) {
        return compatHandlers;
    }
    compatHandlers = new ArrayList<>();
    for (CompatHandlers handler : values()) {
        if (handler.shouldBeLoaded()) {
            compatHandlers.add(handler.getHandler());
        }
    }
    return compatHandlers;
}

返回的 List<CompatHandler> 中只包含 applyIf.get() == true 的项。

与 AngelicaCompatCore 的关系

AngelicaCompatCore.getASMTransformerClass() 在启动期遍历所有 CompatHandlers.getHandlers(),对每个启用 handler 调用 extraTransformers(),合并通用 AsmTransformers 与额外 transformer 类全限定名后返回给 LaunchWrapper。

只有 StacksOnStacksCompatHandler 通过 extraTransformers() 返回非空(→ StacksOnStacksTransformer),其它 3 个 handler 的 extraTransformers() 返回 null。

数值

常量 默认 shouldBeLoaded 装载默认
STACKS_ON_STACKS true(PatchesConfig.patchStacksOnStacks 默认 true) 是
EXTRA_UTILS true 是
THAUMCRAFT true 是
THAUMIC_HORIZONS true 是

限制

  • applyIf 是 Supplier<Boolean>——只在 getHandlers() 调用时求值一次;之后即使 PatchesConfig 变化(实际上不会,因为 RequiresMcRestart)也不会重读。
  • 没有"运行时卸载"语义。

第三方 mod 集成

依赖 PatchesConfig 字段读取。

相关条目