Skip to content

/setblock 放置方块

在指定坐标放置或替换单个方块,支持方块状态与放置模式

命令
官方•Dingding OvO · 2026-08-12

在指定坐标放置或替换单个方块,是地图搭建与命令方块编程中最基础的方块操作命令。基岩版 1.16.210 起支持方块状态(block states),1.19.70 移除了旧版数据值(tileData)参数,新版应改用命名方块状态。批量放置方块时可配合 /fill 使用。

原理

/setblock 在服务端直接改写世界存档中的方块存储,而不是模拟玩家「放置方块」的动作。命令解析位置参数后,定位到对应区块的方块存储,把目标位置原有的方块整体替换为新的「方块 ID + 方块状态」组合。这个过程不经过玩家放置方块的合法性检查:不需要消耗物品、不受交互距离限制,也不要求目标方块满足任何放置条件,因此你可以凭空放置基岩、命令方块、悬浮的方块,甚至把方块放置在实体当前占据的位置。

命令只在已加载的区块内生效。如果目标坐标位于未加载区块或超出世界边界,命令会执行失败并返回错误。这意味着你用命令方块自动化建造时,需要保证目标区域处于加载状态,例如配合常加载区域或让玩家停留在附近,否则 /setblock 不会产生任何效果。

写入新方块后,游戏会对相邻方块触发方块更新,让红石电路、水流、重力方块等系统做出响应,这也是 /setblock 放置的红石元件能被正常检测、水源会开始流动、沙子会下落的原因。旧方块的处理方式由放置模式决定:默认的 replace 静默覆盖,不产生掉落物、不播放声音;destroy 模拟玩家破坏,掉落旧方块及其内容物并播放破坏音效;keep 只在目标为空气时写入,否则命令失败。

需要留意的是,/setblock 只设置方块本体,不设置方块实体(NBT)数据。因此命令放置的箱子是空的、放置的告示牌没有文字。基岩版没有 Java 版的 /data 命令,无法通过命令直接读写方块 NBT,方块实体数据只能借助附加包等外部手段实现。

语法

新版语法(1.19.70+):

/setblock <位置> <方块> [方块状态] [模式]

旧版语法(1.19.70 以下):

/setblock <位置> <方块> [数据值] [模式]

参数

  • <位置> — 坐标(x y z),指定要放置或替换方块的目标位置。支持绝对坐标(如 100 64 100)、相对坐标(如 ~ ~-1 ~)和局部坐标(如 ^ ^ ^1)。
  • <方块> — 方块 ID(如 stone、diamond_block、torch),指定要放置的方块类型。完整的方块 ID 列表见下方「常用方块 ID」章节。
  • [方块状态] — 方块的命名状态(block states),用 ["键"="值"] 语法指定方块的变体、朝向、颜色等属性。可选,省略时使用该方块的默认状态。详见下方「方块状态」章节。
  • [数据值] — 旧版方块数据值(tileData,整数),用于指定方块变体。已弃用,基岩版 1.19.70 起移除,应改用方块状态。
  • [模式] — 放置模式,可选值 replace / destroy / keep,决定如何处理目标位置原有的方块。可选,默认 replace。详见下方「放置模式」章节。

放置模式

模式说明
replace默认模式。直接覆盖目标方块(包括空气),旧方块不产生掉落物、不播放声音。
destroy先模拟玩家破坏目标方块:旧方块及其内容物掉落为物品,播放破坏音效,再写入新方块。
keep仅当目标位置为空气时写入新方块;若目标已有非空气方块,命令执行失败,不改变任何方块。

方块状态

方块状态(block states,又称方块属性)决定方块的具体外观与行为,例如羊毛的颜色、原木的种类、按钮是否被按下。基岩版 1.19.70 起统一使用命名方块状态取代旧版数据值。方块状态写在方括号内,格式为 ["键"="值"],多个状态用逗号分隔。字符串值需要用引号包裹,整数和布尔值(true / false)不加引号。状态名在较新版本中可省略 minecraft: 命名空间前缀。

几个典型示例:

  • ["color"="orange"] — 橙色羊毛
  • ["wood_type"="birch"] — 白桦原木
  • ["button_pressed_bit"=false,"facing_direction"=1] — 未按下、朝向为 1 的按钮

每个方块必须列出它所需的全部状态,或完全省略方括号;只列出一部分状态可能导致命令失败。省略方括号或写 [] 时使用方块的默认状态。

常用方块 ID

方块ID
空气air
石头stone
基岩bedrock
钻石块diamond_block
金块gold_block
铁块iron_block
草方块grass
玻璃glass
火把torch
水water
岩浆lava
命令方块command_block
重复命令方块repeating_command_block
连锁命令方块chain_command_block
红石块redstone_block
TNTtnt

完整的方块 ID 列表可在游戏内命令自动补全中查看,或查阅 Minecraft Wiki (在新标签页中打开)。

示例

在脚下放置一块石头: /setblock ~ ~-1 ~ stone 把脚下那格替换为石头。相对坐标 ~ ~-1 ~ 表示以执行者位置为原点、向下偏移一格。

在指定坐标放置钻石块: /setblock 100 64 100 diamond_block 在世界坐标 (100, 64, 100) 处放置一个钻石块,静默覆盖该位置原有的任何方块。

破坏头顶方块并保留掉落物: /setblock ~ ~1 ~ air destroy 用 destroy 模式把头顶的方块替换为空气,原方块会像被玩家挖掘一样掉落为物品并播放破坏音效。air 与 destroy 组合常用于清除方块同时保留掉落物。

只在空气位置放置玻璃: /setblock ~ ~ ~ glass keep 用 keep 模式在你所在位置放置玻璃。仅当该位置为空气时才会写入,若已有方块则命令失败,避免误覆盖已有建筑。

放置指定颜色的羊毛: /setblock ~ ~ ~ wool ["color"="orange"] 在你所在位置放置一块橙色羊毛。方块状态 ["color"="orange"] 指定羊毛颜色,省略时默认放置白色羊毛。

放置去皮白桦原木: /setblock ~ ~1 ~ wood ["wood_type"="birch","stripped_bit"=true] 在头顶放置一根去皮白桦原木。这里同时指定两个方块状态:wood_type 决定木头种类,stripped_bit 决定是否去皮。

基岩版注意

  • 需要 OP 等级 1,且世界需开启「允许作弊」。
  • 默认 replace 模式会静默覆盖任何方块(包括空气),不产生掉落物、不播放声音。
  • destroy 模式会模拟玩家挖掘:旧方块掉落为物品并播放破坏音效,配合 air 可清除方块并保留掉落物。
  • keep 模式只在目标为空气时生效,目标已有方块时命令失败且不改变任何方块。
  • 与 Java 版差异:Java 版把方块状态内联在方块 ID 中(如 chest[facing=east]),基岩版则使用独立的方块状态参数 ["键"="值"];Java 版需要 OP 等级 2,基岩版为 1;Java 版 1.21.5+ 新增的 strict 模式在基岩版中不存在。
  • 版本兼容:方块状态在 1.16.210 加入,旧版数据值(tileData)在 1.19.70 移除,旧版附加包或地图迁移时需改用命名方块状态。
  • 命令只设置方块本体,不设置方块实体数据,因此放置的箱子、漏斗等容器内容为空,告示牌无文字。
  • 目标位置必须在已加载区块内,否则命令失败;自动化建造需配合常加载区域。
  • 基岩版没有 Java 版的 /data 命令,无法通过命令直接读写方块 NBT 数据。

常见问题

为什么 /setblock 有时执行失败?

常见原因有三种:目标坐标位于未加载区块或超出世界边界;keep 模式遇到非空气方块;方块状态只列出一部分。你可以在聊天栏查看命令输出的错误提示,定位具体原因。

destroy 和 replace 有什么区别?

destroy 会像玩家挖掘一样掉落旧方块及其内容物并播放破坏音效;replace 静默覆盖旧方块,不产生任何掉落物和声音。清除方块又想保留掉落物时用 destroy,纯粹覆盖时用 replace(默认)。

如何放置有颜色或朝向的方块?

使用方块状态参数,例如橙色羊毛写 ["color"="orange"],朝东的箱子写 ["minecraft:cardinal_direction"="east"]。省略方块状态则使用默认值。

相关命令

  • /fill — 批量填充一个区域的方块
  • /clone — 复制区域方块到另一位置
  • /execute — 配合条件判断在特定位置放置方块