这将会使执行朝向与距离执行地点最近的实体一致。
十分简单,是不是?但请注意,和as、at子命令一样,当facing entity和rotated as选择到多个实体时,指令都会在每一种情况下分别运行一遍。
现在,at、facing、rotated、anchored这四个与旋转角度有关的子命令已经全部讲完了,剩下的两个子命令positioned和align仅仅和执行位置中的坐标有关系。让我们继续学习一下。
positioned子命令乍一看和at子命令很像,都是改变执行位置,但其实两者的区别很大。
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 ...
本小章还未完,请点击下一页继续阅读后面精彩内容!
喜欢Minecraft指令手册请大家收藏:(m.zjsw.org)Minecraft指令手册爪机书屋更新速度全网最快。