第一百一十三章 实体的通用标签 下
在Java版中,怎样制作出一个真正的浮空字?
这就要联系到Minecraft中有哪些东西可以产生浮空字了。
在本书第二章介绍命令方块时,有提到虽然命令方块可以产生浮空字,但你并不指望能拿这东西做浮空字。
因为以下两个原因:
1.浮空字是一直显示的,但是命令方块的浮空字只能在你指向那个命令方块时才能出现。
2.浮空字就是浮空字,没有显示出额外的东西。但是命令方块它本身就是一个方块,无法变成透明的(除非你用了材质包)。
那是否有其他方法?
当你给一个实体命名,然后指针指向这实体,就会看到实体的名字以浮空字的形式显示了出来。
但这个浮空字仍然不能拿来用,因为它只能在指针指向实体的时候才出现。
那么真的就没有办法了吗?
别忘记了,玩家也是实体,名字也是浮空的,但它就是不会消失。
这是为什么?
就是因为『CustomNameVisible』这个标签。
CustomNameVisible标签的数据类型是Byte字节型(整型中的一种),值是一个布尔值。当为0(false)的时候,这个实体的自定义名字就只能在你指向这个实体的时候出现;当为1(true)的时候,这个名字就会一直显示了!
所以说,只要生成一个CustomNameVisible为1的盔甲架,就可以制作浮空字了?比如:
/summon armor_stand ~~~{CustomNameVisible:1}
WOW,生成出来了一个头上悬浮着『盔甲架』的盔甲架!
没错!浮空字就是这么制作的!
但好像还少了些什么......如何自定义浮空字的内容呢?这个浮空字为什么会掉下来呢?盔甲架怎么隐藏呢?况且这个浮空字打几下就没了。
为了解决这三个问题,我们需要继续了解实体的通用NBT。
自定义浮空字内容很简单,我们有两种办法:
①使用命名牌给盔甲架命名
②使用NBT
实体NBT中的CustomName标签的数据类型是文本『String字符串』,用于储存这个实体的自定义名称。比如:
/summon armor_stand ~~~{CustomName:“Exbr /lodingTNT“,CustomNameVisible:1}
\\适用于Java1.13以下版本\\
/summon armor_stand ~~~{CustomName:“\“Exbr /lodingTNT\““,CustomNameVisible:1}
\\适用于Java1.13及以上版本\\
这就可以生成一个一直显示着『Exbr /lodingTNT』的盔甲架。需要注意,对于Java1.13及以上版本来说,CustomName的值需要使用JSON文本。
防止浮空字掉下来很简单,把实体的『NoGravity』设置为1就行了嘛。
NoGravity标签的数据类型是Byte字节型,它控制着实体是否能够运动。如果为0(false),那么实体怎么奔放都可以。如果为1,那么Motion就会失效(虽然仍然在奔放),也就是这个实体它失去了速度。
用通俗易懂的语言来讲,就是组成这个实体的原子,已经完全没有了能量。我们由此可以得出一个结论:
一个NoGravity为1的实体,它的温度是绝对零度(滑稽)。
将这个实体的温度降到绝对零度之后,我们就要开始对它的防御动手,让它变成一个永远无法被生存、冒险玩家击败的实体(创造模式玩家除外)。
关系到这个实体是否无敌的标签是Invulnerable(数据类型也是Byte字节型)。一般的实体Invulnerable为0,如果设为1,那么你就别想不使用作弊并在生存模式中去击败它了。
现在,我们这个浮空字基本上是完工......等等,我们还没把盔甲架隐藏呢!
怎么使得一个实体隐藏呢?使用隐身药水吗?或是一个能够使得实体隐形的NBT?
最好是有一个实体通用NBT标签能够有让实体隐形的效果,可惜的是,并没有。
但这不代表盔甲架没有。让我们回忆一下第九十六章番外的内容:
『Invisible——如果指定这个标签的值为1,在指令执行成功后如果你发现盔甲架似乎并没有生成,并不是出了BUG,而是盔甲架处于隐形状态(浮空字就是用这东西做出来的)』
唉,这不就有了吗,让我们试一试:
/summon armor_stand ~~~{Invisible:1,Invulnerable:1,NoGravity:1,CustomName:“\“Exbr /lodingTNT\““,CustomNameVisible:1}
\\适用于Java1.13及以上版本\\
这会召唤一个『隐形的、无敌的、不会移动的、叫做「Exbr /lodingTNT」的、一直显示实体名称的』盔甲架。没错!这就是浮空字!
现在这个浮空字已经真正浮空了。如果你有兴趣去看它的NBT,就会发现其中有一个OnGround标签,其值为0b。
这个标签是干啥的呢?就是用来检测实体有没有接触地面,接触了为1(true),没接触为0(false)。
到这实体的通用标签已经快完了,只剩下一点点:
Silent——这个实体是否会发出声音
Glowing——这个实体会不会发光
Tags——实体的记分板标签数据
HasVisualFire——实体是否看起来处于着火状态
Silent标签的数据类型为Byte字节型,值为1则实体不会发出声音,为0则会发出声音。
Glowing标签数据类型也是Byte字节型,但它的作用看起来有点奇怪——实体会发光?
如果你不是一位JVAV玩家,那你一定知道Minecraft有一个叫作『光灵箭』的东西。当光灵箭射中一个实体时,那个实体就会发光一阵,而且隔着墙壁都可以看到。
实体为什么会发光呢?除了实体被附上了『发光』效果之外,就是这个Glowing标签在起作用。当Glowing标签为1时,实体就会发光,为0则不会。
HasVisualFire标签的数据类型也是Byte字节型,值为布尔值。当它的值为1时,实体就会“燃起来”,但不会真的受到伤害。
Tags标签的数据类型为文本列表(String字符串列表),用来储存该实体所拥有的记分板标签。比如:
/summon armor_stand ~~~{Tags:[“A“,“B“]}
这将会生成一个带有标签『A』和『B』的盔甲架。
本章到此为止。