Minecraftサーバーを動かす知識

アクションバーにメッセージを表示する

投稿:  By: HimaJyun

ここではアクションバーにメッセージを表示する方法を解説します。

タイトルと合わせて使いこなすと非常に役に立つので覚えておきましょう。

スポンサーリンク

アクションバーってなに?

アクションバーとは、早い話がアイテムを切り替えた時に表示されるアイテム名の部分です。
/bukkit/development/tips/show-actionbar-message/001.png

このメッセージ、実はなんでも表示できるんです!

ただ、アクションバーにメッセージを表示するのは少し変なAPIを使う必要があるので気付いていない人は少なくない。

アクションバーの使い方

アクションバーの送信にはorg.bukkit.entity.Player.SpigotsendMessage(ChatMessageType, BaseComponent...)メソッドを使用する必要があります。

org.bukkit.entity.Player.SpigotPlayer.spigot()メソッドを呼び出すと得られます。

ChatMessageTypeにはChatMessageType.ACTION_BARを指定しましょう。

BaseComponentTextComponent.fromLegacyText(String)TextComponent.setText(String)で作成する必要があります。

fromLegacyTextは色コードを含むメッセージが利用できます。TextComponent.setText(String)の場合は文字と装飾を別々に設定する必要があります。

文章で説明すると難しく感じるかもしれませんが、実際は簡単です。

// 送信する相手
Player player;
// 送信したいメッセージ
String message = "ActionBar!!";

// Stringでは送れません、TextComponentを作成しましょう
TextComponent component = new TextComponent();
component.setText(message);
// 色コードを使用する場合はfromLegacyTextを使用しましょう
// ちなみに、fromLegacyTextが返す値はBaseComponent[](BaseComponentの配列)なので要注意
//BaseComponent[] component = TextComponent.fromLegacyText(message);

// アクションバーのメッセージ送信はコレ!
// ChatMessageType.ACTION_BARを指定しましょう
player.spigot().sendMessage(ChatMessageType.ACTION_BAR,component);

TextComponentで送らなければならない、というのが注意点です。

使い勝手がsendMessagesendTitleと大幅に異なるので最初のうちは慣れないかもしれません。

アクションバーの欠点

タイトルでは表示時間を設定できますが、アクションバーでは設定できません。

長文を表示させるとユーザーが文章を読み終える前に表示が消えてしまう可能性があるので注意しましょう。

また、ログの履歴にも残らないので重要な情報を表示するのには適しません。

逆に言えば、ログの履歴を汚さないので、さほど重要ではないが頻度の多い情報を表示するのには最適です。

実際に、ChestSafeプラグインではチェストの所有者情報を表示するのに利用しています。

上手く使えばとても便利な機能なので、使いどころを見極めて使いましょう。

余談: タイトルを表示する方法

タイトルの表示はsendTitleです。

player.sendTitle("Title","Subtitle",10,70,20);

タイトル、サブタイトル、アクションバーのすべてを使うとかなりの情報が画面上に表示できます。

この3つはかなり目立つところに表示されるので、確実に伝えたい情報を伝えるためにも役立ちます。(チャットだとサーバーが賑わっている時に流れていく可能性がありますよ!)

ThisWorldなどの実際の活用例を参考に有効活用しましょう。

動作確認用のソースコードはGitHubに掲載しているので、参考にしてみてください。