마인크래프트 서버를 열고 다양한 플러그인을 사용하다 보면 대부분 plugins/(plugin name) 폴더에 config.yml 파일이 대부분 있다.
나도 그 파일을 가지고 싶었기에.. 시작되는 config.yml 파일 만들기
https://bukkit.gamepedia.com/Configuration_API_Reference 를 참고하였습니다.
config.yml 파일이 없으면 기본으로 생성되어야 하는 디폴트 파일을 만들어 주어야 한다.
config.yml 파일은 plugin.yml과 같은 위치에 있어야 한다고 설명되어 있다.
config.yml 파일 구성은
https://bukkit.gamepedia.com/Configuration_API_Reference#Keys 를 참고하세요.
필자는 config.yml 파일을 다음과 같이 준비했다.
name: "test"
time: 1
contents:
- "test"
- "test2"
https://velog.io/@jong/Minecraft-plugin-%EB%AA%85%EB%A0%B9%EC%96%B4-%EB%93%B1%EB%A1%9D%ED%95%98%EA%B8%B0 에서 이어지는 소스코드입니다.
public class JongPlugin extends JavaPlugin {
+ FileConfiguration config = getConfig();
@Override
public void onEnable() {
//플러그인 활성화
getLogger().info("Jong Plugin 활성화");
+ this.saveDefaultConfig();
getCommand("jt").setExecutor(new Command());
}
보기 쉽도록 추가된 부분에 +를 맨 앞에 붙여놨다. this.saveDefaultConfig()
를 통해 config.yml 파일이 존재하지 않는다면 아까 만들어둔 소스대로 플러그인 이름의 폴더에 생성된다.
Main 클래스에서 사용할 때에는 비교적 간단하다.
this.getConfig().getString("name");
위 코드를 통해 불러올 수 있다.
메인 클래스에서는 config 값에 바로 접근할 수 있었다. 그런데 getCommand("jt").setExecutor(new Command())
과 같이 명령어 관련 클래스에서 config에 접근하려니 당황스러웠다.
public class Command implements CommandExecutor { //명령어 처리 클래스는 CommandExecutor 인터페이스를 상속해야 한다.
@Override
public boolean onCommand(CommandSender sender, org.bukkit.command.Command command, String label, String[] args) {
if(sender instanceof Player){ //명령어를 사용자가 입력했으면
Player player=(Player) sender; //명령어 사용자 객체를 플레이어 객체로 변환
player.sendMessage("&6아이템을 지급하였습니다.");
+ player.sendMessage(JongPlugin.getPlugin(JongPlugin.class).getConfig().getString("name"));
JongPlugin.getPlugin(JongPlugin.class).getConfig().getString("name")
와 같이 접근하면 다음과 같이 정상적으로 출력이 되는 것을 확인할 수 있다.