上一章我们说到了哪里?哦,是经验值啊。
那么接下来就是:游戏模式。
(游戏模式)
关于游戏模式,两个版本又是不同的,Java版是gamemode,基岩版是m。
那么还是先上Java版。举个例子:
@a [gamemode =adventure ]
上面这段是啥作用?adventure是什么意思?不知道的赶紧去看看第十一章“更改游戏模式”。
adventure就是“冒险”模式,记住了,别再忘了,这是很重要的。
上面这段是指:选择所有游戏模式为“冒险”模式的玩家作为目标。
但是注意,gamemode不允许写数字或者缩写,所以玩Java的各位真的是可怜啊。
但是,其实如果再添上一个(英文)符号,那么这个作用就会翻转。什么呢?看下面:
@a [gamemode =!adventure ]
看到了吗?其实在“值“的前面添上一个(英文)感叹号,就可以把作用翻转成:选择所有游戏模式不为“冒险”模式的玩家作为目标。
然后是基岩版。基岩版又是只有一个字母:m。
现在上例子:
@a [m=adventure]
这个各位应该都知道吧,和刚才的Java版作用一样。但有个好消息,各位是要听这个好消息吗?
没得选择啊!
这个好消息就是:基岩版的m允许使用数字和缩写字母!
是不是一个天大的好消息?那么请记住!生存是0或者是s,创造是1或者是c,冒险是2或者是a,不要记错了(这很简单的,真的)。
对了,还有,基岩版和Java版的感叹号格式都是通用的,也就是说你还可以这样写:
@a [m =!a ]
所以这个的意思也就反过来了。
(目标名称)
目标名称是什么?其主要是用于指定一些特殊的玩家或实体。Java版和基岩版都是用name的(终于不用分开讲了)。
这个很重要,因为它在服务器里很经常用到,比如服务器的一些需要特定权限的人(比如服主)才能进入的地方,所以此时name就派上用场了。
@a [name =作者]
这样子,就会选择所有玩家中,或者是世界的所有实体中叫作者的玩家或实体。
但是这如果是指定实体的话只能是一个被命令过的实体,比如一个叫“小明”的村民,就可以。
(但是,某些人可能会拿这个来干这件事:/kill @a [name =作者])
(但可惜作者我的游戏id不叫作者)
所以懂了吧。
哦,对了,name也支持感叹号格式的。
(垂直旋转角度)
(水平旋转角度)
还记得第九章的/tp吗?其中第一次接触到了垂直旋转角度和水平旋转角度:
“指定垂直旋转角度......这个是指实体的头朝着哪里看,最大180°,最小-180°”
“指定水平旋转角度,用普通话来讲就是设定传送的实体其身子和头朝向哪里,可以是正数(顺时针)也可以是负数(逆时针),一圈360°......。”
这两个由于是同类,我就合起来讲了。
Java版先上。Java版的垂直旋转是x_rotation,水平旋转角度是y_rotation。这两个一个是X,一个是Y。
@a [x_rotation =35]
@a [y_rotation =60]
这两个,第一个是:选择所有其头和地平线夹角或是与X轴(Z轴)夹角为35度的玩家;第二个是:选择所有其身子朝向西偏南30度的玩家。
其实垂直旋转角度其范围是:90度(看星星)到-90度(看地上)。
水平旋转角度也有范围,其范围是:-180度(北)到180度(还是北)。
对了,这里背一下一个句子:
上北-180°,下南0°。左西90°,右东-90°。
这是水平旋转角度的方向,以后Minecraft中再也不会不知道东南西北了。
其实这里也可以使用level和distance的格式,也就是:
@a [x_rotation =35..]
@a [x_rotation =..35]
@a [x_rotation =0..35]
@a [y_rotation =60..]
@a [y_rotation =..60]
@a [y_rotation =60..180]
好了,接下来是基岩版了。
基岩版的垂直是:rx、rxm;基岩版的水平是:ry、rym
其实这些和r还有rm等指令一样,rx是指定最大不能超过几,rxm是指最小不能低于几。ry和rym同理。
其实目标选择器中这种重复情况或说是格式套用情况很常见,接下来我就不细讲同类的了。
(实体类型)
实体类型是type,和name一样,两个版本通用。
type是一个新的东西,它的意思是“类型”。所以这就能解释为什么是实体类型了。
type和name是差不多的,但是它的搜索范围不是通过名字,而是通过种类。比如一个玩家叫Notch,另一个玩家叫Herobrine,那么他们都是“玩家”种类的。比如这里有一只小猪,那里有一只成年猪,那么它们的种类都是猪。
所以通过type,可以锁定一种实体。比如玩家叫player,那么像下面这么写:
@e [type =player]
那么就是寻找所有实体中的玩家了(同@a)。
type仅用于@e,因为只有@e是包含非玩家实体的,type出现最大的原因就是@e的广泛性。比如你要锁定所有的村民(Villager),那么就得使用@e加type了。
type填的是实体的种类(英文),并且是全称。所以type是比较复杂的。要是一些常用的还好,如果是一些不常用的或者是英文名很长的,那么也就得上网查了。有时候还查不到......
哦,对了,type也支持感叹号格式。
对了提醒一下,name和type一样,都是不可重叠的,比如:
@e [type =cow, type =player]
像上面那样是不可以的,Minecraft中可没有既是牛又是玩家的动物。如果真有,那么也应该合并了,叫cow_player(牛人)也是可能的。
(实体的数据标签)
这个就是NBT,属于Java版独有。之前说过,NBT是很复杂的,属于大佬专用。到时候再来说。
(游戏进度)
这个是java版独有的。
还有这个也很复杂,难度仅次于NBT。
(predicate)
这个还是Java版独有,但是仍然也很复杂。
所以,这三个都是Java版独有,都是很复杂的筛选方式,以后再来说。
所以,这个章节已经快2000字了。
现在懂了吧。不懂可以多看几遍,多看看就会了,当时作者也是这样学过来的。
你以为这就结束了吗?
事实上,Mojang在1.13对JAVA指令进行了一场大更新,而原本JAVA的目标选择器也难逃一劫,变成了:
r、rm——合并成——distance
l、lm——合并成——level
m——变成——gamemode
rx、rxm——合并成——x_rotation
ry、rym——合并成——y_rotation
c——变成——limit