Mod ID 与注册总表

实测 modid(3 个)

本仓是一仓多 modid。grep -rn "@Mod(" 在 src/main/java/ 下仅命中 3 处,全部为 Java 注解(无 Kotlin / Scala):

modid @Mod 位置 类名 name version
angelica src/main/java/com/gtnewhorizons/angelica/AngelicaMod.java:15 AngelicaMod Angelica Tags.VERSION
notfine src/main/java/jss/notfine/NotFine.java:13 NotFine NotFine NotFine.VERSION
mcpatcherforge src/main/java/jss/notfine/McPatcherForge.java:5 McPatcherForge MCPatcherForge 字面量 "1.0.0-alpha"

modid 常量的定义位置:

  • angelica → AngelicaMod.java:31 public static final String MOD_ID = "angelica";
  • notfine → NotFine.java:20 public static final String MODID = "notfine";
  • mcpatcherforge → McPatcherForge.java:6 直接写在注解里,无常量

三者的 @Mod 版本号都指向同一个 Tags.VERSION(除 mcpatcherforge),因此三者在同一 jar 内共享版本号。

资源域 ≠ modid

src/main/resources/assets/ 下实际存在 5 个资源域,但只有 2 个对应上 modid:

资源域 对应 modid 说明
angelica angelica ✅ 一致
notfine notfine ✅ 一致
iris 无 Iris 以库形式内嵌,没有 @Mod
sodium 无 Sodium 以库形式内嵌,没有 @Mod
minecraft 无 原版覆盖资源(非 mod 资产)

这正是「modid ≠ 资源域」的典型情况:assets/iris/ 与 assets/sodium/ 是资源域,不是 modid。

mcmod.info

src/main/resources/mcmod.info 声明了 4 条 modList 条目,其中第一条用占位符:

# modid name mcversion
1 ${modId} ${modName} 1.7.10
2 notfine NotFine ${minecraftVersion}
3 embeddium Embeddium ${minecraftVersion}
4 mcpatcherforge MCPatcherForge 1.7.10

${modId} / ${modName} / ${modVersion} 由构建脚本从 gradle.properties:6,10 注入(modName = Angelica、modId = angelica)。这就是「构建期占位符」陷阱 —— 单看 mcmod.info 无法得知真实 modid。

源码缺陷:embeddium 是死声明

mcmod.info 第 3 条声明了 modid embeddium,但:

  • 全仓 @Mod 注解只有上述 3 处,没有任何 @Mod(modid = "embeddium");
  • src/main/java/ 下搜 embeddium 只命中 org.embeddedt.embeddium.* 这类 Embeddium 的库类引用(Iris 侧代码依赖它),不是 mod 声明。

结论:embeddium 是从上游 Embeddium 合并时遗留的 mcmod.info 条目,运行时不会产生一个名为 embeddium 的 mod 容器。它没有 @Mod 类,也就没有生命周期、没有配置容器、没有 GUI 工厂。

Access Transformer 文件

src/main/resources/META-INF/ 下有 4 个 *_at.cfg,不是 4 个 modid:

文件 行数 归属
angelica_at.cfg 123 modid angelica
notfine_at.cfg 17 modid notfine
mcpatcherforge_at.cfg 18 modid mcpatcherforge
archaicfix_at.cfg 73 第三方 mod ArchaicFix 的兼容 AT,不是 Angelica 的 modid

archaicfix_at.cfg 属于 ArchaicFix(AngelicaMod.java:24 声明 after:archaicfix@[0.7.0,)),内容是 EnchantmentHelper$Modifier* 等类的可见性放行。这属于跨 mod 资产,统计 modid 时不应计入 Angelica 自有的 AT。

子项目不是 mod

settings.gradle.kts 通过 include(...) 引入的 4 个子项目均没有 gradle.properties,因此没有 modid:

子项目 java 文件数 modid
glsm 316 无(纯库;提供 SystemProperties、GLStateManager)
sdl-gpu 232 无(纯库;SDL GPU 后端)
tracy-client 12 无(纯库;Tracy 客户端 JNI)
lwjgl3-backend 2 无(纯库)

umbra/ 目录(25 个 java 文件,自带 modId = umbra)没有被 settings.gradle.kts 引入,属于仓库内嵌套的独立工程,不在 Angelica 主构建产物内。本条目不收录其内容。

相关条目