Skip to content

Latest commit

 

History

History
76 lines (52 loc) · 2.39 KB

5-2.md

File metadata and controls

76 lines (52 loc) · 2.39 KB

5-2 进度条

这一节的内容也相当简单。

虽然这一节叫做进度条,但我们指的是 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 中的颜色,可能的值包括 PINKBLUEREDGREENYELLOWPURPLE 以及 WHITE
  • 第三个是是否分段,只能取 BarStyle 中的值,可能的值包括 SOLIDSEGMENTED_6SEGMENTED_10SEGMENTED_12SEGMENTED_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 方法,这里就不列出了。


很简单,对吧?但是,这些内容很有用。