bukkit
명령들
수색…
통사론
@Override public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args)
명령 처리
명령을 처리하려면 CommandExecutor 인터페이스를 구현하는 클래스가 있어야합니다. JavaPlugin 클래스 (플러그인의 메인 클래스)는 이미 이것을 구현합니다.
CommandExecutor 인터페이스를 구현할 때 다음 메소드를 구현해야합니다.
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
//Handle your command in here
return true; ///Should return false if you want to show the usage
}
보낸 사람이 명령을 보낸 사람입니다. 플레이어 또는 콘솔이 될 수 있습니다.
CMD는 plugin.yml에 선언 된대로 듣고있는 명령입니다. 라벨과 혼동하지 마십시오.
label은이 명령을 실행하는 데 사용되는 별칭이며, 보낸 사람이 슬래시 뒤에 입력하는 내용입니다.
마지막으로 args는 보낸 사람이 명령을 보내는 데 사용한 인수입니다.
가능한 명령은 다음과 같이 될 수 있습니다.
/ Tell Kerooker 안녕하세요, Kerooker!
Tell은 레이블이 될 것이며 plugin.yml에서 그렇게 말하면 명령으로 정의 될 수도 있습니다.
'Kerooker', 'Hi,', 'Kerooker!' 귀하의 args 0, 1 및 2 각각 있습니다
수익으로 모든 일이 그런 식으로 진행될 것으로 예상 할 때 항상 사실을 반환하기를 원할 것입니다. 보낸 사람에게 plugin.yml에 정의 된 명령 사용법을 표시하려면 false를 반환해야합니다.
간단한 GameMode 명령 설정 (/ gm) )
이 예제는 onCommand를 사용하는 방법에 대한 아주 기본적인 예제를 보여줍니다. onCommand에서 직접 명령을 처리 할 것을 제안하지는 않지만이 간단한 경우의 트릭입니다.
이 예에서는 플레이어의 게임 모드를 설정하려고 시도합니다.
우리가해야 할 첫 번째 일은 콘솔의 게임 모드를 설정할 수 없기 때문에 발신자가 ConsoleCommandSender가 아닌지 확인하는 것입니다. 이것은 (발신자 instanceof Player)로 수행됩니다.
다음으로 플레이어가 / gm CREATIVE (또는 다른 게임 모드)를 입력하면 2 가지를 확인해야합니다.
- 1 개의 인수 (CREATIVE)를 전달하는지 확인하십시오.
- 그들의 명령이 "gm"인지 확인하십시오.
args.length == 1 && label.equalsIgnoreCase ( "gm") 이러한 검사는 다음과 같이 수행했습니다.
이제 플레이어가 "/ gm x"를 입력했는지 알 수 있습니다.
다음으로해야 할 일은 args [0]를 GameMode 객체로 변환하여 플레이어에게 적용 할 수 있도록하는 것입니다. GameMode.valueOf (String)를 사용하여 수행 할 수 있습니다. 그러나 Java 열거 형 설명서에 따르면 열거 형이 valueOf ()로 전달되면 열거 형과 일치하지 않으면 IllegalArgumentException이 발생하므로 반드시 확인해야합니다. 그걸 잡아라.
게임 모드가되면 p.setGameMode (gm)를 사용하면 플레이어의 게임 모드가 변경됩니다. 우리가 예외를 잡은 경우 - 단순히 문장을 출력하고 false를 반환합니다.
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
if (sender instanceof Player) {
final Player p = (Player) sender;
if (args.length == 1 && label.equalsIgnoreCase("gm")) {
try {
GameMode gm = GameMode.valueOf(args[0]);
p.setGameMode(gm);
p.sendMessage(ChatColor.GREEN + "Your gamemode has been set to: " + gm.toString());
return true;
} catch (IllegalArgumentException e) {
p.sendMessage(ChatColor.RED + "Invalid gamemode option!");
return false;
}
}
}
return false;
}
명령이 메인 클래스에 없습니다.
명령이 많으면 주 수업에 모두 넣지 말아야합니다.
새 클래스를 만들고
CommandExecutor
구현하도록합니다.클래스에 다음을 추가하십시오.
@Override public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { }
기본 클래스에서 onEnable을 추가합니다 (commandName을 명령 이름으로 바꾸고 CommandExecutor를 클래스 이름으로 바꿉니다).
getCommand("commandName").setExecutor(new CommandExecutor());