Angelica
[!INFO] Git Commit:
af599f2(branchmaster) | Minecraft 1.7.10 / Forge 10.13.4.1614
Angelica 是 GTNewHorizons 为 Minecraft 1.7.10 打造的一体化渲染模组,把 Iris 着色器、Celeritas 地形引擎、Sodium 渲染选项、NotFine 细调设置、MCPatcherForge 纹理包、Reese’s Sodium Options、Optimus 以及一批第三方 mod 的兼容补丁全部收进一个 jar。它不注册任何游戏内容。
实测注册普查
本模组的注册真源集合(全部实测,非估算):
| 类别 | 真实数量 | 说明 |
|---|---|---|
| modid | 3 | angelica / notfine / mcpatcherforge |
| Block | 1(默认不注册) | test_block,受 @Config.Ignore() 的开关门控 |
| Item | 0 | GameRegistry.registerItem 命中 0 |
| Entity | 0 | EntityRegistry 唯一命中是查询而非注册 |
| TileEntity | 0 | — |
| KeyBinding | 7 | 集合去重与调用点计数两法一致 |
| @Config 类 | 4 | 另有 NotFine 的旧版 Configuration 与 Sodium 的 JSON |
| 配置字段 | 171 | 88 + 9 + 16 + 58 |
| Mixin | 383 | early 349 + late 34 |
| Mixin 注册组 | 53 | 去重后 392 个注册名 |
| coremod 类 | 35 | loading/ 目录 |
| 子项目 | 4 | 均无 modid |
「链接检查全绿」不等于「覆盖完整」。本分类已成文 37 条,覆盖见文末 覆盖与缺口。
modid:一个 jar,三个 mod
grep -rn "@Mod(" 在 src/main/java/ 下仅命中 3 处。仓库根目录另有一个 umbra/ 目录(自带 modId = umbra),但它未被 settings.gradle.kts 引入,不属于本构建产物。
mcmod.info 声明 4 条 modList —— 其中 embeddium 没有 @Mod 类的死声明,且 mcmod.info 第 1 条用 ${modId} 占位符(构建期注入)。详见 Mod ID 与注册总表。
资源域有 5 个(angelica / notfine / iris / sodium / minecraft),但只有 2 个对应 modid —— Iris 与 Sodium 是库,不是 mod。
源码规模
| 模块 | java 文件数 |
|---|---|
src/main/java |
1035 |
src/mixin/java |
383 |
src/test/java |
114 |
glsm 子项目 |
316 |
sdl-gpu 子项目 |
232 |
tracy-client 子项目 |
12 |
lwjgl3-backend 子项目 |
2 |
umbra(不在构建内) |
25 |
| 合计 | 2119(kotlin / scala / groovy 均为 0) |
两条类加载路径
Angelica 同时兼容 RetroFuturaBootstrap 与经典 LaunchWrapper,由黑板标志 angelica.rfbPluginLoaded 互斥切换。关键差异:RFB 路径不注册任何第三方 mod 的 ASM 兼容 transformer —— 装了 RFB 就拿不到 CompatHandlers 驱动的 5 项兼容补丁。
维度
mod-entry(6 条)
- AngelicaMod -
@Mod("angelica")主类、依赖声明、三段生命周期转发 - Mod ID 与注册总表 - 3 个 modid 的真源、
embeddium死声明、4 个 AT 文件的归属 - Proxy - CommonProxy / ClientProxy:唯一方块注册点、视频设置三方分叉、LOTR 反射替换
- KeyBinding 注册总表 - 7 个按键、Iris 单数分类键的不一致
- NotFine -
@Mod("notfine")主类、39 项Settings枚举、renderPass死开关 - McPatcherForge -
@Mod("mcpatcherforge")空壳主类、82 个 mixin 的能力划分
config(5 条)
- AngelicaModulesConfig -
angelica-modules.cfg,88 字段 +TransformerCompat8 开关 - CompatConfig -
angelica-compat.cfg,9 项第三方 mod 开关,全部默认开 - FontConfig - 16 字段自定义字体;
customFontQuality与fontAAStrength语义不同 - McPatcherForgeConfig - modid
mcpatcherforge的 6 分类 / 58 字段,手写registerConfig() - SystemProperties - 54 个 JVM 系统属性,物理文件在
glsm/子项目内
coremod(7 条)
- AngelicaTweaker - coremod 入口,客户端/服务端分叉(服务端完全不注入)
- AngelicaClientTweaker - 真正的实现:配置注册、transformer 列表真源、黑板发布
- AngelicaRfbPlugin - RFB 路径的 3 个 transformer
- CompatHandlers - 5 项枚举;全开时
getTransformers()返回 3 个类名 - NotFine AsmTransformers - 2 项枚举;
WORLDRENDERER恒不可达 - FML Transformers - 5 个 FML + 6 个兼容 + 4 个
shared/变换器 - Late Tweakers - 4 个 ITweaker:收窄排除、强制禁用 OptiFine/Fastcraft/BetterFPS、移除 Xaeros
mixin(10 条)
- Mixin 注册表 - 注册真源:53 组 / 395 个去重名 vs 383 个源文件的差异分析
- TargetedMod - 28 项目标 mod 探测,同一列混着 6 种 modid 风格
- Angelica mixin 分组 - 122 个(顶层 11 + 24 个子包)
- MCPatcherForge mixin 分组 - 82 个,
cc一个子包占 39 - NotFine mixin 分组 - 45 个(early 33 + late 12)
- Iris(着色器)mixin 分组 - 44 个
- Celeritas mixin 分组 - 40 个
- early/rendering mixin 分组 - 24 个渲染基础设施
- late/client mixin 分组 - 21 个第三方 mod 补丁
- 其余 mixin 分组 - 5 个(dragonapi 2 + sdlgpu 2 + chisel 1)
feature(3 条)
- HUDCaching - HUD 帧缓存;
hudCachingFPS的整除节流 - Zoom - 滚轮缩放 1.0×–64.0×,默认 4.0×,每格 ×1.2
- FpsReducer - 三层封顶 + 音量联动,配置在
angelica-options.json
vendored(4 条)
- Iris(内嵌库) - 381 个文件,全仓最大子系统,无 modid
- Celeritas - 51 个文件,1.7.10 地形引擎,含 MBI 群系混合
- Sodium 与 Reese’s - 59 个文件,JSON 配置
angelica-options.json - 子项目 - glsm 316 / sdl-gpu 232 / tracy-client 12 / lwjgl3-backend 2,均无 modid
compat(1 条)
- 运行时兼容层 -
compat/41 个文件、16 个子包;mojang/16 个是 API 垫片不是 mod 兼容
resource(1 条)
- 语言文件与资源域 - 5 个资源域但只有 2 个有 lang(14 个
.lang,angelica域 352 键 /notfine域 85 键)
跨分类
- AngelicaCompat - 下游独立兼容包,与
CompatHandlers/CompatConfig/late/client三处 mod 清单重叠 - Backhand - 被
TargetedMod.BACKHAND、Iris 的MixinItemRendererBackhand、Xaeros 同类问题共同涉及 - Supernova -
TargetedMod.SUPERNOVA的探测目标
覆盖与缺口
已覆盖:全部 3 个 modid、4 个 @Config 类(171 字段)、383 个 mixin(按 7 个分组 + 兜底 5 个精确切分)、35 个 coremod 类中的 11 个 transformer/tweaker、41 个运行时兼容文件的结构、14 个语言文件。
未覆盖(本版未成文,如实列出):
| 缺口 | 分母 | 说明 |
|---|---|---|
src/main/java 内部实现 |
1035 | 仅成文 config(5)、loading(11)、rendering/celeritas(4)、compat(4)、hudcaching/zoom/FpsReducer(3)、proxy(2);net/coderbot/iris 的 381 个文件、me/jellysquid 48、com/prupe 61、kroppeb 58、de/odysseus 22 等上游内嵌代码均未逐文件成文 |
early/angelica 25 个子包的逐 mixin 条目 |
122 | 只到子包级(数量 + 主题 + 代表类名),未到单 mixin 级 |
mcpatcherforge.cc 内部 12 个子子包 |
39 | 只到两层 |
| Iris 的 381 个文件 | 381 | 只成文门面类、mixin 分组与生命周期 |
| 调试工具链 | debug/ 15 + profiling/ 5 + commands/ 1 + debug/flyby |
/angelica 命令、F3 改写、Flyby、Tracy 采集仅在相关条目中提及 |
dynamiclights(9)、api(27)、models(1)、zoom/hudcaching 周边 |
— | 未单独成文 |
src/test 114 个测试文件 |
114 | 未收录 |
源码缺陷
| 文件:行 | 问题 |
|---|---|
src/main/java/jss/notfine/config/NotFineConfig.java:39-40 |
读出 renderPass 并 config.save() 之后无条件 renderPass = false,导致 Mixins.java:860 的 mixin 与 AsmTransformers.java:18 的 transformer 永久失效,用户在 notfine.cfg 里怎么写都没用 |
src/main/resources/mcmod.info(第 3 条) |
声明 modid embeddium,但全仓无 @Mod(modid="embeddium") —— 死声明 |
src/main/resources/mcmod.info(第 1 条) |
modid / name / version 全为 ${modId} 等构建期占位符,单看该文件无法得知真实 modid |
src/main/java/com/gtnewhorizons/angelica/config/AngelicaConfig.java:43-44 |
enableTestBlocks 标 @Config.Ignore() 却带 @Config.DefaultBoolean(false) —— 既不落盘也不可由配置改,只能靠 -Dangelica.debug.testBlocks |
AngelicaClientTweaker.java:3 引用 com.gtnewhorizons.angelica.config.SystemProperties |
该类物理文件在 glsm/ 子项目内,主源码树下无同名文件,跨子项目找类时极易误判为缺失 |
net/coderbot/iris/Iris.java:982-984 |
Iris 按键分类用 key.category.iris.keybinds(单数),Minecraft 原版约定是 key.categories.…(复数),且该键仅在 en_US / uk_UA 两种语言中有翻译 |
loading/fml/tweakers/IncompatibleModsDisablerTweaker.java:129 |
在 for (Map.Entry … : containers.entrySet()) 循环体内直接 containers.remove(...),边遍历边改 HashMap |
loading/AngelicaTweaker.java:15-21 |
源码注释自陈缺陷:同时实现 IFMLLoadingPlugin 与 IEarlyMixinLoader 会导致 transformer 排序索引失效、混淆环境下看到 obfuscated 而非 SRG 映射 |
| <!-- AUTO-INDEX:START --> |
完整索引(自动生成)
本节由
tools/sync_catpage_index.py从磁盘实际文件生成,共 90 个条目。 上面各节是人工撰写的概览;任何未在上面出现的条目都在这里。 重新生成:删掉本节两个<!-- AUTO-INDEX -->标记之间的内容后重跑脚本。
compat/(1)
全部 1 个条目已在上文列出。
config/(5)
全部 5 个条目已在上文列出。
coremod/(34)
上文已链出 7 个;以下 27 个为新增补齐:
feature/(29)
上文已链出 3 个;以下 26 个为新增补齐:
mixin/(10)
全部 10 个条目已在上文列出。
mod-entry/(6)
全部 6 个条目已在上文列出。
resource/(1)
全部 1 个条目已在上文列出。
vendored/(4)
全部 4 个条目已在上文列出。
<!-- AUTO-INDEX:END -->