spigot plugin制作備忘録

はじめに

忘れそうな事と忘れたらやばいこと書いておきます
毎度更新したり別記事書く予定です


コマンドの追加

①src/main/resources/plugin.ymlを開く

②一番下にcommands:

③改行してインデントを挿入してコマンド名(英語なら好きな名前でok)

④必要に応じてaliasesやdescriptionを書く
以下ではtestとmenuを実装している

//yml
name: TestPlugin
version: '${version}'
main: com.test_mc.testplugin.TestPlugin
api-version: '1.20'
prefix: TestPl
authors: [kutouten_jp]

commands:
 test:

  menu:
    description: open GUI menu

⑤メインクラスと同じ階層にパッケージを作る(名前はCommandsとかにすると分かりやすい)

⑥パッケージ内にクラスを作成する。(名前は○○Commandとか)

⑦作成したクラス内に以下の通りに記述

//java
public class TestCommand implements CommandExecutor {
	@Override
	public boolean onCommand(@NotNull CommandSender commandSender, @NotNull Command command, @NotNull String s, @NotNull String[] strings) {

	}
}


⑧処理を書く
下の例では実行したプレイヤーのチャット欄に「Hello World」と送るもの

//java
public class TestCommand implements CommandExecutor {
	@Override
	public boolean onCommand(@NotNull CommandSender commandSender, @NotNull Command command, @NotNull String s, @NotNull String[] strings) {
		Player p = (Player) commandSender;
        p.sendmessage("Hello World");
		return true;
	}
}

⑨メインクラスを開き、onEnableメソッド内に
this.getCommand("③で記入したコマンド名").setExecutor(new ⑥で書いた名前()); 
を記述する

//java
public final class TestPlugin extends JavaPlugin {
    @Override
    public void onEnable() {
        this.getCommand("test").setExecutor(new TestCommand);
    }

    @Override
    public void onDisable() {
    }
}

イベント取得

①イベントを取得する用にクラスを作成。パッケージ分けしてもok

②以下の通りに記述。implements Listnereを追加するだけ。

//java
public class PlayerJoinListener implements Listener {

}

③取得したいイベント名を引数に置く。@EventHandlerを忘れずに
以下ではプレイヤーが参加した際のイベントを取得する
メソッド名は自由です

public class PlayerJoinListener implements Listener {
    @EventHandler
    public void PlayerJoin(PlayerJoinEvent e){

    }
}

④処理を書く。
以下では参加したプレイヤーに対してメッセージを送ります

public class PlayerJoinListener implements Listener {
    @EventHandler
    public void PlayerJoin(PlayerJoinEvent e){
        Player p = e.getPlayer();
        e.setJoinMessage("おはよう世界");
    }
}

⑤メインクラスに以下のことを記述
Bukkit.getPluginManager().registerEvents(new PlayerJoinListener(),this);

//java
public final class TestPlugin extends JavaPlugin {
    @Override
    public void onEnable() {
        this.getCommand("test").setExecutor(new TestCommand);
    Bukkit.getPluginManager().registerEvents(new PlayerJoinListener(),this);
    }

    @Override
    public void onDisable() {
    }
}

この記事が気に入ったらサポートをしてみませんか?