第一中文网

第四章 目标选择器 (第1/1页)

天才一秒记住【第一中文网】地址:www.dyzww.cc

(本章写作时作者使用的是Java1.12.2、1.17.1和基岩1.17.0)

这里有一只牛。

我们要用指令锁定这头牛。

但怎么锁定呢?

你在命令方块界面可能见到过这段话:

用“@p”来代表最近的玩家

用“@r”来代表随机玩家

用“@a”来代表全部玩家

用“@e”来代表全部实体

用“@s”来代表执行实体

(这段话在Java新版本被移除了)

这段话中所讲的东西,就是指令中常见的一个参数类型:目标选择器。

目标选择器,顾名思义就是选择目标,而目标就是minecraft中的“实体”。不懂实体是什么?minecraft wiki对实体的定义是:『包括在minecraft中所有动态的、移动中的对象』。简单且不严谨地来说,实体指的是非方块的东西,比如玩家、生物等都是,还有例如掉落的方块、点燃的tNt也是实体。

目标选择器的本质就是通过一系列的参数指定筛选的条件,然后游戏根据给出的条件对所有实体进行筛选,进而得到指令执行的作用目标。通过目标选择器,我们可以指定指令执行时所产生的效果会在哪些实体上奏效。比如我们一开始就提到的\/kill指令,这条指令就可以使用目标选择器来选择哪些实体会被杀死。

实际上我们也可以不用目标选择器指定目标,反而使用玩家名称或实体UUId(UUId是一串很长且随机生成的字符串,每个minecraft实体都有一个唯一的UUId以便游戏区分)。但这两个东西,一方面效率低下,另一方面不能自动化。下面就是一个例子:

假设此时有一名玩家,其名称叫做“JIE灬挥刀乱砍”(如有同名,纯属巧合),玩家UUId是“5409be4a-6333-4912-ab5b-ccbfe3c“。如果他想要用指令给自己一个钻石块,还不用目标选择器指定,就要这么写:

\/give JIE灬挥刀乱砍 mand_block

或者是这样写:

\/give 5409be4a-6333-4912-ab5b-ccbfe3c mand_block

使用目标选择器,只需要:

\/give @s mand_block

其中,@s就代指了执行该指令的实体。

命令方块中的介绍有点过于简单,还是得具体介绍一下:

@p——代指距离执行地点最近的玩家,包括死亡玩家,如果没有执行地点,默认是主世界坐标(0,0,0)的地方,一般来说这种情况只会在服务器控制台执行指令时出现。关于坐标会在下一章讲到。

@s——代指执行指令者,不管执行指令者是否已经死亡。如果执行指令者不是个实体,比如是个命令方块,那么将会什么也不会发生。

@a——代指所有玩家,包括已经死亡的玩家

@r——随机选择一位玩家,包括已经死亡的玩家

@e——代指所有实体,不包括已死亡实体

@c——代指自己的吉祥物[仅教育版]

@v——代指所有吉祥物[仅教育版]

@initiator——代指正在与该Npc交互的玩家[仅基岩版],不管这名玩家是否在交互时被杀死

最后一个@initiator是一个比较新奇的东西,它无法用在除基岩版Npc以外的地方,关于基岩版的Npc以后的章节会讲到。

如遇章节错误,请点击报错(无需登陆)

新书推荐

都市超品仙医 活在两个世界 大秦:这个太子总想着造反 与其说瞎话不如 穿越万界:神功自动满级 诛神乾坤 多子多福,仙女都被他抢了怎么办