森罗万象
教程
OptiFine文档
Blockbench文档
论坛版 (opens new window)
下载示例 (opens new window)
教程
OptiFine文档
Blockbench文档
论坛版 (opens new window)
下载示例 (opens new window)
  • 准备
  • 基础
  • 动态纹理(前篇)
  • 模型和渲染
    • 建模相关教程
    • 阴影
    • 环境光遮蔽
    • 面剔除
    • tintindex
    • 不透明方块
    • 渲染类型
    • 物品展示框——附加模型包
    • 物品标签——添加更多物品
      • damage用法
      • custommodeldata用法
    • 蝶舞——盆栽艺术
  • 额外的资源文件
  • 音效
  • 语言和文字

  • OptiFine与MCPatcher
  • CTM
  • CIT
  • CEM
  • 动态纹理(后篇)
  • 光与色

  • 环境
  • GUI
  • PBR纹理
  • 着色器/光影
  • 附录

# 物品标签——添加更多物品

Minecraft wiki (opens new window)

利用物品标签中的damage或custom_model_data,可以实现原版添加更多物品模型。

custom_model_data标签是1.14加入的,对于1.14之后的版本,建议使用custom_model_data而不是damage。

# damage用法

一个示例:

这里填写的damage的值为0-1之间的浮点数,对应整数类型的损害值Damage,对于有耐久度的物品,损害值为当前已消耗的耐久度。

  • 耐久度为1561时,损害值Damage为0,物品标签damage值为0。
  • 耐久度为0时,损害值为1561,物品标签damage值为1。

diamond_hoe.json

{
    "parent": "item/handheld",
    "textures": {
        "layer0": "item/diamond_hoe"
    },
    "overrides": [
        { "predicate": {"damage": 0}, "model": "item/diamond_hoe"},
        { "predicate": {"damage": 0.0006402048655569782}, "model": "item/jineng/1"},
        { "predicate": {"damage": 0.0012804097311139564}, "model": "item/jineng/2"},
        { "predicate": {"damage": 0.0019206145966709346}, "model": "item/jineng/3"},
        ...
    ]
}

image-20200722140339694

下面分别为Damage为1-9时,钻石锄显示的图案,Unbreakable标签设置为1,用于隐藏耐久度槽:

image-20200722140313561

最令人头大的问题是,damage应该填哪些值,实际上游戏程序会将物品的实际damage值和predicate中给出的damage值作比较,predicate中给出的damage值可以比精确计算值小。这里 (opens new window)有一个工具,可以帮你计算并生成json文件。

# custom_model_data用法

一看名字我们就知道这个标签就是专门为模型准备的,不会和别的功能混到一块。所以在1.14之后的版本,建议用这个。

diamond_hoe.json

{
    "parent": "item/handheld",
    "textures": {
        "layer0": "item/diamond_hoe"
    },
    "overrides": [
        { "predicate": {"custom_model_data": 1}, "model": "item/jineng/1"}
    ]
}

custom_model_data由CustomModelData整数NBT字段直接支持。

image-20200722151801895

image-20200722151851998

← 物品展示框——附加模型包 蝶舞——盆栽艺术 →