티스토리 뷰

플러그인의 1부터 10까지라고 쓰고 활용이라고 읽는다.



저번 강좌 중에 "명령어"를 만드는 강좌를 올렸습니다.

오늘은 그 강좌를 활용하여 확성기를 만들어봅시다.


명령어 만들기 : http://blog.kgaons.kr/208


일단 먼저 위 강좌처럼 명령어를 만들기 위한 준비를 해줘야겠죠?



(절대 기존 코드 쓴게 아닙니다)


저의 경우는 콘솔에서 입력 할 때와 플레이어가 입력한 확성기를 따로 분리해보겠습니다.


일단 오늘의 핵심코드를 말해보자면, Bukkit.broadcastMessage(); 입니다.

(클릭시 Docs로 이동합니다)


먼저 콘솔로 입력 할 때의 동작부터 만들겠습니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
@Override
    public boolean onCommand(CommandSender sender, Command cmd, String s, String[] args) {
        if (sender instanceof Player) {
            Player p = (Player) sender;
        }
        else { // 콘솔이 입력할 때의 동작
            if(args.length > 0) {
                Bukkit.broadcastMessage("§6[CONSOLE] §f" + args[0]);
            }
            else Bukkit.getConsoleSender().sendMessage("§c[NOTICE] 사용법: /확성기 <메세지>");
        }
        return false;
    }
   cs


완성된 코드입니다.

여기서 args.length가 보이는데요.

이는 변수 args의 길이를 반환하는 함수입니다.


기본적으로 명령어는 아래와 같은 형태로 띄고 있습니다.

/cmd arg0 arg1 arg2 ......

확성기의 명령어는 /확성기 <메세지>의 형태이기 때문에 메세지 부분 즉, arg0이 없으면 안되기 때문에

필요합니다.


이번에는 유저 명령어를 만들어봅시다.


1
2
3
4
5
6
7
if (sender instanceof Player) {
      Player p = (Player) sender;
      if(args.length > 0) {
         Bukkit.broadcastMessage("§6[" + p.getName() + "] §f" + args[0]);
      }
      else p.sendMessage("§c[NOTICE] 사용법: /확성기 <메세지>");
}
cs


두 코드는 거의 비슷하며 사용법 메세지를 보내는 대상과 확성기 문구만 다를 뿐입니다.

저는 명령어를 "확성기"로 하겠습니다. plugin.yml과 Main클래스에 등록 후 테스트를 해봅시다.




인게임, 콘솔 모두 잘 뜨고 있습니다.



사용법도 잘 뜹니다.


테스트는 성공적이나 한가지 문제점이 있습니다.

띄어쓰기를 하면 첫 단어만 출력되는 문제점인데요.

코드 상으로 arg0만 불러왔으니 당연합니다. 이를 해결하기 위해 아래 코드를 써서 가능한데요.

한번 직접 사용해보시길 바랍니다.


1
2
3
String s = String.join(" ",Arrays.copyOfRange(args, 어느 문자열부터 시작할 것인가, args.length));
 
예) 
String lore = String.join(" ",Arrays.copyOfRange(args, 0, args.length));
cs


코드 확인 : https://github.com/SkyLightQP/Notice-Code

오늘 강좌는 여기서 마치겠습니다!



검색어:

마인크래프트, 마인크래프트 플러그인, 마인크래프트 플러그인 만들기, 마인크래프트플러그인,

마인크래프트 확성기, 마인크래프트 확성기 플러그인, 마크

댓글
댓글쓰기 폼