PaperMCは、クライアントに何もインストールすることなく、小さなプラグインでMinecraftのサーバー側を拡張するためのシンプルな基盤を提供します。プラグインを開発する際には、プレイヤーに動的な情報をどのように表示するかという問題が生じます。その答えは、見落とされがちなバニラ機能、ボスバーにあります。元々はエンドボス向けに設計されたボスバーですが、ミニマルな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 表示可能なユニットは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");
ボスバーは最大5つまで同時に積み重ねることができ、複雑なHUDシステムを構築できます。バーをほぼ見えなくするには、進行状況を…に設定します。 0.0001 – タイトルは表示されたままですが、プログレスバーは消えます。そのため、ボスバーはゲームの雰囲気を盛り上げる上で過小評価されているツールです。特にホラーやサバイバルゲームでは、プレイヤーに具体的な数字を明かすことなく状況を示唆するために使用できます。
このようなメカニズムを効率的に実装するには、プラグインの構造を定義する小さなボイラープレートを使用することをお勧めします。リポジトリには、Gradle設定に加えて、ローカル環境と本番環境用のビルドスクリプト、カスタム武器とリソースパックのサンプルも含まれています。これにより、パッケージング、サーバー設定、デプロイメントの詳細を毎回気にする必要がなく、新しいHUDのアイデアをすぐに試すことができます。