ORM - OverrideResourceManager

ORM - OverrideResourceManager

一款Minecraft Fabric 1.21.4模组,无需资源包即可在运行时覆盖物品纹理和3D模型。支持CustomModelData、NBT、动画纹理、Blockbench模型,并通过F3+T进行热重载。

装饰

ORM - OverrideResourceManager

一个客户端 Fabric 模组,适用于 Minecraft 1.21.4,允许您在运行时替换物品纹理和模型——无需资源包。覆盖配置存放在 config/orm/ 下的普通文件中,并会随资源堆栈(F3+T)一同重载。


功能特性

功能 描述
纹理覆盖 用来自 config/orm/textures/ 的任意 .png 文件替换原版物品纹理
3D 模型覆盖 用来自 config/orm/models/ 的 Blockbench 导出的 .json 文件替换物品模型
动画纹理 在纹理旁边放置 .png.mcmeta 文件即可获得 MC 标准帧动画
按实例匹配 按物品名称、CustomModelData 或 NBT 匹配——同类型的不同物品可拥有不同的覆盖
优先级系统 更具体的条目优先:物品 < 物品+名称 < 物品+自定义模型数据 < 物品+自定义模型数据+NBT
快速添加快捷键 在任何物品栏界面中键点击物品即可自动生成其配置条目

安装方法

  1. 为 Minecraft 1.21.4 安装 Fabric LoaderFabric API
  2. 将 ORM .jar 文件放入您的 mods/ 文件夹。
  3. 启动游戏——config/orm/ 目录会自动创建。

文件结构

config/orm/
├── overrides.json            ← 主配置文件(覆盖条目列表)
├── models/
│   └── <name>.json           ← 自定义 Blockbench/JSON 模型
└── textures/
    └── item/
        └── <name>.png        ← 纹理文件(+ 可选的 .png.mcmeta 动画文件)

模型和纹理在 overrides.json 中使用 orm: 命名空间引用:

  • "model": "orm:sword"config/orm/models/sword.json
  • "texture": "orm:item/texture2d/apple"config/orm/textures/item/texture2d/apple.png

子目录完全支持,且其结构会被保留:

config/orm/textures/item/sword/anim/animation.png
  → orm:item/sword/anim/animation

overrides.json 参考文档

每个条目是一个 JSON 对象。字段如下:

字段 类型 必填 描述
item 字符串 Minecraft 物品 ID,例如 "minecraft:netherite_sword"
name 字符串 按精确显示名称匹配
customModelData 整数 按 CustomModelData 值匹配
nbtCondition 对象 按 NBT 键/值对匹配
texture 字符串 纹理覆盖路径:"orm:<路径>"
model 字符串 模型覆盖 ID:"orm:<名称>"
target 字符串 显式目标纹理 ID,来自模组物品模型

texturemodel 至少需要设置其中一个。


使用示例

以下示例取自一个实际可用的配置。它用自定义暗黑风格 3D 模型(每个模型带有一层动画纹理)覆盖了两件工具,并用平面 2D 纹理替换了金苹果。

config/orm/overrides.json

[
  {
    "item": "minecraft:netherite_sword",
    "name": "Netherite Sword",
    "model": "orm:sword"
  },
  {
    "item": "minecraft:netherite_pickaxe",
    "name": "Netherite Pickaxe",
    "model": "orm:pickaxe"
  },
  {
    "item": "minecraft:golden_apple",
    "name": "Golden Apple",
    "texture": "orm:item/texture2d/apple"
  }
]

上述示例对应的文件结构

config/orm/
├── overrides.json
├── models/
│   ├── sword.json
│   └── pickaxe.json
└── textures/
    └── item/
        ├── sword/
        │   ├── diablo_texture.png       ← 静态基础纹理
        │   └── anim/
        │       ├── animation.png        ← 动画叠加帧
        │       └── animation.png.mcmeta ← 帧时序
        ├── pickaxe/
        │   ├── diablo_texture.png
        │   └── anim/
        │       ├── animation.png
        │       └── animation.png.mcmeta
        └── texture2d/
            └── apple.png               ← 平面 2D 替换纹理

每个条目如何工作

下界合金剑/镐"model": "orm:sword" 加载 models/sword.json。该模型自身引用两层纹理:

  • orm:item/sword/diablo_texture — 一张静态的 128×128 精细纹理
  • orm:item/sword/anim/animation — 由 animation.png.mcmeta 驱动的动画叠加层

两者都通过显示名称("name": "Netherite Sword")匹配,因此只有名称完全一致的物品才会受到影响。若在铁砧中将物品重命名为其他名称,原版模型便会恢复。

金苹果"texture": "orm:item/texture2d/apple" 全局替换了原版 golden_apple.png(无名称筛选),因此世界中所有金苹果都会使用 textures/item/texture2d/apple.png

动画纹理 .mcmeta 格式

{
  "animation": {
    "frametime": 3,
    "frames": [0, 1, 2, 3]
  }
}

.mcmeta 文件放置在与 .png 文件相同的位置,并命名相同,再加上 .mcmeta 后缀即可。


快捷键:快速添加

打开任意物品栏界面,然后中键点击一个物品槽位。ORM 会读取物品的 ID、显示名称和 CustomModelData,在 overrides.json 中追加一个新条目,并输出聊天确认信息。生成的条目使用 texture 字段,路径由物品 ID 推导而来——请用您的实际文件替换占位纹理值。

默认快捷键:鼠标中键(可在 控制 → 覆盖资源管理器 下重新绑定)。


重载

F3+T 可重载资源包。ORM 会重新读取 overrides.json,重新扫描 models/textures/,并重建覆盖注册表,无需重启游戏。


环境要求

  • Minecraft 1.21.4
  • Fabric Loader 0.19.2 及以上版本
  • Fabric API 0.119.4+1.21.4