TerraFirmaCraft

TerraFirmaCraft 集成插件

基本信息

属性 值
路径 com.github.lunatrius.ingameinfo.integration.terrafirmacraft.TerraFirmaCraft
行数 31
父类 Plugin
依赖的 modid terrafirmacraft
提供的 tag 见下

⚠️ 源码带 @SuppressWarnings("UnusedDeclaration") —— 因为该类只被 PluginLoader 用字符串反射实例化 (PluginLoader.java:26-30 的字符串数组), 没有任何静态引用,编译器会报「未使用的声明」。

⚠️ 依赖声明为 compileOnly('curse.maven:tfcraft-302973:2627990')

modid 实测与陷阱

5 个集成里唯一有 coremod 前置条件的(见下)。依赖来自 curse.maven。

不在 Wiki 收录范围(data/relation.md 无对应行),故不建分类、不加链接。

三个覆写

方法 返回
getDependency() Names.Mods.*_MODID = terrafirmacraft
getDependencyName() Names.Mods.*_NAME = TerraFirmaCraft
load() TagTerraFirmaCraft.register()

⚠️ getDependency() 与 getDependencyName() 分别读 Names 的 Mods 段的两个不同常量 —— modid 与显示名分开定义。modid 的异常(如 Blood Magic 的 AWWayofTime) 无法从显示名推断,只能看 Names 或 Loader.isModLoaded 的实参。

load

public void load() { TagTerraFirmaCraft.register(); }

由 PluginLoader.postInit(:60-69)在 preInit 筛出 canLoad() 为真的插件后调用。

⚠️ load() 只注册 tag,不注册任何事件、命令或渲染钩子。 本 mod 对第三方模组的全部介入都是「读它们的值,显示到 HUD」—— 不修改对方任何状态。

getDependencyVersion 与同名类陷阱(:22-25)

import com.bioxx.tfc.Reference;   // :3  ⚠️ TFC 自己的 Reference
...
public String getDependencyVersion() { return Reference.MOD_VERSION; }

⚠️ 本文件里的 Reference 是 com.bioxx.tfc.Reference(TFC 的类), 不是本 mod 的 Reference (com.github.lunatrius.ingameinfo.reference.Reference)。

两个类同名,靠 import 区分。TFC 的 Reference 有 MOD_VERSION 字段; 本 mod 的 Reference 没有(只有 MODID / NAME / PROXY_SERVER / PROXY_CLIENT / GUI_FACTORY / logger)—— 所以若 import 写错会编译失败(cannot find symbol: MOD_VERSION)。

coremod 前置条件(源码注释 :8)

// NOTE: requires VM arguments: -Dfml.coreMods.load=com.bioxx.tfc.TFCASMLoadingPlugin

TFC 1.7.10 必须经 coremod 加载。缺这个 VM 参数 TFC 本身装不上, 本集成的 9 个 tag 自然也无值。

所以本集成是 5 个里环境要求最严的:既要 canLoad() 通过 (Loader.isModLoaded("terrafirmacraft")), 又要求 TFC 的 coremod 正常加载。

相关