这一节的内容也相当简单。
虽然这一节叫做进度条,但我们指的是 BOSS 血条(BossBar
),在抵御袭击,对抗末影龙,迎战凋灵时你都见到过。实际上这并不是它们的专利,BossBar
是一个很合适用于进度条的组件,适合用来编写 GUI。
BossBar
和之前的配方一样,需要一个独特的 NamespacedKey
。
进度条的创建和物品栏差不多:
BossBar bossBar = Bukkit.createBossBar(
new NamespacedKey(<插件主类名>.instance, "a_interesting_bar"),
"标题",
BarColor.PINK,
BarStyle.SOLID,
BarFlag.CREATE_FOG
);
- 第一个是标题,和箱子 GUI 一样,可以通过标题识别进度条
- 第二个是颜色,只能使用
BarColor
中的颜色,可能的值包括PINK
、BLUE
、RED
、GREEN
、YELLOW
、PURPLE
以及WHITE
- 第三个是是否分段,只能取
BarStyle
中的值,可能的值包括SOLID
、SEGMENTED_6
、SEGMENTED_10
、SEGMENTED_12
、SEGMENTED_20
- 后面可以添加不止一个
BarFlag
,只能取BarFlag
中的值。可以只写一个,也可以写全部,可能的值包括DARKEN_SKY
(天空昏暗)、PLAY_BOSS_MUSIC
(播放 BOSS 音效)和CREATE_FOG
(创建迷雾)
创建好 BossBar
后就可以向玩家显示:
bossBar.addPlayer(Objects.requireNonNull(Bukkit.getPlayer("RarityEG")));
这里用 requireNonNull
是因为 getPlayer
可能返回 null
。
此外,我们还可以设置 BossBar
的进度:
bossBar.setProgress(0.8); // 80%
另外还可以用 setVisible
设置显示与否:
bossBar.setVisible(false); // false 隐藏,true 显示
有时候你可能会想临时添加一些 BarFlag
:
bossBar.addFlag(BarFlag.PLAY_BOSS_MUSIC);
// 对应的 remove 方法
bossBar.removeFlag(BarFlag.PLAY_BOSS_MUSIC);
可以使用 setColor
来改变颜色,这对于那些需要变色的进度条很有用:
bossBar.setColor(BarColor.GREEN);
不想继续向某个玩家显示:
bossBar.removePlayer(Objects.requireNonNull(Bukkit.getPlayer("RarityEG")));
重新设置标题,例如当需要显示数值时:
bossBar.setTitle("ThatRarityEG --- 85%");
这里的每个 setXXX
方法都有对应的 getXXX
方法,这里就不列出了。
很简单,对吧?但是,这些内容很有用。