positioned ——仅仅只能修改执行位置中的坐标
at ——不仅仅能修改执行位置中的坐标,还可以修改维度位置和旋转角度。
记住两者的区别之后,让我们来看看positioned子命令的使用方式:
... positioned <坐标>...
\\修改执行位置中的坐标为指定坐标\\
... positioned as <实体>...
\\修改执行位置中的坐标为指定实体的坐标,如果有多个实体,则分别以每个实体的坐标作为执行位置的坐标,多次运行指令\\
还是很简单,让我们来试一试:
/execute positioned 1 1 1 run tp @s ~~~
这将会把你tp到(1.5,1,1.5)的位置。至于为什么不会tp到(1,1,1)处,我们在前几章已经讲过了。
/execute positioned as @e[type=villager] run setblock ~~-1 ~ minecraft:diamond_block
这条指令将会在每名村民的脚下放置一个钻石块。
但还是请注意,positioned仅仅只会修改执行位置中的坐标。
为什么我要多次强调这个东西?
举个最简单的例子,假设你在下界,主世界有一个村民位于(1,23,1)的位置,此时你在下界运行一遍上面的指令,你就会发现:
在下界的(1,22,1)处,放置了一个钻石块,但理想情况下应该是在主世界放置。
这是怎么回事?答案很简单:因为positioned只会修改坐标,不会修改维度。如果你真的要使得在下界也能够让主世界的村民脚下生钻,有两种方法:
①/execute as @e[type=villager] run setblock ~~-1 ~ minecraft:diamond_block \\将positioned as替换为as\\
②/execute positioned as @e[type=villager] in minecraft:overworld run setblock ~~-1 ~ minecraft:diamond_block \\加上in子命令,指定维度位置是主世界\\
最后,我们只剩下了一个修饰子命令:align
align这个子命令比较特殊,它并不是说修改维度位置为某个实体所处的维度,也不是说修改旋转角度为某个方块的朝向,而是对执行位置中的坐标小修小补:对小数向下取整,对整数保留不变,将坐标改为方块坐标。其语法如下:
... align <坐标组合>...
其中,『坐标组合』参数可以填写任意的xyz。注意啊,这里不是填写具体的数字,而是就填写xyz这三个字母的任意组合,甚至缺个x缺个y之类的都可以,只是不能重复而已。
比如:
/execute align xyz run tp @s ~~~
假设你原本的坐标是(-105.315,-57.,-25.875),使用上述指令后你会传送到(-106,-58,-26),也就是将你的xyz三个坐标分别向下取整再传送。
上面这条指令你也可以写成:
/execute align yzx run tp @s ~~~
/execute align zxy run tp @s ~~~
都可以,就是不能这么写:
/execute align 1 1 1 run tp @s ~~~
/execute align xxyyzz run tp @s ~~~
这样子是不行的。
如果你只想对x坐标和z坐标进行向下取整,只需要去掉一个y就可以了:
/execute align xz ...
这章没有结束,请点击下一页继续阅读!
现在,8条修饰子命令都已经学完了,让我们来将它们一齐运用一下:
/execute in minecraft:the_nether positioned as @s run tp @s ~~~
这将会把你传送到地狱,并使得坐标不会变化。假设你原本在主世界是(1,1,1),使用这条指令你只会跑到下界的(1,1,1),x和z轴并不会除以8。
为何?让我们来使用『流水线思维』分析一下:
At First——你自己、(1,1,1)、主世界、你自己的旋转角度、feet
in——你自己、(0.125,1.0,125)、地狱、你自己的旋转角度、feet
\\in修改了维度位置到地狱,并且由于是从主世界到地狱,x和z轴就被分别除以8\\
positioned——你自己、(1,1,1)、地狱、你自己的旋转角度、feet
\\positioned将坐标重新改成了你自己的坐标\\
所以,你才会传送到地狱的(1,1,1)处,而不是(0.125,1,0.125)。
再来看看第二条:
/execute as @e[limit=13,sort=nearest] at @s rotated 360 -45 anchored eyes facing entity @e[limit=1,sort=nearest,distance=0.1..] feet align yzx in minecraft:the_end positioned 1 24 1.0 if predicate snow_king:0.3 run tp @s ^^^
这条execute用到了10个子命令:as、at、rotated、anchored、facing、align、in、positioned、if和run,其中if子命令是我们接下来的内容,但早点接触也没事。