面数据
在原版 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。