명령어 제작

홍성재·2024년 3월 7일

Minecraft

목록 보기
5/13

명령어

CommandExecutor

  • 명령어 클래스는 CommandExecutor 상속(implements CommandExecutor)이 필수

boolean onCommand(CommandSender sender, Command cmd, String label, String[] args)

  • CommandExecutor로부터 구성을 요구받는 함수
  • 명령어가 사용되면 발동하는 함수
  • 구성
    • sender : 명령어 사용 객체
      • Player : 플레이어 (유저)
      • BlockCommandSender : 커맨드 블럭
      • ConsoleCommandSender : 콘솔
    • cmd : 명렁어 자체에 대한 클래스로 plugin.yml에 작성한 내용을 확인 가능
    • label : 명령어를 포함한 입력된 명령어의 모든 내용
    • args : 명령어 인자값들로 명령어를 제외한 모든 인자를 가지고 있음

      "/test a b"라고할떄 args[0] = a, args[1] = b

    • 반환 값(return)
      • true : 메시지 없음
      • false : plugin.yml에서 작성한 해당 명령어의 usage가 출력됨

TabCompleter

  • 인게임에서 명령어 사용할때 Tab키를 사용시 자동완성하는 기능,implements TabCompleter

List<String> onTabComplete(CommandSender sender, Command cmd, String label, String[] args)

  • TabCompleter로부터 구성을 요구받는 함수
  • 해당 명령어를 입력하고 탭키를 사용하면 발동하는 함수
  • 구성
    • 기본 구성은 CommandExecutor와 동일
    • 반환값(List\<String>) : 해당 리스트에 들어가 있는 값들이 목록으로 표시됨

명령어 등록

  • 메인 클래스에서 getCommand(String name).setExecutor(new 명령어_클래스());의 형태로 등록가능
  • name은 plugin.yml의 명령어와 일치해야하나, aliases로 입력해도 정상 작동함
  • '명령어_클래스' 들어가는 값은 CommandExecutor를 상속한 클래스만 입력 가능
    • 명령어 클래스에 CommandExecutor와 TabCompleter를 동시에 상속한 경우는 setExecutor하나로 동시에 입력 가능
    • 따로 TabCompleter를 작성한 경우는 setTabCompleter(클래스)을 통하여 지정 가능

Aliases

  • 기본적인 별명 등록은 plugin.yml에서 가능함
  • Bukkit.getCommandAliases()을 통하여 추가 제어 가능
profile
신입 개발자

0개의 댓글