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:31public static final String MOD_ID = "angelica";notfine→NotFine.java:20public 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 主构建产物内。本条目不收录其内容。
相关条目
- AngelicaMod -
angelica主类 - NotFine -
notfine主类 - McPatcherForge -
mcpatcherforge主类 - 资源域与语言文件 - 5 个资源域的 lang 覆盖情况