
在接下来的所有指令教学中,我会使用不同颜色的字强调不同种类的内容,方便大家阅读与查看。凡例:
深蓝色 标题
橙色 技术类文字
深绿色 专有名词
红色 强调
粉色 区分数字内容
紫色 范例
警告:本节非常重要且内容较长,请分次学习,切忌一股脑记忆。
导引:带有@的目标选择器变量、目标选择器参数
有很多命令都是需要目标的。比如调整游戏模式的/gamemode,传送的/tp,还有组队/team等。目标选择器是命令最基础的知识之一,它的目的是选择一个或多个单位,这个单位可以是玩家、方块和实体(其实玩家也是实体,在这里为了表述清楚才这么表达)。
变量(variable)在数学中指“可改变的量”。而在Minecraft中,我们通过命令实现改变某一个值的过程就是改变变量。比如上文提到的/gamemode,不使用目标选择器就是改变自己的游戏模式,而加上变量就可以改变其他玩家的游戏模式。下面是Java版中的几个目标选择器变量:
@a 全体玩家
@p 距离执行者最近的一个玩家,这个执行者可以是命令方块,会选中离命令方块最近的玩家
@r 随机一名玩家(不可以用来选定其他实体)
@e 全部实体(包括玩家,玩家也是实体)
@s 命令的执行者,如果在命令方块中则执行失败
如果目标选择器的内容只有上一小节那些内容的话,那么它们的功能是远远不够的。比如:如果我想选择任意两只僵尸、红队的任意一位处于创造模式的玩家、离某个地方最近的牛、完成了进度“为什么会变成这样呢?”的玩家,我该怎么做?这一小节我会告诉各位答案。再次提示,本节内容非常多,请分次学习。
就像数学中参数那样,目标选择器参数的作用就是筛选变量,得到更细化的选择。既然这个词条有“目标选择器”,那么参数就会和目标选择器变量一起使用。格式如下:
变量[参数1=值1,参数2=值2……]
其中方括号、逗号、等号必须使用半角字符(英文字符),参数的数量可以无限堆叠。
下面是各个参数的详细介绍。
1. x, y, z
顾名思义,代表具体坐标。
比如@a[x=100,y=65,z=-1299]选择的是在坐标(100,65,-1299)的全部玩家。
2. dx, dy, dz
如果你想选定一个长方体内的目标,这些参数和坐标参数一起使用就可以做到。这三个参数代表从x, y, z参数选定的坐标开始向x正方向、y正方向、z正方向延伸的长度(当然如果你想要负方向取负值就可以)。
比如@e[x=1,y=2,z=3,dx=2,dy=2,dz=-1]选择的是x在1~3之间、y在2~4之间、z在2~3之间的全部实体。用数学语言来表达是{(x,y,z)|x∈[1,3),y∈[2,4),z∈(2,3]}。可以看出dx、dy和dz范围的终点不会被选到。
备注:@e[x=1,y=2,z=3,dx=0,dy=0,dz=0]选取的是位于(1,2,3)位置边长为1的正方体空间(一个方块大小)。
3. distance(距离)
知识点:Minecraft中数字范围的表示(此部分是穿插在教程中的知识点,会与接下来介绍的内容相关。以后不会再说明)
在Minecraft中用“..”表示代表范围的波浪号或不等号。比如10..12表示10≤x≤12,5..表示x≥5,..7表示x≤7。
distance指与选定坐标直线距离为某个值或某个范围内的单位(显然选定的范围是球体)。默认为以执行者坐标为基准,前面使用x, y, z参数可以以特定坐标为基准。这个数值必须是非负数。
比如@a[x=100,y=65,z=-1299,distance=..10]选取的是以(100,65,-1299)为球心,10格为半径的球体范围内全部玩家,@e[distance=5]选取的是距离执行者5格的全部实体。
4. team(队伍)
顾名思义,参数team表示的是与队伍(具体会在第二章讲到)有关的选取。比如@r[team=MJ]选取的是在队伍“MJ”中随机一名玩家。等号后面不写任何内容,即[team=]表示选取的是不属于任何队伍的单位。
知识点:反向选取
在参数值的前面加上半角感叹号“!”表示反向选取。比如上文中@r[team=!MJ]代表不在队伍“MJ”中的随机一名玩家,@a[team=!]代表有加入队伍所有玩家(无论是哪个队伍都可以)。
5. type(种类)
选定目标的种类,可以使用实体名称或分类标签(有在绪言提到)。比如@e[type=skeleton]选定的是所有骷髅,@e[type=#skeletons]选取的是所有骷髅类生物,包括骷髅、凋灵骷髅和流髑。
6. level(等级)
选定目标玩家的经验等级。比如@a[level=5..7]选定的是所有等级在5级和7级之间的玩家。
7. gamemode(游戏模式)
选定目标的游戏模式,参数值可以是creative(创造)、survival(生存)、adventure(冒险)和spectator(旁观)。比如@a[gamemode=!creative]选定的是所有不在创造模式的玩家。
8. name(名称)
选定目标的名称(无视字符颜色等效果)。如果目标的名称有空格需要用半角双引号括起来。比如@a[name=MJ_Hamster]选定的是叫所有叫MJ_Hamster的玩家;@e[name=!”MJ Hamster”]选定的是所有不叫MJ Hamster的实体。
下一篇:第一章 命令基础知识 1.4 目标选择器(第二部分)