/clone 克隆方块
将指定区域的方块复制到目标位置,支持遮罩、克隆模式与方块过滤
将一个长方体区域内的方块整体复制到另一个位置,用于批量复制建筑、搬运结构和地图制作。基岩版自 1.16.210 起支持 filtered 过滤模式与方块状态,旧版 tileData 数据值参数已于 1.19.70 移除。
原理
/clone 通过两个对角坐标确定一个长方体源区域,这两个角可以按任意顺序给出,命令会自动把它们归一化为区域的最小角与最大角。目标位置是目标区域的「西北下角」,也就是 x、y、z 三个坐标都取最小值的锚点;游戏把源区域的最小角作为基准,将其中每个方块按其相对基准的偏移量 (dx, dy, dz) 写入目标锚点对应的偏移位置,从而完成一次整体平移复制。复制不会旋转或镜像方块,朝向等信息保持原样。
命令复制的对象是「方块」而非「实体」。每个方块携带的方块状态(如朝向、是否含水、颜色变体)会一并复制;容器(箱子、漏斗、发射器等)的内容物、告示牌文字、命令方块的命令与设置、旗帜图案等方块实体数据也会随方块一起迁移。但玩家、生物、掉落物、经验球等实体不会被移动,克隆只会搬运它们脚下或身处的方块。因此复制一座带箱子和命令方块的建筑,会连内容物与命令一起带走,但站在建筑上的玩家仍留在原地。
当源区域与目标区域发生重叠时,读取和写入会相互干扰。normal 模式会检测到重叠并直接判定失败,避免把已经被覆盖的方块再当作源数据读出来;force 模式则先把整个源区域读入内存形成快照,再一次性写入目标,因此即使重叠也能得到正确结果;move 模式在写入完成后把源区域替换为空气,相当于剪切,且在 filtered 模式下只会清除实际被克隆的方块类型。
引擎对源区域体积设有上限,用于保护内存与性能:基岩版的上限为 655360 个方块(1.18.0 前后由 524288 调整而来),超出上限命令会失败。执行结果方面,基岩版只在成功时返回 1、失败时返回 0,不像 Java 版会返回实际克隆的方块数;这一点会影响连锁命令方块和 /execute if 的条件判断,因为它们只关心命令是否成功。
语法
/clone <起点> <终点> <目标位置> [遮罩模式] [克隆模式]
/clone <起点> <终点> <目标位置> filtered <克隆模式> <方块 ID> [方块状态]
使用 filtered 模式时,基岩版要求按「<克隆模式> 在前、<方块 ID> 在后」的顺序书写,与 Java 版的顺序相反。
参数
<起点>、<终点>— 源区域的两个对角坐标,均为三维坐标(x y z),可为整数、浮点数或~、^相对坐标。两个角可以任意顺序给出。<目标位置>— 目标区域的锚点坐标,即目标区域的西北下角(x、y、z 均取最小值)。源区域以此为基准平移复制。[遮罩模式]— 决定复制哪些方块,可选replace(默认)、masked、filtered。[克隆模式]— 决定源区域与目标区域重叠时的行为,可选normal(默认)、force、move。<方块 ID>— 仅当遮罩模式为filtered时使用,指定只复制的方块类型(如stone、diamond_block)。[方块状态]— 仅当使用filtered时可选,进一步限定方块状态,格式为方括号内的键值对,如["color"="orange"]、["growth"=0]。
遮罩模式
| 模式 | 说明 |
|---|---|
replace | 默认。复制源区域的所有方块(含空气),覆盖目标区域对应位置的全部方块。 |
masked | 只复制非空气方块,目标区域本会被空气覆盖的位置保持原样,适合叠加结构。 |
filtered | 只复制指定的方块类型,可配合方块状态进一步筛选,用于选择性搬运某一种方块。 |
克隆模式
| 模式 | 说明 |
|---|---|
normal | 默认。源区域与目标区域重叠时命令失败。 |
force | 强制克隆,即使源区域与目标区域重叠也执行。 |
move | 复制后将源区域替换为空气,相当于剪切;filtered 模式下只清除被克隆的方块类型。 |
示例
复制当前位置附近的小区域:
/clone ~ ~ ~ ~4 ~4 ~4 100 64 0
把以当前脚下方块为起点、延伸 4 格的 5×5×5 区域,复制到以 (100, 64, 0) 为西北下角的目标区域。
叠加结构而不覆盖目标已有方块:
/clone 0 60 0 10 70 10 50 64 50 masked
只复制源区域内的非空气方块,目标区域本会被空气覆盖的位置保持原样,实现叠加效果。
剪切并搬运一座建筑:
/clone 100 64 100 120 74 120 200 64 200 masked move
把源区域建筑复制到新位置,并把源区域内的非空气方块替换为空气,相当于整体剪切搬运。
只克隆橙色羊毛:
/clone 0 0 0 10 10 10 50 64 50 filtered normal wool ["color"="orange"]
只把源区域内颜色为橙色的羊毛复制到目标区域,其余方块一概不动。
重叠区域强制克隆:
/clone ~ ~ ~ ~5 ~5 ~5 ~3 ~ ~ force
即使源区域与目标区域重叠,也强制把源区域快照写入目标位置,结果不会因重叠而损坏。
基岩版注意
- 需要 OP 等级 1,且需在世界设置中开启作弊(Allow Cheats)。
- 与 Java 版的
filtered参数顺序不同:Java 版为filtered <方块> [force|move|normal],基岩版为filtered <克隆模式> <方块 ID>,书写时不要把两者混用。 - 基岩版支持
filtered过滤模式与方块状态(1.16.210 起),旧文档中「基岩版不支持filtered方块过滤」的说法不准确。 - 旧版
tileData数据值参数已于 1.19.70 移除,请改用方块状态,例如橙色羊毛从wool 1改为wool ["color"="orange"]。 - 基岩版源区域体积上限为 655360 个方块(此前为 524288),并非 Java 版默认的 32768。
- 基岩版成功时返回 1、失败时返回 0,不像 Java 版返回实际克隆的方块数,连锁命令方块会据此判断是否继续执行。
- 基岩版坐标允许浮点数,源区域或目标区域未加载时命令会失败。
常见问题
为什么克隆大型区域会失败?
源区域体积超过 655360 个方块上限,或者源区域、目标区域尚未加载时会失败。可以把区域拆小,或先传送到目标附近让区块加载后再执行。
克隆会带走箱子里的物品吗?
会。容器内容物、告示牌文字、命令方块命令等方块实体数据会随方块一并复制。但玩家、生物、掉落物等实体不会被移动,它们会留在原地。
为什么 normal 模式执行时报错?
当源区域与目标区域重叠时,normal 模式会拒绝执行以保护数据。改用 force 模式,或把目标位置移到不重叠的地方。
怎么只复制某一种方块?
使用 filtered 模式,按「filtered <克隆模式> <方块 ID>」的顺序指定要复制的方块类型,还可以追加方块状态进一步筛选。