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 正常加载。
相关
- Plugin - 基类(
canLoad/toString) - PluginLoader - 反射加载方
- TagTerraFirmaCraft - 本插件注册的 tag
- Names - modid 与显示名常量
- TagIntegration - 集成 tag 的异常处理基类