第189章 ,/.

而且由于一个实体可以具有多个标签,所以你可以使用多个type参数指定多个标签来筛选。

比如@e[type=#minecraft:skeletons,type=#minecraft:freeze_immune_entity_types],这就可以选择同时具有freeze_immune_entity_types和skeletons标签的实体,即流浪者。

你还可以在#前面加上!来实现『不选择具有指定标签实体』的功能。比如@e[type=#minecraft:skeletons,type=!#minecraft:freeze_immune_entity_types],这就将会排除流浪者,只会选择普通骷髅和凋零骷髅。

只不过和family参数一样,目前Mojang给原版实体添加的标签还太少了。但别担心,因为你不仅仅可以使用实体的标签,你还可以使用函数、方块和物品的标签。

比如在指令clear中,你就可以这样子:

/clear @a #minecraft:buttons

这将会清除所有玩家背包中的按钮,不管是什么按钮都行。

也比如在指令execute中,你就可以这样子:

/execute at @a if block ~~-1 ~#minecraft:snow run kill @s

这将会使得所有脚下踩着雪的玩家死亡,不管这个雪是顶层雪还是雪块还是什么其他类型的雪。

(这个execute指令的语法是第八卷,也就是下一卷的内容,我们很快就会学习其具体的用法了)

只不过Mojang太懒了,导致在原版中,即使是方块和物品,标签也是太少,发挥不了很大的作用。

那怎么办?装Forge啊!

Forge为原版提供了许多有用的标签,虽然这些主要用途是像矿物词典那样帮助模组互通,但我们指令也是可以用的。

比如使用Forge提供的矿物锭标签,就可以实现检测一个玩家背包内所有类型锭的数量:

/execute as @a store result score @s ingot_count run clear @s #forge:ingots 0

这条指令将会将所有玩家背包内任何类型锭的总数量以分数的形式存储在玩家自己的ingot_count计分板中。

所以这就是本章的全部内容了,Have you learned it?