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 字段读取。
相关条目
- CompatRegistry - handler 数据中央注册表
- AsmTransformers - 兄弟通用 transformer 装载枚举
- AngelicaCompatCore - 装载入口
- PatchesConfig - 4 个
patch*开关 - 全部 4 个 CompatHandler 条目