A→B→C→
A:重复,无条件,始终活动
/execute @e[type=snowball]~~~ execute @p[r=1.5,rx=90,rxm=60]~~~ execute @e[type=snowball,c=1]~~~ tag @s add back_home
\\选取雪球作为指令执行者,再以这个雪球为中心寻找半径1.5格内最近的低着头(头自水平线向下90°到向下60°)的玩家。如果找到,再以该玩家为中心寻找最靠近他的雪球,并给这个雪球赋予back_home标签。\\
B:连锁,有条件的,始终活动
/execute @e[type=snowball,tag=back_home]~~~ tp @p[r=1.5] 323 65 72
\\选取具有back_home标签的雪球,并以它为中心将半径1.5格内最靠近它的玩家传送到(323,65,72)。\\
C:连锁,有条件的,始终活动
/kill @e[type=snowball,tag=back_home]
\\清除所有具有back_home标签的雪球\\
其中就有用到rx和rxm参数,用于筛选那些低着头扔雪球的玩家。
至于其中出现的tag参数,我们在上一章已经略过了。关于tag会在以后讲到计分板时提到。
ry和rym参数目前来说没有特别广的用途,只能举个没啥用的例子:
/kill @a[ry=180,rym=-180]
这章没有结束,请点击下一页继续阅读!
这条指令可以杀死所有面向正北的玩家(神奇的是这并不会框选住所有活着的玩家,@a[ry=180,rym=179]才会框选住几乎所有活着的玩家)
至于x_rotation和y_rotation参数,你应该知道怎么用了吧?
@a[x_rotation=35..]——所有头水平线朝下35°及以上的玩家
@a[x_rotation=..35]——所有头没有水平线朝下35°以上的玩家
@a[x_rotation=0..35]——所有头水平线朝下0到35°(含)的玩家
@a[x_rotation=35]——所有头水平线朝下35°的玩家
@a[y_rotation =60..]——所有朝向是在南偏西60°顺时针到正北这个范围内的玩家
@a[y_rotation =..60]——所有朝向是在南偏西60°逆时针到正北这个范围内的玩家
@a[y_rotation =60..120]——所有朝向是在南偏西60°顺时针到北偏西60°这个范围内的玩家
@a[y_rotation =60]——所有朝着南偏西60°的玩家
——实体类型——
实体类型是type,上面我们已经见过了。
type和name本质上是差不多的,但是它筛选不是通过名字,而是通过实体种类。
什么是实体种类?比如一个玩家叫Notch,另一个玩家叫Herobrine,虽然名字不同,但他们都是『玩家』种类的。又比如这里有一只马,那里有一只叫马的驴,虽然它们都叫马,但前者是马,后者是驴,并不是一个种类的。
type可以选定指定类型的实体,比如:
/kill @e[type=minecraft:villager]
就可以杀死全部已生成的村民。
type一般来说仅用于@e,因为只有@e是包含非玩家实体的。在Java1.13以下和基岩版中,你也可以用在@r中来随机选择特定类型的实体。
和name一样,type也支持感叹号反转:
/kill @e[type=!player]
这条指令的作用是:杀死所有非玩家实体。
需要注意的是,name和type这两个参数在非感叹号反转的情况下都是不可重叠的,比如:
@e[type=cow,type=player]
像上面那样是不可以的,Minecraft中可没有既是牛又是玩家的动物。如果真有,那么也应该合并成为一个新的实体,也许会叫作cow_player(牛人)呢。
——实体家族——
我们知道通过type可以选取特定类型的实体。但如果我们要选取一堆不同类型的实体用于执行同一种指令呢?
记分板、NBT和标签可以很好的解决这个问题。但在了解这三个东西之前,我们暂且没有除多弄命令方块以外的更好的办法。
Mojang估计看我们这么可怜,于是在基岩版1.16.100中,加入了family参数。
family参数和type参数差不多,只不过它是通过实体家族筛选的。
什么是实体家族?
举个例子:
僵尸知道吧?僵尸一般来说有三类变种:
尸壳、僵尸村民、溺尸
虽然它们客观上并不属于同一种实体,但主观上我们仍然会将它们归类到一个大类:僵尸类。
用Mojang的说法,它们都是属于同一个族(family)的。
现在你应该知道实体家族到底是什么了吧?
举个例子:
/tp @e[family=creeper]@s
这条指令的作用是:将所有属于苦力怕家族的实体传送到自己身旁。
当然,你也可以使用感叹号将作用反转。需要注意,和type、name参数不同的是,family参数在非反转情况下也是可以叠加使用的,因为有些实体可能会属于多个族。
你可以在Minecraft Wiki上搜索『族』词条来查看原版所有可用的实体家族。
——物品——
我们知道,在Java版中,如果要筛选具有指定物品的实体,可以使用NBT或/clear。那在基岩版中该怎么办?使用/replaceitem或/clear吗?
这的确是两种可行的方法,但Mojang还给了我们第三个方法:
hasitem目标选择器参数
这个参数可能会比较复杂,因此在了解这个参数之前,我们得先了解一下:背包中的物品