方块状态
格式与最低引擎版本 1.21.70
使用方块状态功能时,请确保资源包清单中的min_engine_version为1.20.20或更高版本。
方块状态允许您的方块拥有不同变体,每种变体通过排列组合实现独特的功能和外观。
定义状态
有效的状态值可定义为布尔值、整数或字符串数组,也可通过对象定义为整数范围。值数组中的第一项将作为默认值使用。
每个状态最多可定义16个有效值。对于整数范围状态,这意味着max值不能比min值高出15以上。
该功能自格式版本1.19.70起从实验性玩法Holiday Creator Features中正式发布。
BP/blocks/custom_block.json
json
{
"format_version": "1.21.70",
"minecraft:block": {
"description": {
"identifier": "wiki:custom_block",
"states": {
"wiki:string_state_example": ["红", "绿", "蓝"],
"wiki:boolean_state_example": [false, true],
"wiki:integer_state_example": [1, 2, 3],
"wiki:integer_range_state_example": {
"values": { "min": 0, "max": 5 } // 等同于[0, 1, 2, 3, 4, 5]
}
}
},
"components": { ... },
"permutations": [ ... ]
}
}获取状态值
以下列举了在不同情境下获取方块状态当前值的方法。
Molang查询函数
可通过block_state查询函数获取状态值。
Molang表达式
c
q.block_state('wiki:string_state_example') == 'blue'命令参数
方块状态参数可用于execute和testforblock等命令中,用于检查方块状态值。
命令
c
execute if block ~~~ wiki:custom_block["wiki:string_state_example"="blue", "wiki:integer_state_example"=4] run kill脚本API
通过BlockPermutation.getState()方法可获取不同状态的当前值。
脚本
js
customBlock.permutation.getState("wiki:integer_state_example") === 3;设置状态值
命令参数
方块状态参数可用于setblock和fill等命令中,用于修改状态的默认值。
命令
c
setblock ~~~ wiki:custom_block["wiki:string_state_example"="blue", "wiki:integer_state_example"=4]脚本API
BlockPermutation.withState()方法会返回包含指定状态值的新方块排列。可通过Block.setPermutation()方法将此排列应用于方块,如下所示。
脚本
js
customBlock.setPermutation(customBlock.permutation.withState("wiki:boolean_state_example", false));贡献者
编辑 方块状态本页面上的文本和图像内容根据 知识共享署名 4.0 国际许可协议
本页中的代码示例根据 MIT 许可证

