我相信,玩基岩版的各位,在输入目标选择器后,都会出现一个符号那就是“[”。Java版的各位就没有了。
(记得JAVA新版本指令有提示了)
为什么呢?其实,目标选择器真实的格式是这样的:
[目标选择器]
<目标大类或玩家名>[深入筛选方式]
没错,其实目标选择器的真实格式是这样的。其实可以通过一些细节来筛选目标。
那么到底有多少种筛选方式呢?答:到目前为止(2020-1-9),Java版有16种的筛选大类,20种筛选方式;基岩版有12种筛选大类,20种筛选方式。
那么到底是什么呢?我先总体的列出来:
坐标——X、Y、Z
距离(一个球体)——distance(Java版),r、rm(基岩版)
选取范围的长、宽、高(一个长方体)——dx、dy、dz
记分板分数——scores
记分板标签——tag
队伍名称(Java版独有)——team
选取数量——limit、sort(仅Java版),c(仅基岩版)
经验等级——level(仅Java版),l、lm(仅基岩版)
游戏模式——gamemode(仅Java版),m(仅基岩版)
目标名称——name
垂直旋转角度(头以x或z轴的角度)——x_rotation(仅Java版),rx、rxm(仅基岩版)
水平旋转角度(身体以Y轴的角度)——y_rotation(仅Java版),ry、rym(仅基岩版)
实体类型——type
实体的数据标签(Java版独有)——NBT
游戏进度(Java版独有)——advancements
predicate(Java版独有)——predicate
是不是看起来很复杂?其实的确有点复杂,但我们得先看看格式:
(注意,接下来的“[]”都不属于格式的符号,属于必填符号,“<>”符号仍是格式符号)
[<方式>=<值>,<方式>=<值>,…]
看懂了没有?如果没看懂,我这里讲一下。
这是一个大概的格式,其中如果只有一种方式,就是像下面这样填:
[<方式>=<值>]
但是如果是N个,那么就得像刚才的“[<方式>=<值>,<方式>=<值>,…]”一样了,以“,”(英文逗号)作为分隔号。
现在详细的讲讲各种方式。
(坐标)
这个很熟悉吧,就是坐标而已。“X”就是X轴,“Y”就是Y轴,“Z”就是Z轴。
那么举个栗子:
@e [x =1 ,y =60 ,z =30]
这个意思是选取在X=1,Y=60,Z=30的全部实体为目标。要注意一点,这里的坐标都必须是绝对坐标。
(距离)
以“距离”选择实体,Java版和基岩版各不相同。java版是以distance选择的,而基岩版是r和rm。
先举个Java版的例子:
@a [distance =5]
这条指令的意思是:选取所有距离执行源5格的玩家作为目标。注意,仅仅是距离5格,远一格或近一格都是不行的。
但其实一共有四种选择方式,上面的只是一种而已。而接下来的三种分别是:
@a [distance =5..10]——选择所有距离执行源5格到10格的玩家作为目标。
@a [distance =..5]——选择所有距离执行源的格数小于5的玩家作为目标。
@a [distance =5..]——选择所有距离执行源的格数大于5的玩家作为目标。
懂了没?这已经很详细了。
然后是基岩版的例子。首先是r:
@p [r =5]
基岩版的很简单。这条指令的意思就是:选取距离执行源小于5格最靠近执行源的玩家。
其实基岩版就是拆散了distance,变成了r和rm。所以如果是rm的话:
@p [rm =5]
没错,这条指令与上一条相反,其是选择距离执行源大于5格最靠近执行源的玩家。
如果要实现像[distance =5..10]或者是[distance =5]的效果呢?那么就得像下面这样写:
[rm =5,r =10]—对应—[distance =5..10]
[rm =5,r =5]—对应—[distance =5]
依照之前的讲解,理解了吧。这里就不说了。
但是还有一点,如果配合之前的“坐标”,那么坐标指定的地方就变成了执行源的地方,所以执行源是可以更改的。这一点在不能走动的命令方块中很常见。
(选取范围的长、宽、高)
这一点比较复杂,它的dx、dy、dz的作用不是指定一个新的坐标,以构成一个长方体,而是指定其从指定的x、y、z坐标或从执行源的坐标伸展几格。比如:
[dx =5]——从x坐标向东方伸展5格。
[dy =-3]——从y坐标向下伸展3格。
[dz =0]——不伸展z坐标(这不是废话,不填这个和填这个是不一样的)。
正负都可以,主要是方向要搞清楚(方向还没搞清楚的去看看第五章“坐标”)。
虽然看起来很简单,但很容易搞混它的使用方法。所以,切记!这不是指定一个新的坐标!
(记分板分数)
(记分板标签)
(队伍名称)
上面几格都是关于“记分板”(scoreboard)指令的,这个以后在讲记分板时会单独拿出来讲,因为其比较复杂。
(选取数量)
这个也很有意思。Java版是limit、sort,基岩版是只有一个c。
先讲一下Java版的。举个例子:
@a [limit =10]
这是什么意思呢?这个是指设置其最高只能选择10名玩家。如果玩家数大于10呢?那么就是随机选择啦。
其实,当使用@p和@r的时候,这个值默认为1。对它们使用limit的选择方式时会增加选择最近或随机目标的数量。当使用@a或@e变量时,此方式会限制目标数量。如果是@s呢?那还用说吗?你有10个吗?Minecraft可没有分身术。什么?Minecraft是可以分身的?还是你竟然装了一个神奇的分身mod?当我没说。对了,注意一点,limit不能写负数。
那么sort是怎么用的呢?它是配套limit的,是设置选取的方式。它有四种选取方式,分别是:
nearest——将目标由近到远排序。(@p的默认排序方式)
furthest——将目标由远到近排序。
random——将目标随机排序。(@r的默认排序方式)
arbitrary——不进行排序。(@a和@e的默认排序方式)
那么基岩版是怎么用的呢?基岩版真的很简单:
@p [c =5]
这条指令的作用是:选取最近的5个目标。
其实基岩版是可以使用负数的,比如下面:
@p [c=-5]
这条指令的作用就反过来了,它的作用是:选取最远的5个目标。
但如果要随机排序呢?或者是不进行排序,那么就得改成@r(随机排序)和@a或者是@e(不进行排序)了。
(经验等级)
这个经验等级两个版本又不相同了。java版是level,基岩版是l和lm。
首先是java版,举个例子:
@a [level =5]
这条指令的作用是:选取所有等级为5的玩家。
其实和distance一样,它和distance都有4种方式,而且格式和作用都差不多:
[level =5..10]——选取等级在5~10的玩家。
[level =..5]——选取等级小于5的玩家。
[level =5..]——选取等级大于5的玩家。
很简单吧。接下来是基岩版:
@a [l =7]
和之前说过的r差不多,这是选取经验等级小于7的玩家。lm和rm也差不多,自己举一反三吧。
哇塞,这写的好长,都两千三百字了。看来够了,这都快相当于上一卷3章的量了。那么,未完待续!
看来今天只能更1章了......