更新时间:2024-07-11 09:45
“目标选择器”是游戏《minecraft》中用于指令方面的一种东西。大多数以玩家作为参数的命令,可以通过某些限定条件来选择一个或多个玩家,而不必要用名字来指定玩家。以实体作为参数的命令,也可以通过目标选择器选择符合条件的一个或多个实体。
目标选择器格式:
@<变量> [<参数> =<数值> ,<参数> =<数值>......]
(注:“<>”必须要填,“[]”可填可不填)
目标选择器变量用于指定待选目标的大致分类。共有5种变量。
@p
选择最近的玩家。在服务器控制台中输入时,基准点的坐标为x0 y0 z0。如果有多个最近的玩家,他们与基准点距离完全相同,那么会选择其中最晚进入服务器的玩家。
在命令方块中、玩家或使用execute用实体执行时,会以自身为基准点。
@r
选择随机玩家(或使用type目标选择器参数来包含实体)。
如果没有使用type参数,@r只会选择随机玩家。type参数可以用来选择非玩家的实体(举例来说,@r[type=zombie]会随机选择僵尸,@r[type=!player]会随机选择非玩家实体,等等)。
@a
选择所有玩家,包括已死亡玩家。除了@a以及@s以外的其他所有目标选择器都不能选中已死亡玩家。
@e
选择所有实体(包含玩家)。
@s
只选择唯一一个实体:执行该命令的实体,包括已死亡玩家。若命令执行者不是一个实体,比如是命令方块或服务器控制台执行命令,则此选择器不会选中任何东西。
(信息来源)
在使用目标选择器之后,玩家可以随意地使用参数来限定所要选择的群组。当使用@a或@e时,待选目标从
全体筛选成特定的少数。当使用@p或@r时,待选目标根据距离远近或随机而从全体中产生。当使用@s时,命令执行者只有在所有参数都满足时才会被选择,否则命令执行失败。
在目标选择器变量之后附加键值对构成的逗号分隔,并包含在方括号中(见“格式”目录)
键值区分大小写,括号、等于号和逗号旁可以有空格(目标选择器和第一个方括号之间除外),键值对只能用逗号(英文的半角逗号)分隔。
坐标类参数用于范围检测,分为3种。
基准点
通过x、y、z这三个参数可以修改目标选择器选择的基准点,与通过距离选择的参数结合可以选择特定距离内的目标,与通过体积尺寸参数选择目标结合可以选择特定立方体内的目标。如果仅指定基准点而未指定距离和体积尺寸,则会选择整个世界(对选择顺序及部分选择参数有效,并且限制选择范围为执行的世界)。
坐标可以是整数或像12.34这样的小数(具体为双精度浮点数)且不会进行中心校正(center-corrected),这意味着x=0不再自动更正为x=0.5。波浪号可用于此参数,仅限手机版。
格式:[x =<数值> ,y =<数值> ,z =<数值> ,...]
距离
通过距离选择目标的参数有两个版本,一个是r和rm(仅手机版)和distance(仅Java版)。该参数的选择范围为球状。
r和rm
r——最大搜索半径(圆),值可以填R,这样会只选择小于R个方块的目标执行命令。使用小于0的值则会将命令限制为在相同维度执行,且不限制执行位置的距离。
rm——最大不搜索半径(圆),值也可以填RM,这样会只选择大于RM个方块的目标执行命令。
distance
该参数只选择与基准点的距离(单位为方块格数)为某个值或者某个范围内的目标。只允许非负数。
若精确到坐标(上方)和半径中的一或多个坐标,则半径将以坐标为执行中心而不是命令执行位置。
在Java版,范围可以是“最小值..”、“..最大值”或者“最小值..最大值”的格式,比如:
立方体
选择立方体内的实体参数为dx、dy、dz,只会选择位于一定长方体区域内部的目标,体积定义为从基准点开始,向“x”方向(东/西方)延伸DX格(包括基准点本身,下同),向“y”方向(上/下方)延伸DY格,并向“z”方向(北/南方)延伸DZ格。(dx、dy和dz用来指定与坐标的距离;它们不是指定一个新的坐标。)dx、dy、dz也可以是负数(即为反向延伸)。
例子:
玩家可以结合通过距离和通过体积选择目标,此时只考虑二者重叠的区域。(从西北下角算起在一定的半径以内,且不超过定义的体积。)
计分板类参数有score、tag和team。由于手机计分板暂且没有队伍计分板分支,所以没有team参数。
分数
使用分数来选择目标的参数为score。score有三种格式,分别是score_<计分项目名称> =<值>、score_<计分项目名称>_min =<值>(仅Java版)和scores={<名称>=<分数或范围>,…}(仅手机版)。Java版中,前者是用于选择分数没有超过选定的计分项目所指定的值的实体,后者是选择没有小于选定的计分项目分数所指定的值的实体。手机版中,范围有1.. (≥1)、..1(≤1)、1.. 2(1~2)(数字可以随意改变)。
例子:
标签
实体的计分板标签可以通过/tag来给予或者移除,无需事先定义。每一个实体都可以拥有一个或者多个标签,或者没有任何标签。
格式:
1、[tag =<标签名> ,....]——选择指定标签的实体。
2、[tag =!<标签名> ,....]——排除指定标签的实体。
队伍
通过队伍选择目标的参数是team。队伍可以通过计分板指令:/scoreboard team add来创建,详情见“计分板—百度百科”。
格式:
1、[team =<队伍名> ,......]——选择在指定队伍名的实体。
2、[team =!<队伍名> ,......]——选择不在指定队伍名的实体。
3、[team = ,......]——选择不属于任何一个队伍的实体。
4、[team =! ,...... ]——选择随机一个队伍包含的实体。
数量
通过数量选择目标的参数在手机版和Java版都不一样。
手机版
手机版需要用c参数来选择,是选择指定数量的目标,通常以距离命令执行点的顺序排列。如果变量为p,数值为负数,将会从最远的地方向命令执行点的顺序排列。
格式:
[c =<数量> ,...... ]
Java版
Java版的数量参数分为两个,分别是limit和sort。
limit
当使用@p或@r变量时,此参数被预设为1,而更大的数值会增加回传的目标数量。当使用@a或@e变量时,此参数只会限制目标数量(默认选择所有目标)。
在Java版,不能使用负数,若要反选实体需要使用sort参数。(在1.13之前,用法同基岩版。)
sort
sort参数具体见参数——其他类——数量——Java版——格式目录。
格式
经验等级
经验等级分为3种参数,分别是l、lm和level。
l
l参数是选择经验值等级低于所给的等级的目标(仅手机版)。
格式
[l =<数值> ,...... ]
lm
lm参数是选择经验值等级高于所给的等级的目标(仅手机版)。
格式
[lm =<等级> ,......]
level
level参数是选择经验值等级在某个值或某个范围内的目标(仅Java版),在1.13以前用法和手机版一样。
格式
[level =<值> ,...... ]
[level =<最小等级>..<最大等级> ,...... ]
游戏模式
游戏模式分为两种不同版本的参数,分别是m(仅基岩版)和gamemode(仅Java版)。
格式
m(仅基岩版):
[m =M ,...... ]——选择处于指定模式的玩家。
[m =!M ,...... ]——选择不处于指定模式的玩家。
gamemode(仅Java版):
[gamemode =M ,...... ]——选择处于指定模式的玩家。
[gamemode =!M ,...... ]——选择不处指定模式的玩家。
变量M可以是
这将自动过滤非玩家目标。
在Java版从1.13,游戏模式只支持全称。在1.13之前,用法与基岩版相同。其中,在1.9之前的版本,游戏模式只允许使用数字,且不能反选。