我的世界命令方块选择器以及选择器参数
选择器有什么用呢?就是选择实体
比如你在做小游戏,要使用命令对某个玩家/实体加上特效
那么你应该怎么做呢?难道你把玩家的名称穷举出来?这个是没有可能的
所以在这个时候选择器就派上用场了
选择器有四个,分别是
@a:选择所有玩家(这个选择器不能有type)
@p:选择最近的玩家(这个选择器不能有type)
@r :选择随机的一个玩家(如果有type,就是选择那种实体)
@e:选择所有的实体(包括玩家)
当然,选择器还有一部分叫选择器参数
参数名称 用途
x, y, z
以该坐标作为判定的起始点,如果不填,就使用执行命令的坐标
r, rm
离判定的起始点的距离
比如@p[r=10,rm=3]就是离判定的起始点的距离小于/等于10米,大于/等于3米的最近玩家
m
游戏模式,0为生存、1为创造、2为冒险、3为观察者
c
数量
比如@e[c=5]就是最近的5个实�壬@e[c=-5]就是最远的5个实体
(当那些实体的距离一样时,它就会选择存在最久的,而负数的话就是最年轻的)
l, lm
经验等级,l是小于等于,lm是大于等于
score_目标名称
该目标的分数范围(小于等于)
score_目标名称_min
该目标的分数范围(大于等于)
team
队伍名称
name
实体的名称
dx, dy, dz
长方体的范围
由起始点延伸出去(dx就是x轴延伸的格数,如此类推)的范围内的实体
rx, rxm
0:水平;-90:向上;90:向下
rx:最大的角度;rxm:最小的角度
ry, rym
0:+Z方向;90:-X方向;180(-180):-Z方向;-90:+X方向
ry:最大的角度;rym:最小的角度
type
实体种类
参数名称用途x, y, z以该坐标作为判定的起始点,如果不填,就使用执行命令的坐标r, rm离判定的起始点的距离比如@p[r=10,rm=3]就是离判定的起始点的距离小于/等于10米,大于/等于3米的最近玩家m游戏模式,0为生存、1为创造、2为冒险、3为观察者c数量比如@e[c=5]就是最近的5个实�壬@e[c=-5]就是最远的5个实体(当那些实体的距离一样时,它就会选择存在最久的,而负数的话就是最年轻的)l, lm经验等级,l是小于等于,lm是大于等于score_目标名称该目标的分数范围(小于等于)score_目标名称_min该目标的分数范围(大于等于)team队伍名称name实体的名称dx, dy, dz长方体的范围由起始点延伸出去(dx就是x轴延伸的格数,如此类推)的范围内的实体rx, rxm0:水平;-90:向上;90:向下rx:最大的角度;rxm:最小的角度ry, rym0:+Z方向;90:-X方向;180(-180):-Z方向;-90:+X方向ry:最大的角度;rym:最小的角度type实体种类
而选择器参数是这样的选择器[参数名称=数值(,参数名称=数值)]
比如
@e[type=ArmorStand,name=!abcd,c=5] 就是一个选择器
而@e 也是一个选择器
如果在文字的数值(比如type和name)前面加上!,就代表除了那个数值以外的
比如@a[name=!pca006132] 就是名字不是pca006132的所有玩家
【注意!以下部分的内容只是作者的测试得出的结果。不肯定是否有例外/还没有包括的例子】
接受的字符:
选择器参数接受的字符:,0-9a-z A-Z = ! _ - (没有空白)如果选择器参数里出现了不接受的字符,游戏会把它视为玩家名称数值里接受的符号:0-9 a-z A-Z_ -如果数值里出现别的符号,整个参数(参数名称=数值)以及后方的所有参数都会被无视参数名称里能够接受的符号:0-9 a-z A-Z _如果参数名称里出现别的符号,整个参数(参数名称=数值)以及后方的所有参数都会被无视如果那个数值是填数字的(比如x/y/z等等)而你填了非数字的东西进去,他会把这个参数无视比如@e[dx=abc] 和 @e 基本上是没有分别的
关于坐标/c的问题:
如果选择器里有任何关于坐标的参数(比如x/y/z/r),那个参数的作用范围就是执行的世界比如我在主世界执行的命令里,那个参数是@e[x=0,y=64,z=0],那么这个指令就只会影响主世界的实体如果那个选择器里同时有dx/dy/dz和r/rm,那么r/rm会被忽略如果那个选择器里有dx/dy/dz任何一个/两个,那么剩余的会默认为0比如@a[dy=5] 和 @a[dx=0,dy=5,dz=0]是一样的c会优先选择在执行的世界的实体/玩家,然后就是别的世界距离你现在坐标最近的实体
其他:(我想不到怎么分类)
选择器选择实体的次序:和正数的c类似,都是从最近到最远由于一个参数是参数名称=数值如果你的参数里缺少了其中一个东西,他会把这个参数和后方的所有参数忽略比如@e[name,type=ArmorStand],他就会当成是@e每个参数只可以出现一次,如果多于一次,他会被后方的数值覆盖比如@e[type=Player,type=ArmorStand,type=Snowball] ,他就会当成是@e[type=Snowball]在type这个参数里,如果你输入的数值不正确,他会提示你(出错)。