手册:minecraft:material_instances

From Minecraft基岩版开发Wiki
数据驱动 方块 > minecraft:material_instances
minecraft:material_instances
附加包组件
组件所属
组件类型
加入版本

将模型中的面或渲染应用到方块实际的纹理。

语法[edit]

"minecraft:material_instances": {
  "*": {
    "texture": "<par1>",
    "render_method": "<par2>",
    "face_dimming": <par3>,
    "ambient_occlusion": <par4>
  },
  "<par5>": {
    "texture": "<par1>",
    "render_method": "<par2>",
    "face_dimming": <par3>,
    "ambient_occlusion": <par4>
  },
  "<par6>": "<par5>"
}

结构[edit]

  •  minecraft:material_instances:根对象。
    •  *[注 1]:“*”表示应用到所有未定义面。可改成模型中指定面的名称来应用到这一个或多个指定面;也可以改成游戏内置指定面的名称(up:顶面;down:底面;sides:侧面)。
      •  texture:方块使用的纹理名称。
      •  render_method:定义方块的渲染方法,又称方块渲染图层。可填alpha_testblenddouble_sidedopaque
      •  face_dimming:定义方块是否受光照影响。默认值为true。‌[需要验证]
      •  ambient_occlusion:定义方块面是否为平滑光照。默认值为true。‌[需要验证]
    •  <instance_name>:对象名为模型中自定义面的名称或者游戏内置面的名称。
      • ……
    • ……

  •  minecraft:material_instances:根对象。
    •  *
      • ……
    •  <custom_name>:对象名为一个自定义名称。
      • ……
    • ……
    •  <instance_name>:值为上面的自定义名称。
    • ……

枚举[edit]

方块渲染图层[edit]

方块渲染图层枚举
键名 值(国际版 & 中国版服务端) 值(中国版客户端) 接口字符串 描述
RENDERLAYER_DOUBLE_SIDED 0 0 double_sided 完全禁用背面剔除。
RENDERLAYER_BLEND_WATER 不存在 1
RENDERLAYER_ALPHATEST_MICRO_BLOCK 不存在 2
RENDERLAYER_RAY_TRACED_WATER 1 3 光线追踪状态下的水。
RENDERLAYER_BLEND 2 4 blend 该渲染方式允许有透明像素或半透明像素(略微透明的像素,类似于染色玻璃),且不会启用环境光遮蔽,因此在制作不完整方块时可使用该渲染方式,防止出现丑陋的阴影。(如果存在多方块的半透明图层叠加,则图层错乱,例如:水)
RENDERLAYER_OPAQUE 3 5 opaque 用于渲染没有alpha通道的纹理,不允许有透明像素或半透明像素(会渲染为黑色或TGA基色)。该渲染方式会启用环境光遮蔽,从而在周围或下方形成阴影。比如常规的不透明方块或原版中处于内层的树叶。
RENDERLAYER_OPTIONAL_ALPHATEST 4 6 用于渲染可选透明像素,类似于原版中处于外层的树叶。
RENDERLAYER_ALPHATEST 5 7 alpha_test 该渲染方式仅允许透明像素或不透明像素,不允许半透明像素(类似于未染色的玻璃),且不会启用环境光遮蔽,因此在制作不完整方块时可使用该渲染方式,防止出现丑陋的阴影。
RENDERLAYER_SEASONS_OPAQUE 6 8 该渲染方式用于渲染在雪原的下雪天气下会变白色的不透明像素,类似于原版中可下雪生物群系中处于内层的树叶。
RENDERLAYER_SEASONS_OPTIONAL_ALPHATEST 7 9 该渲染方式用于渲染在雪原的下雪天气下会变白色的可选透明像素,类似于原版中可下雪生物群系中处于外层的树叶。
RENDERLAYER_ALPHATEST_SINGLE_SIDE 8 10
RENDERLAYER_ENDPORTAL 9 11
RENDERLAYER_BARRIER 10 12
RENDERLAYER_LIGHT 11 13
RENDERLAYER_STRUCTURE_VOID 12 14

示例[edit]

  • 分别定义顶面、底面、“example”面(自定义名称为“example”的面)以及剩余其他面的纹理:
"minecraft:material_instances": {
  "*": {
    "texture": "log_side",
    "render_method": "opaque"
  },
  "up": {
    "texture": "log_top",
    "render_method": "opaque"
  },
  "down": {
    "texture": "log_bottom",
    "render_method": "opaque"
  },
  "example": {
    "texture": "test",
    "render_method": "opaque"
  }
}
  • 当有多个面(例如顶面和底面)使用相同纹理时,还可以简写为:
"minecraft:material_instances": {
  "*": {
    "texture": "log_side",
    "render_method": "opaque"
  },
  "example": {
    "texture": "log_top",
    "render_method": "opaque"
  },
  "up": "example",
  "down": "example"
}

历史[edit]

基岩版
1.16.1001.16.100.56加入了minecraft:material_instances
1.19.101.19.10.20更新了文档。

漏洞[edit]

关于“Minecraft:material instances”的漏洞在国际版中由漏洞追踪器维护,请在此报告漏洞。

注释[edit]

  1. 该组件必须包含一个“*”对象。