第八十四章 bossbar-自定义boss栏 下

(此章节已于2022年7月22日重写)

在上一个章节,我们创建了一个id为minecraft:server_owner,叫做『腐竹』的boss栏。这个boss栏是粉色的,分成20段,最大值为20。虽然看起来很厉害,但有一个问题——这个boss栏没有实际用处。

所以在这一个章节,我们要让这个boss栏发挥出实际的用处,使得服主的血量能够实时反映到这个boss栏上。

既然要能够实时反映,我们就要解决两个问题:

1如何实时获取到服主的血量

2如何将服主的血量存储到boss栏的值中

首先来看第一个问题,这个问题其实很好解决,我们有两种简单的办法:1使用nbt标签,直接获取2创建一个health准则的计分项,然后获取服主在这个计分项上的值

第一个方法我们暂且没有学过,但第二个你总该会吧?让我们来试一试:

\/scoreboard objectives add health health

这将会创建一个health准则的叫做health的计分项,然后你就不用管了,游戏会自动把每个玩家的血量存储到这个计分项上。让我们来看一看游戏弄得如何:

\/scoreboard objectives setdisy sidebar health

这将会在右侧边栏显示出health计分项,然后你会发现——怎么空空如也?zuqi.org 葡萄小说网

其实游戏仅仅会在玩家血量变化的时候记录血量的值到计分板上,由于此时计分项才刚创建,还没有任何一名玩家的血量发生变化,计分项自然就空空如也。你可以尝试摔一次跤,正常情况下右边就会正确显示出你的血量。

计分项弄好后,我们就可以通过以下指令获取到服主的血量:

\/scoreboard yers get fuzhu health

(其中,fuzhu代表服主的游戏名称)

第一个问题就这样解决了,但还有第二个问题:如何将服主的血量存储到boss栏的值中

在这边,我们就得使用execute存储子命令的bossbar子命令,其格式如下:

... store <返回类型> bossbar <id>(value|max)...

id参数,也就是要存储到的boss栏的id;『(value|max)』参数,也就让你选择要将返回的结果存储到该boss栏的值还是最大值中。在这边我们当然是要存储到值(value)中,也就是使用如下指令:

\/execute store result bossbar minecraft:server_owner value run scoreboard yers get fuzhu health

上面的指令将会把『scoreboard yers get fuzhu health』返回的结果,也就是服主的血量,存储到id为『minecraft:server_owner』的boss栏的值中,这样子boss栏就可以显示出服主当前的血量了!

我们只需要将这条指令放入一个一直重复执行的命令方块中,就可以实现『服主的血量实时反映到这个boss栏』这样的效果。

最后我留个作业,你感兴趣的话可以尝试实现实现。

作业内容:在本章内容的基础上,利用所学知识,实现下面描述的效果

1如果服主不在线,隐藏boss栏,在线的情况下再显示出来。

2服主周围一定范围内的玩家会看到『腐竹boss栏』,超出这个范围的玩家则无法看到

3在服主自己的血量上限提升的情况下(比如有伤害吸收或生命提升的药水效果),也要相应提升boss栏的最大值

其中,第三点要完美实现的话需要一定的nbt知识,如果你并不不了解,也可以用计分板做一个勉勉强强的效果出来。

这就是本章的全部内容。

上一章目录+书架下一章