耗子的指令课堂(16)
引导
在接下来的所有指令教学中,我会使用不同颜色的字强调不同种类的内容,方便大家阅读与查看。凡例:
深蓝色 标题
橙色 技术类文字
深绿色 专有名词
红色 强调
粉色 区分数字内容
紫色 范例
第二章 指令介绍
2.5 最强大的指令系统/execute
编写这一节花了很长时间,从构思怎么编排到实际测试再到真正编写内容,才写完了这一部非常长而且详细地教程,希望大家可以看得明白。这一节讲的内容是指令系统改版之后最强大的指令——/execute。之所以说它强大,是因为它实在是太万用了,以至于学会了这个指令,就可以打遍天下无敌手,尝试制作属于自己的内容。
execute的本义是“执行”,也就是说,这条指令的本质就是“执行指令”。和其他指令不太一样的是,这条指令的结构非常灵活,没有定式,但其深层次的原理类似于搭积木,将很多块独立的积木叠在一起,组成一条完成的指令。这些“积木”(子指令)有以下几种:
修饰类:改变执行方式
条件类:检测当前是否符合条件,决定是否会执行成功
执行类:执行一条你想要的指令,只有一种:run {指令},代表执行后面填写的指令(不可以写左斜线“/”),并且一定要放在指令的末尾
存储类:将结果存储到其他介质中,比如记分板、BOSS条的分数(重点讲/scoreboard和/bossbar的应用)
当然,当/execute指令检测成功(不是执行成功,执行成功也可能检测失败)之后,使用红石比较器检测指令方块会输出红石信号。
2.5.1 修饰类子指令
(1)as
格式:as {实体,可以使用目标选择器}
指定指令的执行者。
举例:正常来说,在指令方块里执行/say hi时方括号里面是“@”,但是使用as指定执行者时/execute as MJ_Hamster run say hi(让MJ_Hamster执行指令/say hi),“@”会变成“MJ_Hamster”,和玩家MJ_Hamster执行/say hi的效果是完全一样的。
(2)positioned
格式:positioned {x y z} 或者 positioned as {实体}
指定执行指令的坐标。可以填写具体坐标,也可以套用as子指令,指定实体所在位置为选定的坐标。
举例:将所有骷髅传送到它正上方15格的位置
首先,改变执行者:所有骷髅as @e[type=skeleton]
然后指定执行指令的坐标:所有骷髅本身的位置(执行者位置):positioned as @s
执行向上传送15格的指令:run tp @s ~ ~15 ~
将这几部分拼在一起,就可以得到:
/execute as @e[type=skeleton] positioned as @s run tp @s ~ ~15 ~
(3)align
格式:align {x,y,z三个字母的任意组合,顺序随意}
将对应坐标轴上的坐标转化为方块坐标。取方块坐标的方法是将绝对坐标向下取整(不大于这个数的最大整数)。比如x=2.3会化为x=2,z=-1.5会化为z=-2(什么?你问我整数怎么取?当然是它本身咯)。至于x,y,z的排列方法,你可以使用1、2、3个字母的任意排列选择你想要取整的坐标。比如xz就是将x坐标和z坐标取整;xyz和yxz的效果一样。
举例:将自己传送至你所在的方块坐标(x、y、z都是整数)
/execute align xyz run tp ~ ~ ~
(4)in
格式:in {维度}
将指令执行的维度改为特定的维度。维度可以是overworld(主世界)、the_nether(下界)和the_end(末地)。
举例:在主世界获得在末地距离(-1000,90,1250)最近的末地城的坐标
首先,选择维度:末地in the_end
然后选择执行坐标:positioned -1000 90 1250
执行查找末地城的指令:run locate EndCity
将这几部分拼在一起,可以得到:
/execute in the_end positioned -1000 90 1250 run locate EndCity
(5)at
格式:at {实体}
将指令指定位置、朝向、维度改为目标实体的位置、朝向和维度。
(6)rotated
格式:rotated [{水平旋转角度} {垂直旋转角度}|其中一个] 或者 rotated as {实体}
指定坐标的执行方向。如果你忘记了水平旋转和垂直旋转的内容,请进入传送门复习:
如果使用as,那么指定的执行方向会是实体的朝向。
举例:万箭归宗(让所有箭向MJ_Hamster面朝的方向移动)
选定执行者:所有箭实体as @e[type=arrow]
选定执行位置:箭本身的位置at @s或者positioned as @s(思考一下为什么?)
选择移动朝向:MJ_Hamster的朝向rotated as MJ_Hamster
使箭矢向前传送:run tp @s ^ ^ ^0.1
将这几部分拼在一起,用保持开启的循环指令方块执行:
/execute as @e[type=arrow] at @s(或者positioned as @s) rotated as MJ_Hamster run tp @s ^ ^ ^0.1
(7)anchored
格式:anchored (eyes|feet)
将坐标基准点改为实体的眼睛(eyes,一般为头部坐标)或脚(feet,实体所在坐标)。不写默认为feet。
(8)facing
格式:facing {x y z} 或者 facing entity {实体} (eyes|feet)
指定指令的执行方向朝向某个坐标或实体。eyes实体的眼睛(头部坐标),feet实体的脚(实体所在坐标)。不写默认为feet。
举例:吸星大法(让所有非玩家实体持续向MJ_Hamster移动)
首先确定目标:所有非玩家实体as @e[type=!player]
实体位置:at @s
执行朝向:朝向MJ_Hamster的所在坐标(玩家的所在坐标是下半部分身体的坐标)facing entity MJ_Hamster feet
使实体向前传送:run tp ^ ^ ^0.1
将这几部分拼在一起,用保持开启的循环指令方块执行:
/execute as @e[type=!player] at @s facing entity MJ_Hamster feet run tp ^ ^ ^0.1
下一篇:第二章 指令介绍 2.5 最强大的指令系统/execute(第二部分)