AsmTransformers

基本信息

属性 值
类名 com.gtnewhorizons.angelicacompat.asm.AsmTransformers
类型 enum
注册方式 enum 静态注册(4 个常量)
上下文 enum 内部嵌套 private enum Side { CLIENT, SERVER }

功能

AngelicaCompat 的通用 ASM transformer 装载清单。当前 4 个常量,每个常量对应一个 transformer 全限定类名:

枚举常量 描述 applyIf Side transformer 类
FIELD_LEVEL_TESSELLATOR “Field Level Tessellator Transformer” () -> AngelicaConfig.enableSodium CLIENT com.gtnewhorizons.angelicacompat.asm.transformers.generic.FieldLevelTessellatorTransformer
GET_TILE_ENTITY_NULL_GUARD “getTileEntity Null Guard Transformer” () -> AngelicaConfig.enableSodium CLIENT com.gtnewhorizons.angelicacompat.asm.transformers.generic.GetTileEntityNullGuardTransformer
THREAD_SAFE_ISBRH_ANNOTATION “ThreadSafeISBRHAnnotation Transformer” () -> AngelicaConfig.enableSodium CLIENT com.gtnewhorizons.angelicacompat.asm.transformers.generic.ThreadSafeISBRHAnnotationTransformer
HUDCACHING_EARLY_RETURN “HUDCaching Early Return Transformer” () -> AngelicaConfig.enableHudCaching CLIENT com.gtnewhorizons.angelicacompat.asm.transformers.generic.HUDCachingEarlyReturnTransformer

装载流程

getTransformers() 返回当前应装载的 transformer 全限定类名数组:

public static String[] getTransformers() {
    Set<String> loadedCoreMods = GTNHMixinsCore.getLoadedCoreMods();
    List<String> transformers = new ArrayList<>();
    for (AsmTransformers transformer : values()) {
        if (transformer.shouldBeLoaded(loadedCoreMods)) {
            transformers.addAll(Arrays.asList(transformer.transformerClasses));
        }
    }
    // 反向 + Collections.sort 合并 + 插件兼容
    ...
    return transformers.toArray(new String[0]);
}

判定逻辑(每个 transformer):

  1. applyIf.get() == true;
  2. targetedMods 全部装载(默认无);
  3. excludedMods 均未装载(默认无);
  4. shouldLoadSide()(CLIENT / SERVER)匹配。

字段

字段 含义
applyIf Supplier<Boolean>:开关
side 适用端
transformerClasses 多个 transformer 全限定名(数组,便于多对一)
targetedMods 目标 mod 列表(必须全部装载)
excludedMods 排除 mod 列表(必须全部未装载)

数值

枚举常量 默认装载
FIELD_LEVEL_TESSELLATOR enableSodium=true
GET_TILE_ENTITY_NULL_GUARD enableSodium=true
THREAD_SAFE_ISBRH_ANNOTATION enableSodium=true
HUDCACHING_EARLY_RETURN enableHudCaching=true

限制

  • 没有"运行时切换"——仅在 getTransformers() 调用时读 applyIf;
  • 当前 4 个 transformer 都标 Side.CLIENT,服务端永远不装载。

第三方 mod 集成

依赖 AngelicaConfig.enableSodium 与 enableHudCaching 两个开关。

相关条目