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/client 15 已包含其下的 renderer/particle)。按各目录直属文件计:cc/block 12、cc/client 0、cc/client/particle 8、cc/client/renderer 4、cc/item 3,其余不变,合计 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 自有逻辑。

相关条目