見出し画像

Minecraftのサーバープラグインを作る(2) ~名前を変える編~

環境

Minecraft 1.18.1
Spigot Server
Intellij IDEA Community Edition

今回の実装するコマンド

 Tabやチャットでの名前を変更する。
これは簡単で、Playerの三つのパラメーターをいじるだけ。

player.setCustomName(args[1]+"...?");
player.setDisplayName(args[1]+"...?");
player.setPlayerListName(args[1]+"...?");

playerはPlayerの変数です。
前回と同じように、fakeであることが分かるように「…?」を付けるようにします。

それぞれいくつかの名前部分をいじっています。

コマンドは「/fakename < PlayerName > < FakeName >」

Player pl = Bukkit.getPlayer(args[0]);
if (pl != null) {

    pl.setCustomName(args[1]+"...?");
    pl.setDisplayName(args[1]+"...?");
    pl.setPlayerListName(args[1]+"...?");

    if (sender.getName() == pl.getName()) {

        pl.sendMessage("------------------------------\n" +
                GREEN + "Command succeeded: The "+ pl.getName() +"\'s name changes to " + args[1]+"...?" +"." + RESET + "\n" +
                "------------------------------");
        return true;

    } else {

        sender.sendMessage("------------------------------\n" +
                GREEN + "Command succeeded: " + pl.getName() + "\'s name changes to " + args[1]+"...?" +"."+ RESET + "\n" +
                "------------------------------");
        pl.sendMessage("------------------------------\n" +
                GREEN + "Command succeeded: " + pl.getName() + "\'s name changes to " + args[1]+"...?" + " by " + sender.getName() + "." + RESET + "\n" +
                "------------------------------");
        return true;

    }

} else {

    sender.sendMessage("------------------------------\n" +
            RED + "Error: No such player exists." + RESET + "\n" +
            "usage: /fakename < PlayerName > < fakename >\n" +
            "description: You can set a fake name using the name of another user.\n" +
            "------------------------------");
    return true;

}

今回のコマンドです。

Player pl = Bukkit.getPlayer(args[0]);

この部分でまず引数に与えられた名前部分(String)をBukkit.getPlayerでPlayerにしてます。plにPlayer情報が格納されることになります。

その後、plにしっかりと情報が格納されているか、言い換えれば、その鯖内に現在そのプレイヤーがいるかどうかを確認しています。plがnullになるのは鯖内にその人がいない時です。

player.setCustomName(args[1]+"...?");
player.setDisplayName(args[1]+"...?");
player.setPlayerListName(args[1]+"...?");

その後にここで設定をしています。

if (sender.getName() == pl.getName()) {

        pl.sendMessage("------------------------------\n" +
                GREEN + "Command succeeded: The "+ pl.getName() +"\'s name changes to " + args[1]+"...?" +"." + RESET + "\n" +
                "------------------------------");
        return true;

    } else {

        sender.sendMessage("------------------------------\n" +
                GREEN + "Command succeeded: " + pl.getName() + "\'s name changes to " + args[1]+"...?" +"."+ RESET + "\n" +
                "------------------------------");
        pl.sendMessage("------------------------------\n" +
                GREEN + "Command succeeded: " + pl.getName() + "\'s name changes to " + args[1]+"...?" + " by " + sender.getName() + "." + RESET + "\n" +
                "------------------------------");
        return true;

    }

この部分では、成功のフィードバックをコマンドの実行者と対象者で相手が同じかどうかでフィードバックを変えています。

というそれだけの簡単なプログラムです。

} else {

    sender.sendMessage("------------------------------\n" +
            RED + "Error: No such player exists." + RESET + "\n" +
            "usage: /fakename < PlayerName > < fakename >\n" +
            "description: You can set a fake name using the name of another user.\n" +
            "------------------------------");
    return true;

}

ここではplがnullの時の処理をしています。

それだけです。以上です。

では楽しいプラグイン作成ライフを。

良ければサポートよろしくお願いいたします。いただいたサポートは活動費として使用させていただきます。