基本的なコマンドの作成方法

コマンドって何?

  • 例えば、ゲームモードの変更。
    クリエイティブとサバイバルなど、4つくらいある。
    今やっていいるのはサバイバル。
  • オリジナルのものを作ることもできる。

実装方法

まず、専用のクラスを作る必要がある。

そこで、Mainのファイルの上のファイルを右クリックして新規でクラスを作る。
ここでは、適当な名前をつけたくなるが、名前は大事なのでしっかり考えて付ける必要がある。

ここで問題発生!!

ここで次に行けなくて手が止まってしまった!!

原因としてはsrcファイルを開いてMainファイルにいかなければいけないのに、buildファイルを開いてMainファイルにいっていたので表示が違った。

そこで、srcファイルに移動し、Mainファイルの上のファイルをクリックすると教材画面と同じものが出た!!

コマンドを実行するときは、implements(実装する)
このあとは決まっていてCommandExecuto(コマンドを実行するもの)
を入力。

public class TestCommand implements CommandExecutor {

}

ここでエラーが出るので、カーソルを赤波線にあてて、指示された通り「メソッドの実装」をクリックし、でてきたものをそのまま「ok」をくりっくする。

package plugin.sample2;

import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.event.Listener;

public class TestCommand implements CommandExecutor {

  @Override
  public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
    return false;
  }
}

sender = コマンドを送った人は誰かということ

  if(sender instanceof Player) {
      
    }

もしsenderがPlayerであればという意味。(自分たちが何かしらのコマンドを入力する前提)

Player player = sender;

senderがPlayerであるということ
ここで、エラーが出るので赤波線にかーそるをあてて、〇〇にキャストをクリック

Player player = (Player) sender;

このあとは、例えば

player.setLevel(30);

レベルがあがる。しかしここでコードをスッキリさせるために書き方がアップグレードされたので

package plugin.sample2;

import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.event.Listener;

public class TestCommand implements CommandExecutor {

  @Override
  public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
    if(sender instanceof Player) {
      Player player = (Player) sender;
      player.setLevel(30);
    }
    return false;
  }
}

package plugin.sample2;

import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.event.Listener;

public class TestCommand implements CommandExecutor {

  @Override
  public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
    if(sender instanceof Player player) {
      player.setLevel(30);
    }
    return false;
  }
}

全体的にこうなる

  public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
    if(sender instanceof Player player) {
      player.setLevel(30);
    }

ここがスッキリしました。(パターン変数)

ここで何をするか決まったので、名前を「LevelUpCommand」に変更。

package plugin.sample2;

import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;

public class LevelUpCommand implements CommandExecutor {

  @Override
  public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
    if(sender instanceof Player player) {
      player.setLevel(30);
    }
    return false;
  }
}

つぎにMainファイルにもどって

  public void onEnable() {
    Bukkit.getPluginManager().registerEvents(this, this);
    
  }

ここの中に

getCommand()

を入力して()の中に「””」を入力すると

getCommand("")

こうなるので

getCommand("levelup").setExecutor(new LevelUpCommand());

になるように入力する。
これは”levelup”というコマンドが実行されたら、LevelUpCommandというクラスのOnCommandの処理を実行しなさいという意味!!

しかい、これだけではダメで、このコマンドが使えますよということをマインクラフト側ににんしきさせなければならない。

そこで、ファイルの下にある「resources」の中の蛇口マークの付いた「plugin.yml」を開き

commands:
  ここには2個スペースがないとバグる

そして

commands:
  levelup:

を入力。

そして、ゲームにつなぎ、「/」を入力しそこに「levelup」と全部龍力してエンターを押すと

レベル30になり成功!!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

CAPTCHA


目次