Angelica

[!INFO] Git Commit: af599f2 (branch master) | 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 字段 + TransformerCompat 8 开关
  • CompatConfig - angelica-compat.cfg,9 项第三方 mod 开关,全部默认开
  • FontConfig - 16 字段自定义字体;customFontQuality 与 fontAAStrength 语义不同
  • McPatcherForgeConfig - modid mcpatcherforge 的 6 分类 / 58 字段,手写 registerConfig()
  • SystemProperties - 54 个 JVM 系统属性,物理文件在 glsm/ 子项目内

coremod(7 条)

mixin(10 条)

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 个为新增补齐:

条目 条目 条目 条目
AngelicaClassDump(变换前后字节码落盘) ExtraUtilsCompatHandler ImmersiveEngineeringCompatHandler StacksOnStacksCompatHandler
ThaumcraftCompatHandler ThaumicHorizonsCompatHandler FieldLevelTessellatorTransformer HUDCachingEarlyReturnTransformer
ImmersiveEngineeringTransformer StacksOnStacksTransformer ThreadSafeISBRHAnnotationTransformer TileEntityNullGuardTransformer
AngelicaRedirectorTransformer CeleritasBlockTransformer EarlyRedirectorTransformer GenericCompatTransformer
IsbrhTessellatorAbuseTransformer ICompatHandler(兼容处理器接口) RFBAngelicaRedirector RFBCeleritasBlockTransformer
RFBIsbrhTessellatorAbuseTransformer shared/package-info(双类加载器中立包) shared/AngelicaRedirector CeleritasBlockTransform
IsbrhTessellatorAbuseTransform TileEntityMarkerTransform fml/tweakers/package-info(ITweaker 独立包约束)

feature/(29)

上文已链出 3 个;以下 26 个为新增补齐:

条目 条目 条目 条目
/angelica 命令(AngelicaCommand) API 层(对外扩展点) 护甲 / 闪光 / 玩家反射(armor & glint) 客户端渲染服务(client/rendering)
调试叠加层(debug/ 图形与区块小地图) 掉落物品实例化(rendering/items) Dynamic Lights(动态光源) Event(事件总线)
Flyby 巡航录制(debug/flyby) 字体批处理(client/font/) 帧节流内核(PacerCore / PacerSleeper / OperationArgs) GPU 视锥剔除(rendering/culling)
helpers 包(LoadControllerHelper / RendererLivingEntityHelper) Iris / 着色器兼容桥(iris/ + shadercompat/) models/(空壳目录) 粒子实例化(rendering/particles + ParticleRunSplitter)
FPS / 性能剖析(profiling/ + AsprofRecorder) 渲染崩溃恢复(RenderRecovery / RenderFailures) render/(云 / 全景 / 天气 / 选框 / 自发光贴图) 阴影体素化 Sink(rendering/voxelization)
TESR 实例化管线(rendering/tesr 核心) TESR 网格捕获(rendering/tesr 模板与顶点) TESR 保留组(rendering/tesr 缓存与实体批渲染) Tessellator / 线程世界访问 / 渲染队列
utils 运行时工具(utils/ 其余 8 个) 纹理工具层(utils/ 纹理与 mipmap)

mixin/(10)

全部 10 个条目已在上文列出。

mod-entry/(6)

全部 6 个条目已在上文列出。

resource/(1)

全部 1 个条目已在上文列出。

vendored/(4)

全部 4 个条目已在上文列出。

<!-- AUTO-INDEX:END -->