본문 바로가기
마인크래프트/플러그인 제작 강좌(자바)

[인텔리제이로 마크 플러그인 개발하기](보충)Config Reload 명령어 만들기

by Zepelown 2023. 3. 20.

*이 글은 Spigot 1.19.3 버전을 기준으로 하여 제작되었습니다.

 

https://zepelown.tistory.com/61

 

[인텔리제이로 마크 플러그인 개발하기](보충)Config 분할하기

*이 글은 Spigot 1.19.3 버전을 기준으로 하여 제작되었습니다. 이전 강의 https://zepelown.tistory.com/58 [인텔리제이로 마크 플러그인 개발하기]13. Custom Config에 관하여 (Config 파일 여러 개 만들기, 플레 이

zepelown.tistory.com


간단하게 Config를 리로드 하는 명령어를 만들어보겠습니다.

 

ReloadConfig.java

package io.github.zepelown.testplugin.commands;

import io.github.zepelown.testplugin.TestPlugin;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;

public class ReloadConfig implements CommandExecutor {

    @Override
    public boolean onCommand(CommandSender sender, Command command, String s, String[] args) {
        sender.sendMessage("config reload");
        TestPlugin.getConfigManager().reloadConfigs();
        sender.sendMessage("config reload complete");
        return false;
    }
}

 

여기서

 

TestPlugin.getConfigManager().reloadConfigs();

 

이건 이전 강의에서 작성했던 것으로 

 

ConfigManager.java

public void reloadConfigs() {
    for (String key : configSet.keySet()){
        plugin.getLogger().info(key);
        configSet.get(key).reloadConfig();
    }
}

위 메서드를 의미합니다.

 

config들을 저장한 HashMap인 configSet을

 

반복문을 통해 돌면서

 

리로드를 해주는 겁니다.

 

configSet.get(key).reloadConfig()는 뭘까요?

 

ConfigMaker.java

public void reloadConfig(){
    if(!exists())
        return;
    config = YamlConfiguration.loadConfiguration(file);
}

위 함수로 파일을 다시 로드하는 메서드입니다.

 

다시 돌아와 명령어를 이어서 만들어보겠습니다.

 


 

명령어는 /treload로 만들 예정입니다.

 

TestPlugin.java

(메인 클래스)

 

private void registerCommands(){
    getServer().getPluginCommand("thelp").setExecutor(new Help());
    getServer().getPluginCommand("tgivedia").setExecutor(new GiveDia());
    getServer().getPluginCommand("topeninv").setExecutor(new OpenInv());
    getServer().getPluginCommand("tgetpotion").setExecutor(new GetPotion());
    getServer().getPluginCommand("treload").setExecutor(new ReloadConfig());
}

plugin.yml

name: TestPlugin
version: '${project.version}'
main: io.github.zepelown.testplugin.TestPlugin
api-version: 1.19
commands:
  thelp:
    description: help command
    aliases:
      - thelp2
  tgivedia:
    description: givedia
  topeninv:
    description: open gui
  tgetpotion:
    description: get custom potion
  treload:
    description: reload config;

명령어를 등록해 줍니다.

 

작동이 되는지 확인해 보겠습니다.

 


먼저 서버를 열고

 

message.yml을 다음과 같이 수정해 봅니다.

 

저장 후

 

그리고 이제 명령어를 쳐봅시다.

 

 

 

댓글