/fill 填充方块
用指定方块批量填充矩形区域,支持替换、破坏、中空、保留等模式与方块状态筛选
用指定方块批量填充一个矩形区域,是建筑与地图制作中最常用的命令之一。基岩版 1.19.70 起移除了旧版数据值参数,方块变体改用方块状态指定。
原理
/fill 不经过玩家放置方块的流程,而是直接对世界里的方块存储做批量写入。命令执行时,游戏先根据起点与终点求出一个轴对齐的矩形包围盒:两个角的每一维坐标分别取最小值和最大值,因此起点与终点的先后顺序无关紧要。随后游戏逐格遍历包围盒内的所有坐标,把每个位置的方块状态整体替换为目标方块状态。由于这一步在一次命令调用内完成,填充上万方块的速度远快于手工建造,但改写过程仍会触发方块更新和光照重算。
「处理模式」参数决定这次写入的具体规则。replace 与 keep 通过过滤条件决定哪些格子被改写,hollow 与 outline 只命中包围盒最外层的壳,destroy 则在替换的同时把被替换方块及其内容物生成为掉落物,效果相当于用未附魔的钻石工具挖掘这些方块。destroy 会为每个被替换方块生成一个掉落物实体,所以大范围使用会瞬间产生海量实体,这是它最容易造成卡顿的原因。
带有额外数据的方块(方块实体,如箱子、命令方块、告示牌)在填充时被特殊处理。它们保存的内容物或文字随方块一起被清除:replace 模式直接丢弃这些数据,不产生掉落;destroy 模式会把内容物掉落;hollow 模式只掉落内部方块的内容物,方块本身不掉落。因此用 /fill ... air replace 清空区域时,箱子里原有的物品不会掉落,而是永久消失。
填充还受到两个硬性约束。单次 /fill 最多处理 32768 个方块,包围盒体积超过该上限时命令直接失败。同时,起点与终点都必须落在已加载的区块内——在基岩版中,范围一旦超出模拟距离或常加载区域,命令会失败并提示无法在世界外放置方块。
语法
基础语法:
/fill <起点: x y z> <终点: x y z> <方块: 方块ID> [处理模式]
/fill <起点: x y z> <终点: x y z> <方块: 方块ID> <方块状态: block states> [处理模式]
替换过滤语法(replace):
/fill <起点: x y z> <终点: x y z> <方块: 方块ID> replace [被替换方块: 方块ID] [被替换方块状态: block states]
/fill <起点: x y z> <终点: x y z> <方块: 方块ID> <方块状态: block states> replace [被替换方块: 方块ID] [被替换方块状态: block states]
旧版语法(1.19.70 以下):
/fill <起点: x y z> <终点: x y z> <方块: 方块ID> [数据值: int] [处理模式]
参数
<起点: x y z>— 三维坐标,指定矩形区域的一个角。支持绝对坐标与相对坐标(~)、局部坐标(^)。与终点各取包围盒的一个对角,顺序可以互换。<终点: x y z>— 三维坐标,指定矩形区域的另一个角。游戏会在这两个角之间求出包围盒,每维取较小值为最小值。<方块: 方块ID>— 要填充的方块 ID,如stone、air、glass。可省略minecraft:命名空间前缀,也可写成minecraft:stone的完整形式。[处理模式]— 如何处理区域内的旧方块,可选值见「填充模式」章节。默认值为replace。<方块状态: block states>— 用方块状态指定方块的变体(如原木的树种、羊毛的颜色),语法为["状态名"=值]。省略时使用方块的默认状态,详见「方块状态」章节。[被替换方块: 方块ID]— 仅replace模式下可选。指定后只替换该种方块,其他方块保持原样。[被替换方块状态: block states]— 配合[被替换方块]使用,进一步限定被替换方块的具体状态。[数据值: int]— 旧版(1.19.70 以下)的方块数据值,用于指定方块变体,已弃用。新版本应改用方块状态。
填充模式
| 模式 | 说明 |
|---|---|
replace | 默认模式。替换区域内所有方块(包括空气),不掉落任何方块或内容物。可配合 [被替换方块] 只替换指定方块。 |
destroy | 替换区域内所有方块,被替换方块及其内容物作为掉落物生成,效果相当于用未附魔的钻石工具挖掘。只能用剪刀采集的方块(如藤蔓)和液体不掉落。 |
hollow | 只替换包围盒最外层的壳,内部方块改为空气。内部方块的内容物会掉落,方块本身不掉落。若区域在某一维度小于 3 个方块(没有内部空间),则等同于 replace。 |
keep | 只替换区域内的空气方块,已有方块保持不变,适合修补缺口。 |
outline | 只替换包围盒最外层的壳,内部方块完全不受影响。若区域在某一维度小于 3 个方块,则等同于 replace。 |
hollow 与 outline 的关键区别:hollow 会把内部掏空为空气,outline 只搭外壳、内部原封不动。
方块状态
方块状态是描述方块外观或行为的一组属性,例如原木的树种、羊毛的颜色、按钮的朝向。基岩版 1.16.210 起支持在命令中用方块状态指定变体,1.19.70 起移除了旧的数据值参数,此后必须使用方块状态。
方块状态写在方括号内,使用 "键"=值 的格式。字符串值需要加引号(如 "birch"、"orange"),整数和布尔值不加引号(如 0、true),多个状态之间用逗号分隔。省略方括号或写空括号 [] 时使用该方块的默认状态。
示例
放置橙色羊毛
/setblock ~ ~ ~ wool ["color"="orange"]
放置白桦去皮原木
/setblock ~ ~ ~ wood ["wood_type"="birch","stripped_bit"=true]
方块状态的键名必须使用下划线命名(如 wood_type),且需要写全该方块要求的状态,缺失时命令会失败。
示例
铺一块石头地板:
/fill ~-5 ~-1 ~-5 ~5 ~-1 ~5 stone
在脚下生成一块 11×11 的石头地板,区域内原有方块全部被替换为石头。
清空一片区域:
/fill 0 64 0 15 70 15 air
把 (0,64,0) 到 (15,70,15) 的 16×7×16 区域全部替换为空气,快速挖空空间。区域内的箱子物品等内容物不会掉落,会直接消失。
建造中空的玻璃房间:
/fill ~ ~ ~ ~10 ~10 ~10 glass hollow
生成一个 11×11×11 的玻璃外壳,内部方块被替换为空气,适合做竞技场或房间。内部方块的内容物(如箱子物品)会掉落,但方块本身不会掉落。
修补缺失的方块:
/fill ~ ~ ~ ~5 ~5 ~5 stone keep
只把区域内是空气的位置填成石头,已有方块不受影响,适合修补破损的墙壁或地面。
只拆除一种方块:
/fill ~ ~ ~ ~10 ~ ~10 air replace stone
把区域内所有石头替换为空气,其他方块保持原样,适合精准拆除石头结构。
带方块状态的填充:
/fill ~1 ~ ~ ~5 ~3 ~5 wood ["wood_type"="birch"]
填充一个 5×3×5 的白桦木原木区域。["wood_type"="birch"] 指定了原木的树种变体,适用于 1.19.70 及以上的版本。
破坏模式批量收集方块:
/fill 0 60 0 20 80 20 stone destroy
替换 21×21×21 的区域,原方块和内容物会掉落为物品。范围较大时掉落物可能极多,容易造成卡顿,使用前建议先备份存档。
基岩版注意
- 需要 OP 等级 1。
- 单次填充最多 32768 个方块,超出上限命令会失败。Java 版 1.19.4+ 已改用
commandModificationBlockLimit游戏规则控制该上限(1.21.11 起更名为max_block_modifications),基岩版仍为固定值。 - 与 Java 版不同,基岩版没有
strict模式(Java 版 1.21.5+ 新增,可关闭方块更新)。 - 基岩版支持
outline模式,它与hollow的区别在于内部方块不受影响,而hollow会把内部改为空气。 - 1.19.70 起移除了
tileData(数据值)参数,方块变体需改用方块状态(["键"=值])指定,旧版本仍可使用数据值。 - 填充范围必须落在已加载的区块内,起点或终点超出模拟距离或常加载区域会导致命令失败。
destroy模式在大范围使用时会产生大量掉落物,可能造成严重卡顿。
常见问题
为什么用 `/fill ... air` 清空后,箱子里的物品不见了?
replace 模式(默认)不会掉落方块实体保存的内容物。箱子、命令方块、告示牌等方块被替换时,它们内部的数据会直接清除,不会以掉落物形式返还。
`hollow` 和 `outline` 有什么区别?
两者都只替换包围盒最外层的壳,但 hollow 会把内部方块改为空气,outline 则让内部方块保持原样。想连内部一起掏空用 hollow,只想搭一个外壳用 outline。
为什么我的 `/fill` 命令报错或没有反应?
常见原因有三种:包围盒体积超过 32768 个方块的上限、区域超出已加载区块或模拟距离、方块 ID 或方块状态写法不正确。可以先缩小范围,或确认方块 ID 与状态键名拼写无误。
还能用数据值指定方块变体吗?
1.19.70 及以上版本已移除数据值参数,需要改用方块状态。旧版本仍可使用数据值,例如 stone 1 表示花岗岩。