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