面数据

面数据

在原版 elements 模型中,可在元素级或面级指定有关元素面的附加数据。未指定自身面数据的面会回退到元素级面数据;如果元素也未指定,则使用默认值。

对于生成的物品模型,必须使用 forge:item_layers 模型加载器才能使用此扩展,因为原版物品模型生成器未扩展为读取这些数据。所有面数据值都是可选的。

元素模型

在原版 elements 模型中,面数据应用于指定它的面,或元素中没有自身面数据的所有面。

注意:如果面上指定了 forge_data,它不会继承元素级 forge_data 的任何参数。

以下示例展示两种指定方式:

以下带注释的示例用于说明结构;实际 JSON 文件不支持注释和省略号,应移除并补全。

{
  "elements": [
    {
      "forge_data": {
        "color": "0xFFFF0000",
        "block_light": 15,
        "sky_light": 15,
        "ambient_occlusion": false
      },
      "faces": {
        "north": {
          "forge_data": {
            "color": "0xFFFF0000",
            "block_light": 15,
            "sky_light": 15,
            "ambient_occlusion": false
          },
          // ...
        },
        // ...
      },
      // ...
    }
  ]
}

生成的物品模型

使用 forge:item_layers 加载器生成的物品模型按纹理层指定面数据,应用于所有几何体,包括前后四边形和边缘四边形。forge_data 必须位于模型 JSON 顶层,每个键值对将面数据对象关联到层索引。

以下示例中,第 1 层会染成红色并以最大亮度发光:

{
  "textures": {
    "layer0": "minecraft:item/stick",
    "layer1": "minecraft:item/glowstone_dust"
  },
  "forge_data": {
    "1": {
      "color": "0xFFFF0000",
      "block_light": 15,
      "sky_light": 15,
      "ambient_occlusion": false
    }
  }
}

参数

颜色

通过 color 指定颜色会将其作为色调应用于四边形。默认 0xFFFFFFFF(白色、完全不透明)。颜色必须是打包为 32 位整数的 ARGB 格式,可写为十六进制字符串 "0xAARRGGBB" 或十进制整数字面量(JSON 不支持十六进制整数字面量)。

警告:四个颜色分量与纹理像素相乘。省略 alpha 分量相当于将其设为 0,几何体会完全透明。

颜色恒定时,可用此方式代替 BlockColor 和 ItemColor 着色。

方块光和天空光

使用 block_light 和 sky_light 分别覆盖四边形的相应光照值。两者默认均为 0,取值为 0–15(含两端),渲染面时作为相应光照类型的最小值;世界中更高的相应光照值会覆盖指定值。

这些光照值仅影响客户端,不影响服务器光照等级或周围方块的亮度。

环境光遮蔽

ambient_occlusion 标志为四边形配置环境光遮蔽(AO),默认 true。其行为等同于原版格式顶层的 ambientocclusion 标志。

平滑光照下,左侧启用环境光遮蔽,右侧禁用

图片来源:Forge 官方文档。

注意:若顶层 AO 标志为 false,元素或面上设为 true 也无法覆盖顶层标志。

{
  "ambientocclusion": false,
  "elements": [
    {
      "forge_data": {
        "ambient_occlusion": true // 无效
      }
    }
  ]
}

原文:Face Data。