Loading Plugin

基本信息

net.glease.tc4tweak.asm.LoadingPlugin implements IFMLLoadingPlugin —— coremod 入口。

注解

注解 值
@IFMLLoadingPlugin.Name TC4TweakCoreMod
@IFMLLoadingPlugin.SortingIndex 2000
@IFMLLoadingPlugin.MCVersion 1.7.10
@IFMLLoadingPlugin.TransformerExclusions net.glease.tc4tweak.asm

与 FoamFix Core 的 SortingIndex = 1001 相比, TC4Tweaks 更晚加载(2000),因此在 coremod 排序中排在 FoamFix 之后。

接口实现

方法 行 返回
getASMTransformerClass() 31 {"net.glease.tc4tweak.asm.TC4Transformer"}
getModContainerClass() 36 null
getSetupClass() 41 null
getAccessTransformerClass() 96 null
injectData(Map<String,Object>) 46 —

⚠️ 硬性前置检查

if (!TC4Transformer.initialized) {
    throw new IllegalStateException("TC4Tweaks class transformer failed to be initialized");
}

injectData 要求 TC4Transformer 构造函数(把 initialized = true) 已先运行。getModContainerClass() / getSetupClass() 都返回 null, 所以本 coremod 不注册 @Mod,普通 mod 身份由 TC4Tweak 的 @Mod 注解承担。

三个环境探测标志

字段 探测方式
dev !(boolean) data.get("runtimeDeobfuscationEnabled")
gt6 coremodList 中任一项含 Greg-ASM
hodgepodge coremodList 中任一项 小写后含 hodgepodge

gt6 被 TC4 Transformer 用于禁用 ScanManager 补丁。

⚠️ 两个互斥检测直接抛异常

injectData 里对两个 mod 做硬性排斥(不是警告,是 throw new RuntimeException):

冲突 mod 提示
NotEnoughThaumcraftTabs(含 BTPlugin) Remove NotEnoughThaumcraftTabs. TC4Tweaks now comes with the same functionality and is incompatible with it.
ThaumicFixer(含 Thaumic Fixer) Remove ThaumicFixer. TC4Tweaks has roughly the same functionality and is incompatible with it.

两者都会先弹 JOptionPane(仅在 !GraphicsEnvironment.isHeadless() 时, 保证专用服务器不炸),再打 9 行 log.error(# 横幅包裹、错误信息重复 3 次)后抛异常。

这解释了 NEI 侧的能力:本 mod 自带 Thaumcraft 页签功能, 故与 NotEnoughThaumcraftTabs 互斥。

mixingasm 兼容

List<String> list = (List<String>) data.computeIfAbsent(
        "mixingasm.transformerInclusionList", k -> new ArrayList<>());
list.addAll(Arrays.asList(getASMTransformerClass()));

把自己标记为「幂等安全」,避免被 mixingasm 重复包裹。 注释:my transformers are idempotent, as it should be。

调试

DEBUG = Boolean.getBoolean("glease.debugasm") —— JVM 系统属性开关。 调试输出目录:<Launch.minecraftHome>/.asm/,创建时先删空。

相关条目

源码

  • src/main/java/net/glease/tc4tweak/asm/LoadingPlugin.java