命令很多时候是需要针对实体去执行的,比如/tp。如果你使用玩家名来指定传送的玩家,比如/tp pca006132 0 5 0,你就需要针对每个玩家写一个命令,这方法在很多情况下是不可能使用的,因为我们不一定会知道被传送的玩家是谁,而且就算知道所有玩家,我们也需要举出所有的可能(穷举),不然就有些玩家无法传送,这样做需要的命令数就会非常多。除此之外,如果我们这样做,我们就无法传送玩家以外的实体了,所以穷举玩家名的方法是接近不可能的。
所以,在针对实体执行命令的情况下,我们通常会使用目标选择器。
选择器的用途,就是根据某些条件(用选择器参数指定)来选择实体,所以选择到的数量可以是没有/一个/多个。
@选择器名称[参数=值]
参数名称 | 描述 |
---|---|
选择器名称 | 决定选择器行为 |
参数 | 额外选择条件。不一定要存在,但如果存在一个或多个参数则必须用方括号括住,并且以逗号分隔开不同的参数(所有符号都是英文符号,如,和[]) |
值 | 参数所对应的数值,用来确定参数所对应的数据,与参数结合使用来选择实体。 |
*注: 每个参数只能出现一次
名称 | 描述 |
---|---|
p | 最近的玩家(type参数在此无效) |
a | 全部玩家(包括死去的玩家, type参数在此无效) |
r | 随机实体(默认为玩家) |
e | 所有实体(包括玩家) |
格式: 参数名=数值
文字类的数值前加上!则代表选择所有非该数值的目标
名称 | 描述 |
---|---|
x,y,z | 以该坐标作为判定的起始点(默认为执行坐标) 比如你填写x=1,y=1,而你执行命令的坐标是x=5,y=5,z=5,那么那个判定的起始点就是x=1,y=1,z=5 如果只是填写其中一个/两个参数,剩下的就会默认为执行坐标(比如x=5,而执行坐标是100 5 200,那么那个判定的起始点就是 5 5 200) |
r,rm | 离判定的起始点的距离 (r就是判定区域的半径,rm就是不包括在判定区域内的圆形半径) 比如r=5就是选择所有在5格范围内的实体,rm=5就是选择所有5格范围外的实体 比如@p[r=10,rm=3]就是离判定的起始点的距离小于等于10米,大于3米的最近玩家 |
m | 玩家的游戏模式 0=生存,1=创造,2=冒险,3=旁观 |
c | 数量 这个是根据选择顺序来选择的 正数的话就是选择最先选择到的n个实体,负数就是选择最后选择到的n个实体 所以请参见下方的选择优先规则 比如@e[c=5]就是最近的5个实体,@e[c=-5]就是最远的5个实体 |
l,lm | 经验等级,l是小于等于,lm是大于等于 |
score_目标 | 该目标的分数范围(小于等于) |
score_目标_min | 该目标的分数范围(大于等于) |
team | 队伍名称(可以使用!表示不等于, 如team=!blue就是选择不在blue队伍里的) team= 就是代表没有队伍的实体(比如@e[team=]) team=!就是代表有队伍的实体 |
name | 实体的名称(可以使用!表示不等于, 如name=!pca就是选择名称不是pca的实体) |
dx,dy,dz | 长方体的范围 由起始点延伸出去(dx就是沿着x轴延伸的格数,如此类推。正数就向正的方向,负数就向负的方向,范围必定是完整的格子,没有任何偏移,即使执行位置不是整数)的范围内的实体 *注意: 只要实体的碰撞箱接触到这范围就会被选中,而不是看其坐标 |
rx,rxm | 实体垂直朝向(看的方向) 0:水平;-90:向上;90:向下 rx:最大的角度;rxm:最小的角度 |
ry,rym | 实体水平朝向(看的方向) 0:+Z方向;90:-X方向;180(-180):-Z方向;-90:+X方向 (可以使用大于180的度数) ry:最大的角度;rym:最小的角度(如ry=50, rym=0就是50度的范围;ry=0, rym=50就是310度的范围) |
type | 实体种类(所有summon的实体种类+Player。可以使用!表示不等于,如type=!Player就是所有不是玩家的实体) type=!LightningBolt则代表所有类型的实体(对@r相当有用) |
tag | 选择拥有此标签的实体, 在数值前添加"!"将只选择不拥有此标签的实体, 提供空的标签名将选择所有没有标签的实体, 只填写“!”将选择任何拥有标签的实体。 注意: 只能检查一个tag |
选择器只接受某些字符,如果有不接受的字符则会当作玩家名
部分 | 接受字符(不包括空格) |
---|---|
选择器参数 | , 0-9a-z A-Z = ! _ - |
选择器参数数值 | 0-9 a-z A-Z _ - |
选择器参数名称 | 0-9 a-z A-Z _ |
注:
如果选择器参数里出现了不接受的字符,游戏会把它视为玩家名称
如果数值里出现其他符号,整个参数(参数名称=值)以及后方的所有参数都会被无视
如果参数名称里出现其他符号,整个参数(参数名称=数值)以及后方的所有参数都会被无视
如果那个数值是数字类的(如x/y/z等等), 而你填了非数字的东西进去,它会把这个参数无视
如果选择器里有任何关于坐标的参数(比如r/rm/dx),那个参数的作用范围就是执行的世界(其他世界的不会被选择到)
如果那个选择器里同时有dx/dy/dz和r/rm,那么选择到的范围就是dx/dy/dz和r/rm重叠的范围
如果那个选择器里有dx/dy/dz任何一个/两个,那么剩余的会默认为0
选择器会优先选择在执行的世界的实体/玩家(先选择最近的实体,当那些实体的距离一样时,它就会优先选择存在最久的),然后就是别的世界距离你现在坐标最近的实体
选择一个距离执行点5格以外,最近的实体
@e[rm=5,c=1]
选择所有目标(objective) X分数大于50、小于100,目标Y分数大于等于-200,小于等于0,目标Z分数等于200的实体
@e[score_X_min=51,score_X=99,score_Y_min=-200,score_Y=0,score_Z_min=200,score_Z=200]