JavaPlugin 4

[Plugin] #5 설정 파일(config.yml) 읽고 쓰기

지난 글에서는 이벤트를 감지하고 원하는 로직을 실행하는 방법을 살펴보았다.이번에는 플러그인의 동작을 유연하게 제어하기 위해 필수적으로 활용되는 YAML 설정 파일을 다뤄보자.실제 운영 환경에서는 코드 한 줄 수정 없이 서버 설정을 즉시 조정해야 하는 상황이 빈번하게 발생하므로 설정 파일을 능숙하게 다루는 능력이 곧 유지보수성과 직결된다.YAML 형식의 구조와 장단점YAML은 들여 쓰기를 기반으로 계층 구조를 표현하는 사람이 읽기 쉬운 데이터 포맷이다.JSON 대비 주석을 허용하고 키-값 쌍과 리스트를 직관적으로 작성할 수 있어 Bukkit/Spigot 생태계에서 사실상의 표준으로 자리 잡았다. 다만 공백 문자에 민감하므로 공백과 탭을 혼용하지 않는 습관이 필요하며 중첩 구조가 깊어질수록 들여 쓰기 오류를..

[Plugin] #4 이벤트 리스너 구현하기

지난 글에서는 명령어를 등록하고 실행하는 방법, 그리고 자동완성 기능을 구현하는 방법을 살펴보았다. 이번에는 마인크래프트 서버 내부에서 발생하는 이벤트(Event)를 감지하고 처리하는 방법을 알아보자. 이벤트 시스템은 Bukkit API의 핵심 개념 중 하나이며, 플러그인 개발에서 가장 자주 사용되는 기능 중 하나다.이벤트 시스템의 개념과 구조마인크래프트 서버는 단순한 루프 기반 프로그램이 아니라, 내부적으로 **이벤트 기반(Event-Driven Architecture)** 으로 동작한다.이 구조의 핵심은 “서버에서 일어나는 모든 행동을 이벤트로 감지하고, 그에 대한 반응을 개발자가 정의할 수 있다”는 점이다. 예를 들어 다음과 같은 상황을 생각해 보자.플레이어가 서버에 접속한다 → PlayerJ..

[Plugin] #2 명령어 구현하기

이번 글에서는 마인크래프트 플러그인에서 명령어를 다루는 방법을 살펴보자. 마인크래프트에는 채팅에 슬래시(/)를 앞에 붙여서 여러 기능을 사용할 수 있는 "명령어"라는 게 존재한다.바닐라 마인크래프트에서는 특정 좌표나 특정 플레이어에게 텔레포트하는 '/tp' 명령어나 특정 엔티티를 제거할 수 있는 '/kill' 명령어, 서버를 멈추는 '/stop' 명령어처럼 기본적인 명령어를 지원한다. 플러그인에서는 이 시스템을 사용하여 더 많고 다양한 명령어를 추가할 수 있다. 플러그인에서 명령어를 추가하는 방법은 크게 3가지 정도로 나뉜다. 1. onCommand() 메소드를 Overriding 하여 등록2. CommandExecutor를 구현하여 등록3. CommandMap에 직접 등록 오늘은 이 3가지 방법 모두 ..

[Plugin] #1 마인크래프트 플러그인 개발 시작하기

필자는 2015년 마인크래프트 스트리머 악어 공식팀으로 활동을 시작해서, 2016년부터는 플러그인 개발 외주를 진행해 온 10년 차 플러그인 개발자다. 이것저것 플러그인 개발에 대해 공부를 자주 해왔고, 마인크래프트가 새로운 버전이 나올 때마다 새로 추가된 기능들도 직접 사용해보기도 했다. 물론 이게 본업은 아니고, 본업은 Java 백엔드 개발자다. 게임을 즐기다 보면 "이런 건 어떻게 만드는 걸까?", "나도 만들어볼 수 있지 않을까?" 하는 생각이 들 수 있다. 아마 그래서 이 글도 검색해서 보게 된 게 아닐까 싶다. 당연히 할 수 있다. 개발에 돈이 드는 것도 아니고, 그냥 배우기만 하면 누구나 자신이 원하는 기능을 서버에 추가할 수 있다. (물론 Java라는 언어를 어느 정도는 알고 있어야 쉽다...

반응형