装甲模型回溯移植

装甲模型回溯移植

让资源包替换已穿戴盔甲的3D模型——EMF的逐件盔甲模型,回移植到1.21.1版本。

让资源包能够替换穿戴盔甲的3D模型。将EMF的分件盔甲模型移植回Minecraft 1.21.1。

功能

Minecraft 1.21.1将穿戴的盔甲锁定为固定形状。资源包只能更改纹理——而且纹理还被限制在64×32的布局中。

此模组移除了这两个限制。资源包可以使用OptiFine CEM格式定义盔甲几何体,且纹理尺寸任意。

存在原因

3D盔甲资源包由分件CEM模型构建——helmet.jem、chestplate.jem、leggings.jem、boots.jem。EMF对这些文件的支持仅限1.21.2+,因此1.21.1没有替代方案。

在1.21.1上启用3D盔甲资源包会导致盔甲渲染错乱:资源包的64×64纹理被一个假设为64×32的模型采样,导致只有上半部分被拉伸到整个部件上。此模组填补了这一缺失。

1.21.4新增的原版装备系统(equipment/*.json)仅定义纹理层,不定义几何体。这不是本模组所替代的内容。

使用方法

1. 将jar文件放入mods文件夹。仅客户端需要——服务器端无需安装。

2. 将3D盔甲资源包放入resourcepacks文件夹并在游戏中启用。无需编辑——为1.21.4及更高版本构建的资源包可直接使用。

3. 穿上盔甲。日志中应显示:

[armorcem] loaded 4 armor models [HEAD, CHEST, LEGS, FEET] (json 0 / jem 4)

如果加载了0个模型,说明资源包没有盔甲模型或未被启用。

配套模组

以下模组覆盖同一资源包的其他部分。盔甲功能无需它们也可正常工作。

模组 覆盖内容
Modefite 手中和物品栏中的物品外观
EMF 实体模型——马铠、三叉戟、盔甲架

读取内容

它会在资源包中查找以下文件。如果都不存在,则不做任何操作,原版盔甲正常渲染。

assets/minecraft/optifine/cem/helmet.jem
assets/minecraft/optifine/cem/chestplate.jem
assets/minecraft/optifine/cem/leggings.jem
assets/minecraft/optifine/cem/boots.jem

它还会桥接纹理路径。新版资源包使用textures/entity/equipment/humanoid/<material>.png,而1.21.1查找的是textures/models/armor/<material>_layer_1.png。模组会检查新版路径并在存在时使用,旧版资源包不受影响。

资源包不显示时

新版资源包通常声明min_format/max_format而不带pack_format。1.21.1的解析器要求pack_format,因此解析失败,资源包根本不会出现在列表中——这是3D盔甲资源包无法启用的最常见原因。

模组会为您补全此项。副作用是资源包会被视为1.21.1资源包,因此新版本的overlay不再匹配并保持不活动——其核心着色器永远不会被编译,也就不会破坏资源重载。

给资源包作者——手写模型

如果jem解析结果不正确,可以在assets/minecraft/armorcem/humanoid.json中提供预转换的定义来覆盖。它优先于任何.jem文件。

{
  "helmet": {
    "textureSize": [64, 64],
    "parts": [
      {
        "part": "head",
        "pivot": [0, 0, 0],
        "mirror": false,
        "boxes": [
          { "origin": [-4, -8, -4], "size": [8, 8, 8], "inflate": 1.0, "uv": [0, 0] }
        ]
      }
    ]
  }
}
字段 含义
顶层键 helmet、chestplate、leggings、boots
textureSize UV坐标以此值进行除法——64×32限制已不存在
part head、hat、body、right_arm、left_arm、right_leg、left_leg
pivot 部件原点,使用原版实体模型空间(y轴向下,原点靠近颈部)
mirror 水平翻转纹理
origin/size 盒体角点和尺寸,相对于pivot定义
inflate 使盒体每侧向外扩展——与原版盔甲变形效果相同
uv 纹理偏移,与原版模型约定一致

部件和分件都是可选的。任何未定义的部分保持原版状态。

不包含的功能

  • 无按材质区分的几何体。每个部件一个模型;材质仅通过纹理区分。
  • 仅支持原版盔甲物品。模组盔甲不受影响。
  • 手持和物品栏中的物品模型不在范围内——那是Modefite的职责。
  • 马铠和实体模型由EMF负责。
  • 仅客户端。

兼容性

NeoForge 1.21.1。

模型替换使用NeoForge官方的IClientItemExtensions钩子。仅纹理路径和资源包格式回退使用mixins,且两者都是单返回值调整,因此冲突可能性很低。

如果另一个模组为相同的原版盔甲物品注册了客户端扩展,则只会应用其中一个。

权限

您可以自由将此模组包含在任何整合包中——无论是公开还是私有,任何平台——无需询问。欢迎提供指向本页面的链接,但并非必需。

您不得将此模组本身作为独立项目重新上传。