마인크래프트 플러그인을 개발 해보자 (1)

 

전편에는 마인크래프트 플러그인에 필요한 개발툴과 함께 간단한 환경세팅 방법에 대해서 알아보았다

이번에는 플러그인 개발에 필요한 API와 함께 공식문서를 읽어보도록 하자

 

사실 어떤 특정한 기능을 만드는방법을 알려주기보다는 원하는 기능을 어떻게 찾고 구현할수있는지에 대한 방법에 대해서 주로 설명하려고한다

물론 예시를 들때는 어떠한 기능을 구현하면서 같이 이해를 하는식으로 하겠지만 기본적으로 자기가 원하는 기능에대해서 분석하고 어떤식으로 접근하는지 아는것이 엄청 중요하다

이는 곧 개발을 하는데 꼭필요한 덕목이기도 하다

 

우선 API가 무엇인지부터 알아보겠다

API는 Application Programing Inteface로 우리가 애플리케이션을 제작할때 만들어놓은 기능을 사용하기위한 전달체라고 보면될꺼같다

우리가 흔히 식당같은곳에 가면 음식을 주문하고 종업원은 그 주문받은 음식을 토대로 요리사에게 요청하고 요리가 다되면 종업원은 우리한테 음식을 가져다준다

종업원이 API라고 보면 될것이다

 

우리가 마인크래프트 플러그인을 제작할때는 주로 Spigot API의 Document를 참고할것인데 이는 Spigot에서 제공하는 기능들을 사용할수있게 API를 알려주는것이다

 

Spigot-API 공식문서

 

 

https://hub.spigotmc.org/javadocs/bukkit/ 이곳은 Spigot API를 확인할수있는 공식문서이다

이곳에는 정말 다양한 API들이 존재하는데 여기서 주로쓰이는거 딱 하나만 한번 봐보자

 

 

 

 

 

org.bukkits.block API인데 해당 패키지는 블럭에 관련된 여러가지 API를 제공한다

여기중에 BlockBreakEvent에 대해서 주목해보자 해당 API는 ' 블럭을 부술경우 ' 이벤트가 발동하는 기능을담당하는데

예를들어 철광석 하나를 부술경우 일정확률로 다이아몬드를 준다던지, 아니면 블럭을 부술경우 버프를 준다던지 그런식으로 활용할수있다

 

공식문서는 영어로 되어있지만 번역도 할수있고, 기능들을 왠만하면 이해할수 있을정도의 설명이라 괜찮지만

혹시라도 내가 원하는 ' 이벤트 ' 를 찾고싶으면 Chat GPT를 활용해서 질문하는것도 좋은방법이다

 

예를들자면 " 마인크래프트 플러그인 개발할때 몬스터에게 공격당했을경우 다이아를 주고싶어 " 이런식으로 작성하게되면 내가 알고싶은 " 몬스터에게 공격당하는 이벤트 " 를 사용해서 GPT는 코드로 알려줄것이다

이처럼 이벤트를 찾을때는 GPT를 한번 활용해보자

 

 

자이제 API가 무엇인지, 마인크래프트 Spigot에서는 어떤 API를 어떻게 제공하는지 알아보았다

이제는 해당 API를 어떻게 사용하는지 알아보도록 하자

이전 게시물에서도 말했지만 이제부터는 Java라는 프로그래밍 언어를 이용하여 본격적으로 코딩이라는것을 할것이다

 

C언어나 파이썬같은 여타 다른 언어를 공부했다면 크게 어렵지않지만 만약 프로그래밍 언어에 대한것이 낯설다면 간단한것도 좋으니 우선 강의나 책을한번 보고나서 해보길바란다

 

 

 

 

 

 

우선 이전게시물에서 우리는 IntellJ 플러그인에 Mincraft Developer를 다운받고 해당 플러그인을 활성화시킨뒤에

Minecraft 프로젝트를 생성했었다

우선 플러그인을 본격적으로 제작하기 앞서 우리가 앞으로 꼭 알아야될 기본적인 용어나 지식에대해서 한번 알고가보도록하자

" 왜 " 이렇게 하는지 알아야 갑작스러운 버그나 오류가나와도 어느정도 접근할수 있으며 그저 무엇을 만드는 방법보다는 무엇을 만들기 위해서 우리가 생각해야할것을 알려줄것이다

우선 왼쪽 여러 디렉토리중 build.gradle에 들어가보도록 하자

 

 

 

 

 

이곳에서는 많은 dependencies (의존성) 을 관리하고 다운받을수도 있다

우리가 처음 프로젝트를 생설할떄 Maven과 Gradle을 고를수있었는데 이 두개는 빌드관리도구로써 프로젝트의 빌드, 프로젝트 구성/관리, 배포를 담당하게 된다 현재는 Maven 보다는 Gradle이 쫌더 우위에있는거같다

 

우리가 여기서 주의깊게 봐야할것은 dependecnices로써 라이브러리를 다운받아서 사용할수있다

현재는 spigotmc가 다운받아져있으며 해당 라이브러리를 통해 위에서 언급한 마인크래프트 에서 제공하는 여러 API를 사용할수 있는것이다

 

만약 우리가 마인크래프트 플러그인중 가장 많이쓰이는 Essential을 통해 유저의 권한상태를 바꾸는 플러그인을 만들고싶다 하면 Essential 공식 홈페이지에 가서 dependencies를 다운받아서 해당 build.gradle dependencies에 넣으면 사용할수 있다는 것이다

 

이것을 왜알려주냐면 플러그인 개발중에 다른플러그인에 있는 기능을 사용하고 싶을텐데 그럴때는 해당플러그인이 API를 제공하는지 보고 제공한다면 의존성을 추가하여 해당플러그인의 기능을 사용할수 있는것이다

 

 

 

실제로 에센셜 공식문서에 가보면 Gradle 과 Maven에 의존성을 설정할수있다

 

 

그밖에도 더 알아야할것이 있지만 차근차근 만들면서 필요하면 하나씩 올려보겠다

이제 다음편에서는 간단한 플러그인을 만들어보고 해당 플러그인을 .jar로 빌드 후 마인크래프트에 직접 적용해보도록 하자