第一百五十七章 初识NPC
2016年8月29日,Mojang发布了携带版Albr /ha 0.16.0 build 1。在这个版本中,首次出现了一种新的实体——NPC(Non-Player Character非玩家角色)。这种实体具有一些村民的特性,比如胸前粘在一起的手和与村民一样的音效。但它们的外观相当不同,甚至还有非人哉的外观。
在随后的数次更新中,NPC逐渐拥有了与玩家对话、让玩家选择的能力。但这时候,NPC仍只能在教育版或打开了教育版模式的基岩版中发挥作用,这就使得它的使用受到了很大的限制。直到那个改变了整个Minecraft基岩版开发界的版本——
Minecraft:基岩版 1.16
由于GameTest(游戏测试)框架的引入、2018版脚本的放弃支持、一堆新指令的加入等等重大更改,可以肯定,基岩版1.16版本称得上是近些年来基岩版最重大的转折点。在之前你应该也已经注意到,许多新奇的基岩版指令往往就是在1.16版本加入。NPC虽然不是指令,但由于它和指令高度的关联性,因此也不例外。
1.16.0版本更新后,NPC终于能够独自在基岩版中使用而不需要开启教育版模式。并且随着官方加大力度更新GameTest框架,NPC可能将会在不久的将来成为基岩版行为包开发的重要一部分。所以,说了那么多,那么NPC到底如何生成、有什么用、又如何使用?
生成当然是及其简单的,你或许已经知道该如何生成:
①使用/summon nbr /c——直接使用summon指令生成
②使用/give @s sbr /awn_egg 1 51——获取NPC的刷怪蛋
现在,你应该已经生成出了一个NPC。让我们先观察一下这个NPC(图157-1)。
如无意外,你应该看到的是一位留有黑色长发、不知道是男是女、有大鼻子、斗鸡眼、穿着土色T-shirt和青色长裤、头上飘着一串黄色NPC的人。这就是NPC,或者更准确的说,这就是使用了默认皮肤的NPC。
NPC有许多皮肤。截止基岩版1.19.51版本,NPC已经拥有了多达60种皮肤。虽然NPC能够更改皮肤,但这并不意味着我们能够随便给NPC换皮肤,NPC可不是玩家。
NPC上方显示的名称就是NPC自己的名称。但NPC的名称比较特殊——在NPC的NBT里面,NPC的名称存储在NameTag标签里面,而并不是CustomName标签里。如果你并没有把之前章节的东西丢掉,你应该还记得CustomName标签的作用,也就是用来存储实体的名称。NPC的名称存储在另一个单独的标签内,就会引出一件麻烦事——使用重命名刷怪蛋或summon指令的方式都不能改变NPC自己的名称。只不过根据网上一些使用NPC做浮空字的教程来看,似乎在网易版,NPC的名字就是实体名字,但作者毕竟不玩网易好久了,自然也就无从验证。
现在,让我们打开NPC的界面(图157-2)。
NPC的GUI界面十分简单,仅由四个主要部分组成(顺序从上到下):
-名称输入框:可以更改NPC的名称,并且可以使用格式化代码§。最大可输入128个字符,但有效输入(也就是真正能够显示出来的)只有前32个字符。
-对话编辑按钮:这是一个按钮,按下去可以进入到另外一个界面,以编辑NPC与玩家的对话。
-皮肤选择栏:可以更改NPC的皮肤,左右的按钮可以翻页。
-高级设置按钮:这也是一个按钮,按下去也是可以进入到另外一个界面,在新的界面里可以为NPC添加指令。
需要注意,如果你发现你一打开NPC就只是个空白的对话界面,则说明你没有Worldbuilder(世界管理员)权限。这个权限不等于OP权限,默认情况下创造模式玩家会自动拥有这个权限,在开启教育版模式的情况下也可以通过/ability或/worldbuilder(/wb)指令手动赋予。总而言之,请你先将你的游戏模式调成创造模式,然后再打开NPC。
还需要注意,如果你左键(键鼠输入)或点击了NPC(不是长按),那么NPC将会被删除。现在由于NPC没有被编辑所以没什么,但当你已经弄好时不小心将它点没了,你估计会破口大骂Mojang为什么没有给Minecraft加入Ctrl+Z。特别是触控,十分容易误触!因此,我建议你勤劳一点,指令和对话先在外面写再复制到游戏中。
我们本章就重点来了解NPC的两部分:对话和高级设置。
按照顺序,让我们先来看看对话。
按下对话编辑按钮,我们就进入了一个空白的对话界面(图157-3)。
对话界面主要由两部分组成:NPC外貌的渲染图像和对话框。
由于是编辑模式,所以我们可以在对话框中直接输入一些东西。对话框最大可以输入1000字符(1.19.51版本作者实测),但Minecraft Wiki上却说最大是256字或在少数情况下是337字,更加离谱的是官方文档又说对话框有307字符的限制(时间为2022年12月29日)。所以——实践是检验真理的唯一标准,这句话永不过时。
回到正题,对话框就像是个文本编辑器一样。如果超出它的显示能力,它的右侧就会出现滚动条,你可以通过滚动对话框来继续编辑或阅读。
让我们尝试输入点东西,比如输入『你好!』,然后关闭对话编辑界面。需要注意,你应该已经注意到右上角有两个关闭按钮了。上面那个关闭按钮将会直接关闭整个界面,而下面那个关闭按钮仅仅只会关闭对话编辑界面然后返回到最初的编辑界面而已。放心,不管是哪个按钮,你在对话框内所写的任何东西都是不会丢失的,它可是实时保存的!
这就是编辑NPC对话的方式,其实相当简单。接下来让我们来看看NPC的高级设置。
按下『高级设置』按钮,你就来到了『高级NPC设置』界面(图157-4)。
这个界面看起来特别空,就写着两句话(单击此按钮在NPC对话框中添加命令。可以同时添加多个命令)和一个『添加命令』按钮。那如果点一下按钮呢?(图157-5)
在『添加命令』按钮的上方,原来的两行文字消失了,取而代之的是一块『命令』面板。在这个面板上,有一个命令输入框,输入框右边是一个大大的『+』按钮,下方是三个开关,从左到右分别是『按钮模式』、『进入时』和『退出时』,其中『退出时』已经打开。在面板的右上角,还有一个小型的垃圾桶按钮。
点击垃圾桶可以删除这个面板以及上面的所有设置。面板的核心部分——命令输入框——看起来和命令方块的很像。但两者有两个重大区别。首先,NPC的命令输入框最大只能输入1024个字符,但命令方块能够输入32767个。其次,NPC的命令输入框可以换行,每行都可以写一个指令,执行时会按照从上到下的顺序执行,而命令方块不能换行且只能写入一条指令。
输入框右边巨大的『+』,点击它可以放大输入框。但这输入框目前实测有一个问题——虽然上限是1024,但写的内容超出了界面之后竟然就无法往下滑,仅仅只显示个省略号。
下方的三个按钮,用途是设置上面的命令会在什么情况下触发运行。默认是『退出时』,即在退出对话界面时会触发运行。需要注意,还记得刚才提到退出界面有两个关闭按钮吗?如果你点击下面的关闭按钮来退出,那么指令会正常运行(除非你处于编辑模式);如果你点击上面的按钮退出,那么指令反而不会运行(BugJumbr /正常在线)(1.19.51版本实测)。
我们可以将指令的触发方式改成『进入时』或『按钮模式』。『进入时』,也就是玩家一打开NPC对话界面,就会触发指令运行,除非此时你处于编辑模式。『按钮模式』是一个比较特殊的触发方式,在你选择了这个模式之后,在三个按钮下方还会出现一个文本输入框,在这里你可以输入按钮显示的文本。这个文本输入框可以输入至多128个字符,但只有前16个字符才会真正有效显示出来。当你添加了触发方式为『按钮模式』的指令后,再打开对话界面,在『NPC的渲染图』和『对话框』下面将会出现一些按钮,上面显示着那些你自定义的文本(如果你啥也没写,按钮将不会显示任何文本)。点击这些按钮将会运行相应的指令,并且在指令运行完后对话窗口将自动关闭,如果此时还有设置退出时执行的指令,那这些指令也将会执行。
有趣的是,即使是在编辑模式下,你点击那些按钮,『按钮模式』的指令和『退出时』的指令(如果有)也能照常运行,这就省去了手动更改游戏模式的麻烦。
上面说到命令输入框可以换行,每行可以写一个指令,运行时从上到下运行。这时候可能就有问题了——如果有一行指令写错了会怎样?
答案是不会怎样,游戏会直接跳过这一行指令继续执行下去,直到没有指令可以执行。举个栗子:
give @initiator diamond 1 0
tellraw @initiator {“rawtext“:[{“text“:“§a您获得了一颗钻石!§r“}]}
WTF?!
say§e @initiator§r获得了一颗§b钻石§r!
当上面这些指令被运行时,你的聊天栏将会显示:
您已被给予钻石*1
您获得了一颗钻石!
[NPC]你的游戏名获得了一颗钻石!
NPC在运行到『WTF?!』一行,并没有因为『WTF?!』是错误的指令而停止执行,反而是连错误信息都不放一个就继续执行下去。
你应该注意到了,在上面的指令中,出现了一个奇怪的目标选择器:@initiator
什么是『@initiator』?它指代了什么东西?
让我们回想一下第四章『目标选择器』的内容,或许你能想起来在第四章曾讲到:
『@initiator——代指正在与该NPC交互的玩家[仅基岩版],不管这名玩家是否在交互时被杀死』
@initiator指代的就是正在和运行指令的NPC交互的玩家。这或许是目前最难记下来的目标选择器变量了吧。
回到这个『命令面板』上来。『命令面板』并不能无限制添加,一个NPC最多就只能添加6个『命令面板』。但考虑到一个『命令面板』就可以放下来许多条命令,实际上没什么影响。
现在,我们已经知道了如何获得和使用NPC。但是,如果我们要把NPC投入实践,我们就不得不面对一个问题:NPC会不会被击杀?
这个问题的答案肯定是能的,你只需要用一些方法将NPC推下虚空(它们还是会受重力影响的),然后NPC就会死亡。
我们需要对这个问题作出一些限制,也就是:NPC能否通过正常手段击杀?
这个问题的答案是『不能』。NPC可以免疫几乎一切的伤害,包括——摔落、爆炸、生物攻击、玩家攻击、火焰灼烧、冰冻、窒息、药水效果等等等。基本上,NPC对于没有权限的玩家来说不可击杀。
因此,放心使用NPC,官方出品的怎么可能会是不保险的呢?虽然Mojang确实搞出过很多不保险的东西。
这就是本章的全部内容,但这仅仅是NPC的冰山一角。我们将在以后了解到更多有关于NPC的内容。
————历史————
-携带版/基岩版
0.16.0——加入又移除了NPC,但没有完全移除。
1.0.0——重新加入了NPC。
1.8.0——能够使用/summon指令生成NPC了。
1.10.0——现在不能使用/summon指令生成NPC,但NPC现在有功能了。
1.12.0——现在NPC又没功能了。
1.16.0——现在能够获取到NPC的刷怪蛋,也能够使用/summon指令生成,同时NPC又有功能了。NPC也不再是只有20点生命值。
1.18/1.19——加入了一堆皮肤
-教育版
1.0——加入了NPC
1.14/1.18——加入了一堆皮肤