本帖最后由 Dahesor 于 2023-1-1 12:11 编辑

☆【命令】命令教程"真"从零开始(十六)☆
☆复制一片区域:复制命令/clone☆


声明:
1. 本系列教程默认读者拥有关于Minecraft游戏本身的基础了解。
2. 本系列全部教程绝对适用于当前Java最新版 (1.19.3)
3. 本系列教程致力于基础原理而非使用方法,因为某些原因,这是本声明里最重要的一条。
4. 本教程 需要读者有特定的命令知识。这些这些内容在 下方表格中列出

<<<<<< 返回系列目录 ←←

需要前置知识:
请确保你理解下列的内容。下表的所有内容一定在本系列教程的某一帖讨论过,所以若您是从本系列第一帖起阅读至今,可以不用看。
对于跳跃式阅读的读者,还请检查一番:






本帖使用了较多的图片与GIF,可能加载较慢

前言


在上一帖我们讲过了填充命令/fill,这个神奇命令可以把一个区域替换为一种方块……

但今天的命令更加的神奇,它,/clone,可以把一片区域复制到另一个地方去。你可以用本命令生成重复的结构,或者用作某种技术性 . 手段。
但如果你想用/clone命令来帮助你建造的话……这个指令连旋转的能力都没有。相信我,你所需要的不是本命令,而是一个叫做WorldEdit的可以帮助建筑师的模组。

那,我们开始吧


1. 命令/clone的基础逻辑


在阅读接下来的内容之前,我强烈建议您先阅读 上一帖 的/fill命令。
如果你已经读过,下面的内容会很好理解。



复制命令clone的格式与上一帖讲的fill命令有很大的相似之处。
格式:
  1. /clone <坐标点1> <坐标点2> <目的地坐标> [<遮罩模式>] [<复制模式>]
复制代码


在上面的格式中,“<坐标点1>”与“<坐标点2>”一起指定了命令复制的范围。(即复制的来源)。而“<目的地坐标>”则指定了“要复制到哪里去”。

后面的<遮罩模式>和<复制模式>都是关于本命令的一些选项。这两个是选填的,我们先略过。
这三个“坐标点”每一个都是由3个数字组成的坐标,所以把本命令展开就是这样的:

  1. /clone <x> <y> <z> <dx> <dy> <dz> <x2> <y2> <z2> [<遮罩模式>] [<复制模式>]
复制代码

让我们先看想前两个参数“坐标点1”和“坐标点2”。
这两个参数指定了被复制的长方体区域。
那么是如何使用两个坐标来指定一个长方体区域呢?

我们有在上一帖提到过,填充命令/fill的基础逻辑是,选择两个点,其对角线所属的长方体就是命令选中的范围。
而clone与其一致


为了回忆一下,让我们把上一帖的图片再贴出来:



图中,黄色方块与钻石块就是我们选中的两个坐标。红色玻璃就是它们的对角线,而绿色玻璃就是它们选中的区域。
不过fill到这里就结束了,它会把这片被两个坐标指定的目标区域替换为一种方块。
但clone还没有结束,当描述了“目标区域”,即“被复制的区域后”,还需要指定另一个坐标,来告诉游戏“复制的目的地”,即“复制到哪里去”。
所以我们需要第三个坐标。来指定目的地。

那么,一条简单的clone命令就可以被写出来了:

/clone ~ ~ ~ ~8 ~8 ~8 100 30 100

将位于(~ ~ ~)与(~8 ~8 ~8)之间的区域复制到(100 10 100)
(~ ~ ~)与(~8 ~8 ~8)指明了被复制的区域是一个8*8*8的正方体,而复制目的地是坐标(100, 10, 100)。
为了方面您阅读,我使用了相对坐标“~”,且三个坐标用不同的颜色标出,这些颜色仅仅是为了方便阅读,与指令本身无关。
使用时您应自行调整数值,而不是照抄上面的波浪线。(除非这就是你想要的?)本命令3种坐标都是支持的。
(如果你不太了解坐标的内容,请去看 本系列第2帖


——但是你可能发现了一个问题。

嘶~我们用了两个坐标来指定被复制的区域,但却只用了一个坐标来确定目的地。
但是我们复制的是一个区域,而不是一个方块啊。
这个“目的地坐标”只用一个坐标,只能表达一个位置,那么这个“目的地坐标”是目的地的哪里?
中间?左下角?右下角?


答案是……目标区域会出现在目的地坐标的正x与正z方向。
换句话说,目的地坐标是目标区域的西北角

在上面的例子中,那个被复制到(100 10 100)的8*8*8的正方体会出现在(100, 10, 100)与(108, 18, 108)的位置。
这样,你明白了吧


最后做提醒的是,本命令适用于方块状态与NBT


2.模式

在上面,我们已经讲了clone的基础逻辑。
但是,就像命令/setblock与/clone一样,/clone也可以选择 模式 ,或者叫“ 命令选项 ”。

格式:

  1. /clone <坐标点1> <坐标点2> <目的地坐标> [<遮罩模式>] [<复制模式>]
复制代码


所谓的模式就是后面的[< 遮罩模式 >]与[< 复制模式 >],两个选项。
这些选项会为命令提供额外的功能。

遮罩模式 有三种, replace(替换模式) masked(叠加模式) ,与 filtered(过滤模式)

复制模式 也有3种, force(强制模式) move(移动模式) ,与 normal(无特殊模式)

所以,展开本命令,就是:

  1. /clone <坐标点1> <坐标点2> <目的地坐标> [replace|masked|filtered <过滤方块>] [force|move|normal]
复制代码



哇,看起来有一点复杂,上面的说明你也可能有点糊涂,
但没关系,让我们一个个看过去。


2.1 遮罩模式

我们先看向“遮罩模式”



masked(叠加模式)

我们要注意的是,/clone命令会复制选中区域的一切方块,包括空气。
所以当我们要进行一些特殊操作时,就会遇到麻烦,比如,当你想要把一个圆球塞进一堆石头,但是又不想要弄出一堆“缝隙”的时候。

这时,masked模式就派上用场了。
本模式只会复制非空气方块。

比如执行命令:

/clone ~ ~ ~ ~8 ~8 ~8 100 30 100 masked


我们要将左侧的结构复制到右侧,但是你可以注意到,空气并没有被复制,所以我们得到的是一个包在玻璃里的结构,而不是一个和左侧一模一样的物体。





replace(替换模式)


我们已经看过了 maked,叠加模式 ,那么 replace(替换模式) 就很好理解了。
masked只会复制非空气方块,而replace则会复制所有方块。

比如:


/clone ~ ~ ~ ~8 ~8 ~8 100 30 100 replace




你会发现整个目标区域都被覆盖为了来源区域,那些玻璃都被空气替换,而不是像masked模式下,保留了非空气区域。

replace也是默认的模式,如果不填写模式,那么模式默认为replace。


/clone ~ ~ ~ ~8 ~8 ~8 100 30 100

这条命令没有填写replace,但与上一条命令效果一致。



filtered(过滤模式)


除了简单的是否过滤空气以外, filtered(过滤模式) 为我们提供了更进阶的选择。
在本模式下,你可以选择在指定区域中只复制一种方块到目标区域。
它的格式是,在filterted后加上要复制的方块id。

如:


/clone ~ ~ ~ ~8 ~8 ~8 100 30 100 filtered oak_planks

oak_planks 是橡木木板的意思,所以本命令只会复制指定区域的橡木木板,而不复制其他内容:




注意只有橡木模板被复制了,其他的内容包括空气并没有被复制,所以整个玻璃块被保留,而不是像replace模式的例子中那样消失。


涉及较高级内容?可跳过




2.2 复制模式

看完了遮罩模式后,再让我们转向另一个选项

注意/clone命令是有两个选项的,一个是遮罩选项,一个是复制选项。
遮罩选项可以选择的3中模式上面刚刚讲了,下面的是复制选系。该选项应该填写在遮罩选项之后。


force(强制模式)


/clone命令有一个有点奇怪的规则,就是选中的区域和目标区域不能重叠,否则复制失败。

但是如果你非要在选中区域A和目标区域B重叠的情况下复制呢?
难道要先把A复制到离这里很远的C,然后再搬**么?

不用,我们可以使用force模式,该模式会无视重叠强制复制内容:
比如:

/clone ~ ~ ~ ~8 ~8 ~8 100 30 100 replace force

注意上面的replace是遮罩选项,上面的讲的。它后面接的force才是主角。

本命令执行后,如果原区域和目标区域没重叠,那么force填不填没有差别,但是若两者重叠,那么如果不填force就无法成功复制区域。


move(移动模式)

本模式是“移动模式”,简单来讲就是在复制后将原来的区域删除。

比如:


本命令将选择区域移动到目标区域:
/clone ~ ~ ~ ~8 ~8 ~8 100 30 100 replace move




注意,目标区域被原来的结构覆盖了,但是原来的区域被替换为空气。


复制选项与遮罩选项是可以搭配使用,当我使用过滤模式+移动模式时:

/clone ~ ~ ~ ~8 ~8 ~8 100 30 100 filtered oak_planks move

上面的命令指定只复制橡木木板,且为移动模式:




注意这时,只有橡木木板被复制了过去,而原位置上也只有橡木木板消失了,其他的方块没有像在上一个例子那样一起消失。这就是过滤模式与移动模式的搭配。

normal(无特殊模式)

normal你知道是啥意思不,是“普通”的意思。本模式就是不执行任何特殊的选项。
这是默认的模式,所以如果你不填入本模式,模式默认为normal:

下面3条命令的效果 一致


/clone ~ ~ ~ ~8 ~8 ~8 100 30 100 replace normal
/clone ~ ~ ~ ~8 ~8 ~8 100 30 100 replace
/clone ~ ~ ~ ~8 ~8 ~8 100 30 100

都只是最最普通的复制:








那,这就是关于/clone的全部内容了。

——这里是鸽了一个月的Dahesor。
鸽当然是有原因的,但也别问,因为一个鸽子想鸽的话理由就多的是。

下一帖的内容是Json文本,因为我想要把这个重要的东西写得好一点,所以要发出来也要一会。不过这次嘛,我发的越慢,证明我就写得更好。因为我绝对会努力写写写,而不是半道去刷b站。
真的。

附录,注释,与外部链接



#更新日志

Java 1.17.1/a  页面发布
Java 1.17.1/b  修改了一些可能刺眼的背景色,重新获得了5金粒。

Java 1.18/a 1.18版本升级完成

Java 1.19.3/a 1.19升级完成








2021.12 数据,可能有更多内容 ☆【命令】命令教程&quot;真&quot;从零开始(十六)☆ ☆复制一片区域:复制命令/clone☆


声明:
1. 本系列教程默认读者拥有关于Minecraft游戏本身的基础了解。
2. 本系列全部教程绝对适用于当前Java最新版 (1.17)
3. 本系列教程致力于基础原理而非使用方法,因为某些原因,这是本声明里最重要的一条。
4. 本教程 需要读者有特定的命令知识。这些这些内容在 下方表格中列出


需要前置知识:
请确保你理解下列的内容。下表的所有内容一定在本系列教程的某一帖讨论过,所以若您是从本系列第一帖起阅读至今,可以不用看。
对于跳跃式阅读的读者,还请检查一番:


带有本符号的内容是阅读本帖的大前提,您必须理解。
带有本符号的内容意味着,若您不清楚可能会对阅读本帖的特定片段造成困扰,但大体上可以理解。
点击链接可以跳转至对应教程:


有关命令基础格式 【命令】命令教程“真”从零开始 (一) 指令本身,选择器,与命令方块
有关坐标相对坐标,局部坐标 【命令】命令教程“真”从零开始 (二) 命令tp与相对,局部坐标与朝向锚
有关区块加载 【命令】命令教程“真”从零开始 (八) 区块与强制加载命令/forceload
有关/setblock与方块状态 【命令】命令教程“真”从零开始 (十) 简单,又新手(雾)的方块指令/setblock 有关填充命令/fill 【命令】命令教程“真”从零开始(十五)最接近神的一次:填充命令/fill






本帖使用了较多的图片与GIF,可能加载较慢
前言


在上一帖我们讲过了填充命令/fill,这个神奇命令可以把一个区域替换为一种方块……


但今天的命令更加的神奇,它,/clone,可以把一片区域复制到另一个地方去。你可以用本命令生成重复的结构,或者用作某种技术性.手段。
但如果你想用/clone命令来帮助你建造的话……这个指令连旋转的能力都没有。相信我,你所需要的不是本命令,而是一个叫做WorldEdit的可以帮助建筑师的模组。


那,我们开始吧


1. 命令/clone的基础逻辑


在阅读接下来的内容之前,我强烈建议您先阅读 上一帖 的/fill命令。   如果你已经读过,下面的内容会很好理解。


复制命令clone的格式与上一帖讲的fill命令有很大的相似之处。
格式:

代码:

  1. /clone <坐标点1> <坐标点2> <目的地坐标> [<遮罩模式>] [<复制模式>]



在上面的格式中,“&lt;坐标点1&gt;”与“&lt;坐标点2&gt;”一起指定了命令复制的范围。(即复制的来源)。而“&lt;目的地坐标&gt;”则指定了“要复制到哪里去”。


后面的&lt;遮罩模式&gt;和&lt;复制模式&gt;都是关于本命令的一些选项。这两个是选填的,我们先略过。
这三个“坐标点”每一个都是由3个数字组成的坐标,所以把本命令展开就是这样的:


代码:

  1. /clone <x> <y> <z> <dx> <dy> <dz> <x2> <y2> <z2> [<遮罩模式>] [<复制模式>]

让我们先看想前两个参数“坐标点1”和“坐标点2”。
这两个参数指定了被复制的长方体区域。
那么是如何使用两个坐标来指定一个长方体区域呢?


我们有在上一帖提到过,填充命令/fill的基础逻辑是,选择两个点,其对角线所属的长方体就是命令选中的范围。
而clone与其一致


为了回忆一下,让我们把上一帖的图片再贴出来:





图中,黄色方块与钻石块就是我们选中的两个坐标。红色玻璃就是它们的对角线,而绿色玻璃就是它们选中的区域。
不过fill到这里就结束了,它会把这片被两个坐标指定的目标区域替换为一种方块。
但clone还没有结束,当描述了“目标区域”,即“被复制的区域后”,还需要指定另一个坐标,来告诉游戏“复制的目的地”,即“复制到哪里去”。
所以我们需要第三个坐标。来指定目的地。


那么,一条简单的clone命令就可以被写出来了:


/clone ~ ~ ~ ~8 ~8 ~8 100 30 100


将位于(~ ~ ~)与(~8 ~8 ~8)之间的区域复制到(100 10 100)
(~ ~ ~)与(~8 ~8 ~8)指明了被复制的区域是一个8*8*8的正方体,而复制目的地是坐标(100, 10, 100)。
为了方面您阅读,我使用了相对坐标“~”,且三个坐标用不同的颜色标出,这些颜色仅仅是为了方便阅读,与指令本身无关。
使用时您应自行调整数值,而不是照抄上面的波浪线。(除非这就是你想要的?)本命令3种坐标都是支持的。
(如果你不太了解坐标的内容,请去看 本系列第2帖


——但是你可能发现了一个问题。


嘶~我们用了两个坐标来指定被复制的区域,但却只用了一个坐标来确定目的地。
但是我们复制的是一个区域,而不是一个方块啊。
这个“目的地坐标”只用一个坐标,只能表达一个位置,那么这个“目的地坐标”是目的地的哪里?
中间?左下角?右下角?



答案是……目标区域会出现在目的地坐标的正x与正z方向。
换句话说,目的地坐标是目标区域的西北角


在上面的例子中,那个被复制到(100 10 100)的8*8*8的正方体会出现在(100, 10, 100)与(108, 18, 108)的位置。
这样,你明白了吧


最后做提醒的是,本命令适用于方块状态与NBT


2.模式


在上面,我们已经讲了clone的基础逻辑。
但是,就像命令/setblock与/clone一样,/clone也可以选择 模式 ,或者叫“ 命令选项 ”。


格式:


代码:

  1. /clone <坐标点1> <坐标点2> <目的地坐标> [<遮罩模式>] [<复制模式>]



所谓的模式就是后面的[&lt; 遮罩模式 &gt;]与[&lt; 复制模式 &gt;],两个选项。
这些选项会为命令提供额外的功能。


遮罩模式 有三种, replace(替换模式) masked(叠加模式) ,与 filtered(过滤模式)


复制模式 也有3种, force(强制模式) move(移动模式) ,与 normal(无特殊模式)


所以,展开本命令,就是:


代码:

  1. /clone <坐标点1> <坐标点2> <目的地坐标> [replace|masked|filtered <过滤方块>] [force|move|normal]



哇,看起来有一点复杂,上面的说明你也可能有点糊涂,
但没关系,让我们一个个看过去。


2.1 遮罩模式


我们先看向“遮罩模式”


masked(叠加模式)


我们要注意的是,/clone命令会复制选中区域的一切方块,包括空气。
所以当我们要进行一些特殊操作时,就会遇到麻烦,比如,当你想要把一个圆球塞进一堆石头,但是又不想要弄出一堆“缝隙”的时候。


这时,masked模式就派上用场了。
本模式只会复制非空气方块。


比如执行命令:


/clone ~ ~ ~ ~8 ~8 ~8 100 30 100 masked



我们要将左侧的结构复制到右侧,但是你可以注意到,空气并没有被复制,所以我们得到的是一个包在玻璃里的结构,而不是一个和左侧一模一样的物体。


(然后多补一句,洞穴空气大概也会被过滤,嗯(一本正经))


replace(替换模式)


我们已经看过了 maked,叠加模式 ,那么 replace(替换模式) 就很好理解了。
masked只会复制非空气方块,而replace则会复制所有方块。


比如:


/clone ~ ~ ~ ~8 ~8 ~8 100 30 100 replace





你会发现整个目标区域都被覆盖为了来源区域,那些玻璃都被空气替换,而不是像masked模式下,保留了非空气区域。


replace也是默认的模式,如果不填写模式,那么模式默认为replace。



/clone ~ ~ ~ ~8 ~8 ~8 100 30 100


这条命令没有填写replace,但与上一条命令效果一致。


filtered(过滤模式)


除了简单的是否过滤空气以外, filtered(过滤模式) 为我们提供了更进阶的选择。
在本模式下,你可以选择在指定区域中只复制一种方块到目标区域。
它的格式是,在filterted后加上要复制的方块id。


如:


/clone ~ ~ ~ ~8 ~8 ~8 100 30 100 filtered oak_planks


oak_planks 是橡木木板的意思,所以本命令只会复制指定区域的橡木木板,而不复制其他内容:





注意只有橡木模板被复制了,其他的内容包括空气并没有被复制,所以整个玻璃块被保留,而不是像replace模式的例子中那样消失。


涉及较高级内容?可跳过
这里的过滤方块同样支持使用方块标签。
这种东西在以前的帖子中讲过,感兴趣可以去翻看。


举例:
/clone ~ ~ ~ ~8 ~8 ~8 100 30 100 filtered #planks


复制planks标签下的所有方块(默认包括了所有木板,无论种类)


过滤同样支持方块状态与NBT:


/clone ~ ~ ~ ~8 ~8 ~8 100 30 100 filtered oak_slab[type=top]
只复制所有上半的橡木木板


2.2 复制模式


看完了遮罩模式后,再让我们转向另一个选项


注意/clone命令是有两个选项的,一个是遮罩选项,一个是复制选项。
遮罩选项可以选择的3中模式上面刚刚讲了,下面的是复制选系。该选项应该填写在遮罩选项之后。


force(强制模式)


/clone命令有一个有点奇怪的规则,就是选中的区域和目标区域不能重叠,否则复制失败。


但是如果你非要在选中区域A和目标区域B重叠的情况下复制呢?
难道要先把A复制到离这里很远的C,然后再搬**么?


不用,我们可以使用force模式,该模式会无视重叠强制复制内容:
比如:


/clone ~ ~ ~ ~8 ~8 ~8 100 30 100 replace force


注意上面的replace是遮罩选项,上面的讲的。它后面接的force才是主角。


本命令执行后,如果原区域和目标区域没重叠,那么force填不填没有差别,但是若两者重叠,那么如果不填force就无法成功复制区域。


move(移动模式)


本模式是“移动模式”,简单来讲就是在复制后将原来的区域删除。


比如:


本命令将选择区域移动到目标区域:
/clone ~ ~ ~ ~8 ~8 ~8 100 30 100 replace move





注意,目标区域被原来的结构覆盖了,但是原来的区域被替换为空气。


复制选项与遮罩选项是可以搭配使用,当我使用过滤模式+移动模式时:


/clone ~ ~ ~ ~8 ~8 ~8 100 30 100 filtered oak_planks move


上面的命令指定只复制橡木木板,且为移动模式:





注意这时,只有橡木木板被复制了过去,而原位置上也只有橡木木板消失了,其他的方块没有像在上一个例子那样一起消失。这就是过滤模式与移动模式的搭配。


normal(无特殊模式)


normal你知道是啥意思不,是“普通”的意思。本模式就是不执行任何特殊的选项。
这是默认的模式,所以如果你不填入本模式,模式默认为normal:


下面3条命令的效果 一致


/clone ~ ~ ~ ~8 ~8 ~8 100 30 100 replace normal
/clone ~ ~ ~ ~8 ~8 ~8 100 30 100 replace
/clone ~ ~ ~ ~8 ~8 ~8 100 30 100


都只是最最普通的复制:





那,这就是关于/clone的全部内容了。


——这里是鸽了一个月的Dahesor。
鸽当然是有原因的,但也别问,因为一个鸽子想鸽的话理由就多的是。


下一帖的内容是Json文本,因为我想要把这个重要的东西写得好一点,所以要发出来也要一会。不过这次嘛,我发的越慢,证明我就写得更好。因为我绝对会努力写写写,而不是半道去刷b站。
真的。


附录,注释,与外部链接


#更新日志


Java 1.17.1/a页面发布Java 1.17.1/b修改了一些可能刺眼的背景色,重新获得了5金粒。


上一篇: 【命令】命令教程“真”从零开始(十五)最接近神的一次:填充命令/fill
系列《命令教程“真”从零开始》 前往来自 麻瓜草稿簿 系列教程索引 【命令】命令教程“真”从零开始 (一) 指令本身,选择器,与命令方块
【命令】命令教程“真”从零开始 (二) 命令tp与相对,局部坐标与朝向锚
【命令】 命令教程“真”从零开始 (三) 四个新手指令
【命令】 命令教程“真”从零开始 (四) 有关队伍命令/team的……差不多一切
【命令】命令教程“真”从零开始 (五) 记分板与/scoreboard
【命令】 命令教程“真”从零开始 (六) /tag指令,与进阶~选择器参数
【命令】命令教程“真”从零开始 (七) 新手指令杂烩2号
【命令】命令教程“真”从零开始 (八) 区块与强制加载命令/forceload
【命令】命令教程“真”从零开始 (九) 调整苦力怕防爆,防喷/gamerule
【命令】命令教程“真”从零开始 (十) 简单,又新手(雾)的方块指令/setblock
【命令】命令教程“真”从零开始 ( X ) 我就不信不能用大白话讲清楚NBT
【命令】命令教程&quot;真&quot;从零开始(十二)数据运算三方法之一修改NBT/data
【命令】命令教程“真”从零开始(十三)给予与替换物品,命令/replaceitem
【命令】命令教程“真”从零开始(十四 ) 修改属性/attribute【一拳打爆末影龙】 【命令】命令教程“真”从零开始(十五)最接近神的一次:填充命令/fill 【命令】命令教程&quot;真&quot;从零开始(十六)复制一片区域:复制命令/clone


下一篇: