Skip to content

方块状态

本页面镜像自
BedrockWiki

根据原始项目协议授权。本文经过AI翻译处理,如有内容遗漏,可以提交PR进行补充。

引言

由Bedrock Commands社区Discord提供

方块状态(Block States)或方块属性(Block Properties)是用于定义方块外观或行为的附加数据。例如方块的朝向、颜色、变种、是否充能等特性。

这些数据被广泛应用于多个命令中,包括但不限于:

  • /clone
  • /execute
  • /fill
  • /setblock
  • /testforblock

在基岩版中,我们曾使用辅助值(Aux Values,也称元数据)来定义方块。然而自1.19.70版本起,该机制已被全面弃用,并由方块状态完全取代。

yaml
#辅助值示例:
/setblock ~ ~ ~ wool 1
#等效的方块状态写法:
/setblock ~ ~ ~ wool ["color"="orange"]
  • 使用辅助值的命令方块仍可继续工作,但在更新时需要改用方块状态
  • 同理,在行为包或功能包中使用辅助值的命令,若min_engine_version设置为1.19.63或更低版本仍可正常工作,但若将最低引擎版本更新至1.19.70或更高则必须改用方块状态

方块状态示例与语法

yaml
/setblock ~ ~ ~ wool ["color"="white"]
/setblock ~ ~ ~ wheat ["growth"=0]
/setblock ~ ~ ~ wood ["wood_type"="birch","stripped_bit"=true]
/setblock ~ ~ ~ wool []
  • 方块状态需用方括号 [ ] 包裹
  • 多个状态间用逗号 , 分隔
  • 字符串值需使用双引号包裹,如 "birch""spruce"
  • 整数值 0, 1, 2... 和布尔值 true/false 无需引号
  • 空括号 [] 是有效语法,表示使用默认值0
  • wool 0 对应白色羊毛,因此可简写为 wool [] 替代 wool ["color"="white"]

新手须知

  • 整数(Integer):用于定义数值范围

    • 示例:红石信号强度1-15
    • ["redstone_power"=10]
  • 布尔值(Boolean):表示二值状态(真/假)

    • 是否被激活?是否被按下?是否去皮?
    • ["stripped_bit"=true]
  • 字符串(String):用于多选类型

    • 羊毛颜色?原木种类?
    • ["wood_type"="spruce"]

方块状态列表

完整方块状态清单可访问微软官方文档: https://learn.microsoft.com/en-us/minecraft/creator/reference/content/blockreference/examples/blockstateslist

注意:文档中可能出现连写的状态名称,但在命令中需使用下划线 _ 分隔

示例:buttonPressedBit"button_pressed_bit"

辅助值与方块状态转换

可通过下方表格下载完整转换对照表(由kayla@Mojang提供):

下载表格1

注意:此表格为快速生成版本,布尔值需手动将0改为false1改为true

替代表格(由@ItsRichHeart提供):

下载表格2

也可使用在线查询工具免下载转换

已知问题

使用 /execute/testforblock 检测方块时,必须指定全部或完全不指定方块状态,否则会报错

示例:检测朝上方向被按下的石质按钮:

yaml
#✅ 有效写法:
/execute if block ~~~ stone_button [“button_pressed_bit”=true,”facing_direction”=1] run say success
/execute if block ~~~ stone_button run say success

# ❌ 无效写法:
/execute if block ~~~ stone_button [“button_pressed_bit”=true] run say success
/execute if block ~~~ stone_button [“facing_direction”=1] run say success

虽然方块状态已取代辅助值,但目前仍无法像选择器参数那样进行精确过滤

相关漏洞报告