본문 바로가기

Game/Minecraft

플러그인의 1부터 10까지! - 콘피그 응용

반응형

플러그인의 1부터 10까지!라고 읽고 응용 강좌라고 쓴다!



요번 강좌에서는 저번 강좌에 이어 콘피그를 응용하는 시간입니다.

만들어볼 플러그인은 "MOTD 변경 플러그인"입니다.


강좌에서 말하는 motd는 서버 목록에서 뜨는 문구를 뜻합니다.


일단 프로젝트를 만들고 명령어, 콘피그 준비를 해줍시다.



준비 완료!


이번에는 이벤트를 사용 할 준비를 해줍시다.

MOTD 변경은 ServerListPing 이벤트에서 변경합니다.


그 다음 motd를 콘피그에서 불러올 것이기에 loadConfig에 미리 내용으로 만들어줍시다.


1
2
3
4
5
6
7
8
9
10
11
12
    private void loadConfig() {
        config = YamlConfiguration.loadConfiguration(file);
        try {
            if (!file.exists()) {
                config.set("motd.text""Hello!");
                config.save(file);
            }
            config.load(file);
        } catch (Exception localException) {
            localException.printStackTrace();
        }
    }
cs


그 다음 이벤트를 만들어줘야겠죠?


1
2
3
4
5
6
7
    @EventHandler
    public void onServerPing(ServerListPingEvent e){
        if(config.get("motd.text"!= null){  // 콘피그의 내용이 null이 아니라면
            String motd = config.getString("motd.text"); // 해당 내용을 불러와 변수에 담고
            e.setMotd(motd); // motd를 바꿔줍시다!
        }
    }
cs


여기서 getString() 함수가 등장하였습니다.

콘피그 내용을 불러올 때 위와 같은 함수(메소드)로 자료형을 결정할 수 있습니다.

예) getInt, getString, getList 등등...


이제 motd를 변경하고 리로드 할 수 있는 명령어를 만들어 봅시다.


참고: http://blog.kgaons.kr/211 해당 글에 마지막 코드가 사용됩니다!


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
    @Override
    public boolean onCommand(CommandSender sender, Command cmd, String s, String[] args) {
        if (sender instanceof Player) {
            Player p = (Player) sender;
            if(args.length > 0) {
                String text = String.join(" ", Arrays.copyOfRange(args, 0, args.length));
                config.set("motd.text", text);
                try {
                    config.save(file);
                } catch (IOException e) {
                    e.printStackTrace();
                }
                p.sendMessage("§a[MotdConrol] 완료!");
            }
            else p.sendMessage("§c[MotdConrol] 사용법: /motd <내용>");
        }
        else Bukkit.getConsoleSender().sendMessage("§c[MotdControl] 인게임에서 사용이 가능합니다!");
        return false;
    }
cs


완성된 코드입니다.

변수 text의 경우 args[0]으로 그냥하면 띄어쓰기를 할 수 없기 때문에 만들어줬습니다.


save() 함수의 경우 콘피그의 값을 변경 후 해줘야 저장되며

try문을 요구합니다.


이제 테스트를 해봅시다.



설정한 초기값 "Hello!"가 잘 나오고 있습니다.

이제 명령어로 바꿔봅시다.



MOTD 변경도 성공적입니다!



이렇게 콘피그 / 명령어 / 이벤트를 응용하는 강좌를 끝으로 플러그인의 1부터 10까지! 강좌를 마무리합니다.

아래 링크로 들어가셔서 강좌 코드를 확인할 수 있습니다.


코드 확인 : https://github.com/SkyLightQP/MotdControl


[ 플러그인의 1부터 10까지! ]

1. http://blog.kgaons.kr/207

2. http://blog.kgaons.kr/208

2-1[팁]. http://blog.kgaons.kr/210

2-2[활용]. http://blog.kgaons.kr/211

3. http://blog.kgaons.kr/213

4. http://blog.kgaons.kr/215

5. http://blog.kgaons.kr/218




검색어:

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

마인크래프트 motd, 마인크래프트 에센셜, 마인크래프트 콘피그, 마크

반응형