/execute- /execute的语法被拆分。
- 修饰子命令将可以改变指令的执行方式:
- as <指定实体> <连锁子命令>以<指定实体>执行命令(只改变执行者,不改变执行位置)。
- at <指定实体> <连锁子命令>以<指定实体>的坐标,旋转角度和维度来执行命令(只改变执行位置,不改变执行者)。
- positioned <指定坐标> <连锁子命令>从<指定坐标>的坐标来执行命令。
- positioned as <指定实体> <连锁子命令>仅用指定实体的坐标(x y z)执行命令
- align <坐标轴> <连锁子命令>执行命令时会先把执行位置转换为方块坐标(向下取整,只针对指定坐标轴的坐标),<坐标轴>的写法就是x、y、z的任意组合(例子:x,xz、code>zyx和yz)。
- 使用示例:
- 当x=-1.8,y=2.3,z=5.9使用x将变为x=-2,y=2.3,z=5.9
- 当x=2.4,y=-1.1,z=3.8使用yxz将变为x=2,y=-2,z=3
- facing <x y z> <连锁子命令>会使命令执行得如同朝向指定坐标<x y z>。
- facing entity <指定朝向实体> (eyes|feet) <连锁子命令> 会使命令执行得如同朝向指定朝向实体的脚或眼睛。
- rotated as <指定实体> or rotated [垂直旋转度数 水平旋转度数] 会使命令执行得如同执行者转向到指定方向。
- rotated as <指定实体> <连锁子命令>会使命令执行得如同执行者转向到实体的方向。
- rotated <y x> <连锁子命令>会使命令执行得如同执行者转向到指定方向。
- in (overworld|the_end|the_nether) <连锁子命令> 会使命令执行得如同位于指定维度。
- anchored (feet|eyes) <连锁子命令> 会在使用朝向坐标或朝向指令时调整此命令的判断坐标为脚或眼睛。
- 条件子命令可以让你避免在特定情况运行命令:
- (if|unless) block <指定坐标> <指定方块> <连锁子命令> 如果(unless则为除非,即条件不成功)<指定坐标>(的方块)与<指定方块>,才执行后续的命令。
- (if|unless) blocks <起始框选点> <终止框选点> <对照区域> (all|masked) <连锁子命令>如果(除非)<起始框选点>和<终止框选点>之间的区域与<对照区域>相符,才执行后续的命令。
- (if|unless) entity <指定实体> <连锁子命令>如果(除非)<指定实体>存在(1个或以上)时执行命令。可能包括死亡的玩家,这取决于目标选择器的类型。
- (if|unless) score <指定实体/玩家名> <指定记分板记分项> (<|<=|=|>=|>) <对照实体/玩家名> <对照记分板记分项> <连锁子命令>如果(除非))<指定实体/玩家名>的<指定记分板记分项>分数与<对照实体/玩家名>的<对照记分板记分项>分数符合指定的比较符时执行命令。
- (if|unless) score <指定实体/玩家名> <指定记分板记分项> matches <指定范围> <连锁子命令>指定目标的记分板记分项是否在指定范围内(如1, 1..5)。
- 作为/stats的替代,新的store子命令将允许你将命令结果储存于某处:
- result将会选择命令的结果来输出,用于取代过去的这些统计:AffectedBlocks、AffectedEntities、AffectedItems、QueryResult。
- success将会记录这个命令到底执行的成功次数是多少。虽然此数值通常会是0或1, 但是如果此命令被分开每个实体执行(像是as @a)那么其成功数也就大于1了。这取代了SuccessCount。
- 命令统计会被储存,并在整个命令被完整执行后返回(返回值)。注意返回值必定为整数,小数会被向下取整。
- 如果指命令没有成功(像success是0时),result也会被设为0。
- 之后会明确每个命令的预期结果。
- store (result|success) score <目标实体/玩家名> <指定记分板记分项> <连锁子命令>
- 返回值会被储存在<目标实体/玩家名>的<指定记分板记分项>分数里。
- 记分项必须存在,但相对于/stats你不需要为<目标实体/玩家名>的分数设定初始值
- store (result|success) block <目标坐标> <标签路径> (byte|double|float|int|long|short) [倍率] <连锁子命令>
- 将返回值储存在目标坐标方块在标签路径的NBT标签上,并储存为byte、double、float、int、long或short。可选的倍率可以用于把输出值乘以一个倍数方便储存(如整数与小数的转换)。
- 注意不能通过此命令为数组/列表标签加入新元素,只能取代现有元素。
- store (result|success) entity <目标实体> <标签路径> (byte|double|float|int|long|short) [倍率] <连锁子命令>
- 将返回值储存在目标实体标签路径的NBT标签上,并储存为byte、double、float、int、long、或short。
- 和/data类似,store不能修改玩家的NBT。在玩家Inventory或EnderItems中的物品tag键的NBT是例外,并可以用store修改[8]。
- 可选的倍率可以用于把输出值乘以一个倍数方便储存(如整数与小数的转换)。
- 注意不能通过此命令为数组/列表标签加入新元素,只能取代现有元素。
- store (result|success) bossbar <id> (value|max) <连锁子命令>
- 值的ID以id的形式储存在value或max的bossbar设置里。
- 标签路径的形式类似于:foo.bar[0]."一个[随便写个好听的]".baz
- foo.bar是foo的子标签bar。
- bar[0]表示bar的元素0(索引值)。
- "用引号括起来的字符串"在串内字符需要被转义(escape)时可以使用。即字串不是只由0-9、a-z、_和-的字符组成时需要使用引号括起来。例如,引号"及反斜杠\是需要被转义的。
- 例子:
- /execute store success score @a foo run say hi
- /execute as @e[type=pig] at @s store success entity @s Saddle byte 1 if entity @p[distance=..5]
- 你可以将所有需要的子命令串连在一起。同一个子命令可以多次出现。
- 要这么做时,你必须将一个子命令直接连接到下一个子命令。
- 最后当你完成整条子命令连锁,写上run来让你继续写下你实际想要执行的命令。
- 例:/execute as somebody at somebody run say 嘿
- 游戏会在执行/execute命令之后的命令前,先处理子命令的数据,故之后的命令无法影响之前的命令。
- 旧命令转换式示例:
- /execute @e ~ ~ ~ detect ~ ~ ~ stone 0 say 石头!变成/execute as @e at @s if block ~ ~ ~ stone run say 石头!
- /execute @e ~ ~ ~ detect ~ ~ ~ grass 0 summon pig变成/execute at @e if block ~ ~ ~ grass run summon pig
- /execute @e ~ ~ ~ say 嗨!变成/execute as @e run say 嗨!
|