我的世界 Boss 栏

PaperMC为 Minecraft 服务器端扩展提供了一个简单的基础,无需客户端安装任何插件即可使用小型插件。开发插件时,如何向玩家显示动态信息就成了一个问题。答案就藏在一个经常被忽略的原版功能中: Boss 状态栏。Boss 状态栏最初是为末地 Boss 设计的,但也可以重新利用,用作极简的 HUD。


与其解释数字,不如使用简洁的状态信息来传达感受。这种方式通常比传统的记分板或聊天消息更有效。Bossbar API 的功能非常强大:颜色、样式和进度都可以动态更改。与记分板不同,Bossbar 会低调地显示在屏幕顶部。

BossBar bar = Bukkit.createBossBar("", BarColor.BLUE, BarStyle.SOLID);
bar.addPlayer(player);

示例 1:温度显示: 摄氏度值被归一化到 0-1 的范围内,颜色也相应地被选择:蓝色代表寒冷,绿色代表舒适,红色代表炎热。:

bar.setTitle(String.format("🌡 %.0f°C", celsius));
bar.setProgress((celsius + 20) / 60.0);
bar.setColor(celsius < 10 ? BarColor.BLUE : celsius < 30 ? BarColor.GREEN : BarColor.RED);

例2:水下氧气: 分段显示非常适合显示离散值,例如呼吸次数。 SEGMENTED_10 您有十个可见单元:

bar.setTitle("💨 Sauerstoff");
bar.setStyle(BarStyle.SEGMENTED_10);
bar.setProgress(player.getRemainingAir() / 300.0);

示例 3:脉动恐惧条: 正弦波会使进度呈现有节奏的波动。 BukkitRunnable 这能营造出生动的效果。:

double pulse = 0.5 + 0.5 * Math.sin(phase);
bar.setProgress(fearLevel * pulse);
bar.setTitle(fearLevel > 0.7 ? "💀 GEFAHR" : "👁 Unruhe");

你可以同时叠加最多五个 Boss 进度条,从而实现复杂的 HUD 系统。要让进度条几乎隐形,你可以将进度设置为…… 0.0001 – 标题仍然可见,但进度条消失了。因此,Boss进度条是营造游戏氛围的一种被低估的工具。尤其是在恐怖或生存类游戏中,它可以用来暗示局势,而无需向玩家透露具体的数值。

为了高效地实现这些机制,我建议使用我编写的小型样板代码,它定义了插件的结构。除了 Gradle 配置之外,该仓库还包含本地和生产环境的构建脚本,以及自定义武器和资源包的示例。这样,您可以快速尝试新的 HUD 设计理念,而无需每次都处理打包、服务器设置和部署等细节。

背部