在Java版中,怎样制作出一个真正的浮空字?
这就要联系到minecraft中有哪些东西可以产生浮空字了。
在本书第二章介绍命令方块时,有提到虽然命令方块可以产生浮空字,但你并不指望能拿这东西做浮空字。
因为以下两个原因:
1.浮空字是一直显示的,但是命令方块的浮空字只能在你指向那个命令方块时才能出现。
2.浮空字就是浮空字,没有显示出额外的东西。但是命令方块它本身就是一个方块,无法变成透明的(除非你用了材质包)。
那是否有其他方法?
当你给一个实体命名,然后指针指向这实体,就会看到实体的名字以浮空字的形式显示了出来。
但这个浮空字仍然不能拿来用,因为它只能在指针指向实体的时候才出现。
那么真的就没有办法了吗?
别忘记了,玩家也是实体,名字也是浮空的,但它就是不会消失。
这是为什么?
就是因为『customNameVisible』这个标签。
customNameVisible标签的数据类型是byte字节型(整型中的一种),值是一个布尔值。当为0(false)的时候,这个实体的自定义名字就只能在你指向这个实体的时候出现;当为1(true)的时候,这个名字就会一直显示了!
所以说,只要生成一个customNameVisible为1的盔甲架,就可以制作浮空字了?比如:
\/summon armor_stand ~~~{customNameVisible:1}
wow,生成出来了一个头上悬浮着『盔甲架』的盔甲架!
没错!浮空字就是这么制作的!
但好像还少了些什么......如何自定义浮空字的内容呢?这个浮空字为什么会掉下来呢?盔甲架怎么隐藏呢?况且这个浮空字打几下就没了。
为了解决这三个问题,我们需要继续了解实体的通用Nbt。
自定义浮空字内容很简单,我们有两种办法:
1使用命名牌给盔甲架命名
2使用Nbt
实体Nbt中的customName标签的数据类型是文本『String字符串』,用于储存这个实体的自定义名称。比如:
\/summon armor_stand ~~~{customName:“ExplodingtNt“,customNameVisible:1}
\\\\适用于Java1.13以下版本\\\\
\/summon armor_stand ~~~{customName:“\\“ExplodingtNt\\““,customNameVisible:1}
\\\\适用于Java1.13及以上版本\\\\
这就可以生成一个一直显示着『ExplodingtNt』的盔甲架。需要注意,对于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:“\\“ExplodingtNt\\““,customNameVisible:1}
\\\\适用于Java1.13及以上版本\\\\
这会召唤一个『隐形的、无敌的、不会移动的、叫做「ExplodingtNt」的、一直显示实体名称的』盔甲架。没错!这就是浮空字!
现在这个浮空字已经真正浮空了。如果你有兴趣去看它的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』的盔甲架。
本章到此为止。