MCPatcherForge mixin 分组(82 个)
概览
| 属性 | 值 |
|---|---|
| 源文件位置 | src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/ |
| 文件数 | 82 |
| Phase | EARLY |
| modid | mcpatcherforge |
这是 7 个 mixin 分组里最大的一个,占 383 个 mixin 的 21%。
目录构成
| 子包 | 文件数 | 主题 |
|---|---|---|
cc |
39 | ConnectedTextures 连接纹理 |
cit |
13 | CustomItemTextures 自定义物品纹理 |
mob |
10 | 生物(随机皮肤) |
base |
6 | 基础补丁 |
ctm_cc |
4 | CTM 与 CC 联动 |
hd |
4 | HD 材质包 |
renderpass |
3 | 额外渲染 pass |
sky |
2 | 自定义天空盒 |
ctm |
1 | CustomTerrainMatching |
| 合计 | 82 |
cc 一个子包就占 39 个,是全部分组的 47%。
cc(ConnectedTextures)内部
| 子子包 | 文件数 |
|---|---|
cc/client |
15 |
cc/client/renderer |
7 |
cc/client/renderer/entity |
2 |
cc/client/renderer/tileentity |
1 |
cc/client/particle |
8 |
cc/block |
13 |
cc/block/material |
1 |
cc/item |
4 |
cc/item/crafting |
1 |
cc/entity |
1 |
cc/potion |
2 |
cc/world |
4 |
| 合计(cc 顶层) | 39 |
上表为含子目录的递归计数,不能直接相加(
cc/client15 已包含其下的 renderer/particle)。按各目录直属文件计:cc/block12、cc/client0、cc/client/particle8、cc/client/renderer4、cc/item3,其余不变,合计 39。
cit(CustomItemTextures)内部
| 子子包 | 文件数(含子目录) |
|---|---|
cit/client |
8 |
cit/client/renderer |
8 |
cit/client/renderer/entity |
6 |
cit/entity |
1 |
cit/item |
1 |
cit/nbt |
2 |
cit/world |
1 |
| 合计(cit 顶层) | 13 |
renderpass 恒为不可达
mcpatcherforge.renderpass 子包有 3 个 mixin,注册表中以 setApplyIf 绑定到 NotFineConfig.renderPass(Mixins.java:858-866):
MCPATCHER_FORGE_RENDERPASS_BASE(new MixinBuilder()
.setPhase(Phase.EARLY)
.setApplyIf(() -> NotFineConfig.renderPass) // ← Mixins.java:860
.addClientMixins(addPrefix("mcpatcherforge.renderpass.",
"MixinEntityRenderer", "MixinRenderBlocks", "MixinWorldRenderer"))
结论:这三个 mixin 永远不会被应用。 NotFineConfig 里 renderPass 虽在 NotFineConfig.java:32 从配置文件读入,但同一方法末尾 NotFineConfig.java:40 又无条件 renderPass = false;(上方注释 //This will probably break hard with Angelica.),任何用户设置都无法让它变 true。两处绑定的确实是同一个字段,因此该分支属于死代码。
门控与配置
两级开关:
| 层 | 配置 | 默认 |
|---|---|---|
| 总开关 | AngelicaConfig.enableMCPatcherForgeFeatures |
true(RequiresMcRestart,注释标注 still in Alpha) |
| 分类开关 | MCPatcherForgeConfig.<Category>.enabled |
多数 false |
6 个分类配置见 McPatcherForgeConfig。CustomColors.enabled 还被 NotFine 的 RENDERBLOCKS ASM transformer 双重引用(见 NotFine AsmTransformers)。
AT 依赖
AT 文件 src/main/resources/META-INF/mcpatcherforge_at.cfg(18 行)放行:
| 字段 | 行 |
|---|---|
Block.field_149764_J(blockMaterial) |
:1 |
MapColor.field_76291_p(colorValue,public-f) |
:2 |
FontRenderer.func_111272_d()(readFontTexture) |
:3 |
EntityRenderer.field_78514_e(torchFlickerX) |
:4 |
TextureMap.field_94258_i(listAnimatedSprites) |
:5 |
TextureManager.field_110585_a(mapTextureObjects) |
:6 |
TextureClock.field_94239_h |
:7 |
AbstractResourcePack.field_110597_b(resourcePackFile) |
:8 |
上游代码
本组的能力移植自 Paul Rupe 的 MCPatcher(https://bitbucket.org/prupe/mcpatcher),1.7.10 移植由 Mist475 完成。其原始实现代码在 src/main/java/com/prupe/(61 个文件),属于第三方上游资产,不是 Angelica 自有逻辑。
相关条目
- McPatcherForge - modid 入口
- McPatcherForgeConfig - 58 字段 / 6 分类
- Mixin 注册表 -
mcpatcherforge.*注册名 - NotFine AsmTransformers -
renderPass恒 false 的来源 - AngelicaModulesConfig -
enableMCPatcherForgeFeatures