基本的なプラグインの処理と簡単なコマンドを実装してみる – Bukkit/Spigot プラグイン解説 part 2

スポンサーリンク

プラグイン起動時・終了時の処理

下記記載の内容は決まり文句だと思ってください。

・起動時の処理はonEnable() に記載する

・終了時の処理はonDisable()に記載する

ということです。

プラグイン起動時の処理

@Override
public void onEnable() {
getLogger().info("SamplePluginが起動しました。");
}

コンソールにメッセージを表示する際は上のようにgetLogger().info()を使用します。

次に同じように終了時の処理を書いていきましょう。

プラグイン終了時の処理

@Override
public void onDisable() {
getLogger().info("SamplePluginが終了しました。");
}

こちらも同じようにgetLogger().info()を使うだけです。

getLogger().info()を使う理由

getLogger().info()を使う理由についてはプラグインがコンソールに出力する際にプラグイン名を表示してくれるからなんです。

System.out.println()だと確かにコンソールに文字の出力はできますが、プラグイン名を出力できないので、getLogger().info()を使用しています。

他のgetLogger()

これは別に覚えなくても良いですが、getLogger().info()の他に

getLogger().warning()

というものがあります。

これの違いは、コンソールにメッセージを表示する際に”[INFO]”と表示されるか[WARN]と表示されるかの違いになります。

使い方に関してはgetLogger.info()と同じですが、重大なエラーの時にメッセージを表示するときに使用すると良いと思います。

コマンドの実装

コマンドの実装は簡単です。

コマンドを実装するには以下のプログラムを書きます。

@Override
    public boolean onCommand(CommandSender sender,Command command,String label,String[] args) {
        if ((command.getName().equalsIgnoreCase("test"))) {
            getLogger().info("コマンド:testが実行されたよ!");
            return true;
        }
        return false;
    }

上記プログラムはほとんど決まり文句になります。

変えられるところといえばonCommandというメゾッド名、それ以外の変数名(型は変えちゃだめですよ)それぐらいになります。

あとは今回実装しているコマンドは”test”というコマンドになります。

ということでif文の中にある構文はtestというコマンドが実行されたら動作する部分と言うことになります。

return true;をしているのはメゾットの定義をboolean型でしているからであって、if文の中が正しく読み込まれたのであればboolean型のtrueを返してあげるという意味になります。

return false;があるのは、コマンドが実行されているわけではないので、何もしないと言う意味でfalseを返してあげます。

equalsIgnoreCaseとは?
equalsIgnoreCaseとは、equalsと同じで文字を比較しているのですが、
文字の大文字、小文字を比較しない関数となっています。
ということで構文内には”test”と書いているので、コマンドで/testと入力すればもちろん動作しますが、equalsIgnoreCaseを使用すると”TEST”や”TeSt”などといった大文字や大文字と小文字の混じったコマンドでもtestというコマンドが実行されたということにすることができます。

plugin.ymlへの記述

上記のプログラムを書いただけではコマンドは動作しません。

なぜならどのプラグインがどのコマンドを実行できるかを定義していないからです。

ということで認識させるために、plugin.ymlに記述をしていきます。

以下の内容を追記してください。

commands: 
  test:

これでコマンドを実装することができます。

plugin.ymlに記述をしても動かない場合は以下の内容を確認してください。
・スペルミスが無いか
・Overrideからの構文に誤りがないか
・plugin.ymlのインデント(空白)がしっかりしているか。
※”commands:”を記載する前に空白などがあると機能しません。
といった感じでコマンドを実装することができます。

最後に

いかがだったでしょうか。

この記事が参考になれば嬉しいです。

解説してほしいプラグインの内容、ここがわからない!とかがあれば分かる範囲で答えるので、コメントをよろしくおねがいします。

次回予告

コマンドの細かい処理をしてみる ~ サーバー参加時・退出時のメッセージを変更する

この記事を書いた人

Javaなどをメインにプログラムを組んでいるritoです。
CosgyDevで適当に働いてます((
ブログを書きながらサーバープログラムを書いています。
好きなことはパソコンで、ハードオフ巡りが趣味だったりします。

ritoをフォローする
Bukkit/Spigotプラグイン
スポンサーリンク
ritoをフォローする
りとブログ

コメント

タイトルとURLをコピーしました