/execute是《minecraft》游戏在1.8版本加入的新指令,作用就是让一个或多项实体执行命令。在1.19.10实验性玩法以及更高版本中,/execute是各不同功能的子命令的集合,用于改变命令执行上下文(修饰子命令),执行逻辑判断(条件子命令),并在此基础上执行任意目标命令。
玩家可以在聊天栏输入/execute来执行指令,但只能是一次性的。
玩家可以在命令方块输入/execute执行指令。
/execute指令以1.19.10实验性玩法为分界点分为新、旧两种语法,1.8-1.19.10为旧/execute,1.19.10(实验性玩法)-至今为新/execute。相比之下,旧/execute比新/execute更简单,而新/execute的功能比旧/execute的功能更强大。
/execute有两种格式,有不同的作用。(注:“”可以省略,“<>”不可以省略)
第一种:
/execute <实体> <x、y、z或写~~~> <执行指令>
第二种:
/execute <实体> <x、y、z或写~~~> detect <x、y、z或写~~~> <方块id> <数据值|状态值> <执行指令>
/execute <子命令>
基岩版的/execute子命令分为三类:
修饰子命令:修改命令变量并改变命令执行时的状态,从而以特定的执行位置、执行基准点、执行者、执行朝向、执行维度执行后续子命令。
条件子命令:检测特定条件是否成立并输出结果,或限制子命令执行的条件。
run子命令:执行目标命令。
子命令按从左到右的顺序执行。
1.align <轴> <子命令>
将执行位置转化为方块坐标(向下取整)。
<轴> 取整的坐标轴,可以填x、y、z、xy、yz、xz、xyz。可以颠倒顺序,但不能重复声明。
2.anchored <eyes|feet> <子命令>
将局部坐标的执行基准点设为眼睛(eyes)或脚(feet),并改变facing子命令所指向的位置,基准点默认为脚。
3.as <实体> <子命令>
将执行者改为目标实体,并改变后面的子命令中@s的含义。
4.at <实体> <子命令>
将命令的执行位置、朝向和维度更改为目标实体的。(影响相对坐标和局部坐标的定位)
5.facing <x、y、z或写~~~> <子命令>
将命令的执行朝向设置为执行基准点到指定坐标的射线方向。
facing entity <实体> <eyes|feet> <子命令>
将命令的执行朝向设置为执行基准点到指定实体的指定基准点的射线方向。
6.in <纬度> <子命令>
更新执行维度。并依据原维度与现维度间关系,按比例缩放相对坐标和局部坐标(不包括Y轴)。
<纬度>可填写overworld(主世界),nether(下界)或the_end(末地)。
在下界中行走1格,相当于在主世界(或末地)中行走8格。用坐标表示为:主世界坐标(x,y,z),对应的下界坐标(x÷8,y,z÷8)。若不想使用此规则可以将in子命令写在前面,positioned子命令放在后面(in子命令后声明的执行坐标是位于指定纬度的坐标,如:(位于主世界执行)/execute positioned x y z in nether positioned ~Δx ~Δy ~Δz ... 该指令的执行纬度为下界,执行坐标为(x÷8+Δx,y,z÷8+Δz)。
7.positioned <x、y、z或写~~~> <子命令>
将执行位置设置为指定坐标。
positioned as <实体> <子命令>
将执行位置设置为指定实体位置。
8.rotated <绕Y轴旋转角度> <绕X轴旋转角度> <子命令>
将命令的执行朝向设为特定方向
旋转角度必须为两个双精度浮点数组成的朝向
绕Y轴旋转时,-180.0表示北,-90.0表示东,0.0表示南,90.0表示西。
绕X轴旋转时,竖直上方为-90.0,竖直下方90.0。
旋转角度前加波浪号“~”将相对于执行者进行旋转。
if 如果测试通过,那么继续执行子命令(当后面没有其他子命令时,返回“测试通过。”);如果测试不通过,则停止执行子命令并返回“Execute subcommand if ... test failed.”
unless 如果测试不通过,那么继续执行子命令(当后面没有其他子命令时,返回“测试通过。”);如果测试通过,那么停止执行子命令并返回“Execute subcommand unless ... test failed.”
1.if/unless block <整数坐标x、y、z或写~~~> <方块id> (或,仅1.19.70及更高的版本)
检测给定位置上的方块是否是特定的方块或方块状态。
2.if/unless blocks <起点方块坐标x、y、z或写~~~> <终点方块坐标x、y、z或写~~~> <对照区域方块坐标x、y、z或写~~~> <检测模式>
检测给定区域内的方块是否匹配另一个同等大小区域内的方块。
其中的坐标都必须是整数,对照区域方块坐标为对照区域的西北下角方块坐标,即长方体区域坐标最小处。检测模式分为all和masked,all用于检测全部方块,masked用于检测除空气以外的方块。
3.if/unless entity <实体>
检测一个或多个特定实体是否存在。
4.if/unless score <实体> <计分板> <指定运算符> <实体> <计分板>
检测指定目标的记分板中的记分项的分数是否与另一个(或同一个)目标的记分板的记分项的分数是否符合指定的关系。
<指定运算符>应填写“=”(等于)/“<”(小于)/“<=”(小于等于)/“>”(大于)/“>=”(大于等于)
if/unless score <实体> <计分板> matches <范围>
检测指定目标的记分板中的记分项的分数是否在给定的范围之内。
其中范围必须是整数。可以填写0(精确匹配0)、..0(匹配小于等于0的数)、0..(匹配大于等于0的数)、0..1(匹配0到1之间的数),其中的数字可任意修改。
run <指令>
用于执行指令。(指令执行的结果受run子命令以前的子命令影响)
比如你需要克隆某个建筑到指定地方去,但是又懒得打指令,那就可以输入以下指令:
指令(第一个命令块):/execute @e ~~~ clone <建筑的一个对角坐标x><建筑的一个对角坐标y><建筑的一个对角坐标z><建筑的另一个对角坐标x><建筑的另一个对角坐标y><建筑的另一个对角坐标z> ~~~
要求(第一个命令块):重复 始终活动 无条件的 朝向第二个命令块
指令(第二个命令块):/kill @e
要求(第二个命令块):链 始终活动有条件的
比如你开了个服务器,想做个在脚底下垫某个方块即可传送到主城的机制,那就需要以下指令:
指令:/execute @a ~~~ detect ~~-1 ~ tp @p
要求:重复 始终活动 无条件的 在常加载区块里
在主世界使用/locate指令寻找距离末地0,0,0最近的末地城。
指令:/execute positioned 0 0 0 in the_end run locate structure end_city
返回结果示例:
最近的 末地城 位于方块 -920,
,(y?),-872(距离1267个方块)
在主世界使用/locate指令寻找距离下界1600,154,608最近的堡垒遗迹。
指令:/execute in nether positioned 1600 100 608 run locate structure bastion_remnant
返回结果示例:最近的 堡垒遗迹 位于方块 1752,(y?),760(距离 214 个方块)
错误指令示例1:/execute positioned 1600 100 608 in nether run locate structure bastion_remnant
错误返回结果示例:最近的 堡垒遗迹 位于方块 -408,(y?),-136(距离 643 个方块)
错误原因:这个/execute指令先将执行坐标改为1600 100 608,然后再改变纬度为下界。执行坐标按1:8的比例缩放为200 100 76(1600÷8=200,608÷8=76),最终返回了距离下界200 100 76最近堡垒遗迹。
错误指令示例2:(位于主世界1600 100 608执行)/execute in nether at @s run locate bastion_remnant
错误返回结果示例:将'locate' 执行为 Steve 失败(在合理距离内未发现有效结构)
错误原因:at子命令包括了执行者的坐标,朝向与纬度。该指令将执行纬度改为下界后,at子命令将执行纬度改为主世界,所以无法在主世界查找堡垒遗迹。
将自己的坐标改为方块坐标(整数坐标)。
指令:/execute positioned ~~~ align xyz run tp ~~~
让所有的僵尸自杀。
指令:/execute as @e run kill @s
效果:所有的僵尸自杀。
错误指令示例:/execute at @e run kill @s
效果:杀死自己。
错误原因:at声明指令的执行位置,不声明指令的执行者。该指令的执行者仍是玩家本身。
将所有名称为a的盔甲架向z轴正方向移动一格
旧:/execute @e ~~~ tp @s ~~~1
新:/execute as @e at @s run tp @s ~~~1
当a在b计分板的值不为1时,将所有名称为a的盔甲架隐身60秒,不显示粒子效果。
旧:/scoreboard players test a b 1 1(重复,始终活动)
红石比较器,红石火把连接
/effect @e invisibility 60 0 true(脉冲,需要红石)
新:/execute as @e unless score a b matches 1 run effect @s invisibility 60 0 true(重复,始终活动)
(当后续的子命令不涉及到坐标时,at子命令可省略)