1. 준비(Prerequisite)
- JAVA: Java17 (블로그 기준 17.0.1 2021-10-19 LTS)
- IDE: IntelliJ IDEA (블로그 기준 2021.2.3)
2. 프로젝트 생성
- Intellij IDE에서 Top 메뉴에 File - New - New Project 선택
- Java 밑에 Kotlin/JVM 체크박스 선택
- Use library는 KotlinJavaRuntime 선택(Default)
- Next 누른 후 적당한 Project 이름 설정
3. Spigot-API 설정
- spigot에서 환경설정 툴을 제공한다.
- project root(tutorial) 밑에 server/spigot 폴더를 생성한다.
- BuildTool을 다운받고 실행한다.
$ cd server/spigot $ curl -L http://bit.ly/spigotmcbuild -o BuildTools.jar $ java -jar BuildTools.jar |
- 다운받고 빌드하느라 3~4분 정도 시간이 걸린다.
- minecraft의 코드를 decompile 한다. (.class -> .java)
- CraftBukkit의 Patches를 적용한다. (마인크래프트에 Plugin을 붙일 수 있는 통로를 만드는 과정)
- Patch가 적용된 java 코드들을 다시 빌드한다.
- Plugin을 만들기 위한(API) Library를 빌드한다.
- Spigot server (spigot-1.18.1.jar)를 빌드한다.
- 빌드가 끝난 후 project window 모습
4. spigot 서버 실행
- 전 단계 빌드에서 생성된 spigot-1.18.1.jar에서 마우스 우클릭 후 Modify Run Configuration.. 실행
- Working directory를 server로 설정한다. 서버를 run하면 여러 파일들이 자동생성 되는데,
별도 디렉토리 설정을 안해주면, BuildTools에서 생성된 /server/spigot/ 밑에 파일들과 짬뽕되기 때문에
한 단계 위의 directory로 구분해 주는 것이다.
- spigot-1.18.1.jar를 우클릭 한 뒤, Run spigot-1.18.1.jar를 선택해서 spigot 서버를 실행한다.
- /server 밑에 eula.txt가 생겼다. 파일을 열어서 false -> true로 바꾸주고 다시 서버를 실행한다.
(End User License Agreement 파일로, 라이센스에 관한 지켜야할 내용이다. 최초 한번만 바꾸면 된다.)
- 최초에는 없던 서버 설정 파일들이 자동으로 생성되고, 마인크래프트 맵이 만들어진다.
5. Plugin 모듈 생성 및 설정
- Project 이름에서 우클릭 후 New - Module.. 을 선택
- Minecraft 선택 후 Spigot Plugin을 체크하고 적당히 GroupId, ArtifactId를 넣는다.
(아까 BuildTools.jar를 설치 할 때, Intellij의 Minecraft Plugin도 같이 설치됐었다. ^^b)
- 마지막 설정이다. 탑 메뉴의 File - Project Structure를 선택한다.
- Artifacts 선택 후 +를 눌러 빌드 산출물을 추가한다.
- Jar - From module with dependencies.. 를 선택한다.
- Module에서 아까 추가했던 module(tutorialmod)을 선택한다. (project가 아니다.)
- Output directory에서 project이름/plugins를 선택한다.
- Include in project build를 체크한다.
(이 과정은 모듈 빌드 후 생성되는 mod 파일 project.jar 파일이 생성되는 위치로,
빌드 후 바로 서버의 plugins에 만들어지도록 하여, 다음 서버 실행 시에 바로 plugin이
포함되어 로딩 되도록 하기 위해서 이다.)
- 탑 메뉴에 Build - Build Project를 선택하여 내가 만든 모듈을 빌드 한다.
(Build가 완료되면, 위에서 설정했듯이, project/plugins 및에 module.jar가 생성되어 있다.)
6. 마인크래프트 실행
- spigot 서버를 다시 실행한다. (Run spigot-1.18.1.jar)
서버 로그 마지막에 내가 만든 module.jar가 로딩되었다는 로그를 볼 수 있다.
- 멀티 플레이 선택 - 서버 추가
- 서버 이름을 아무거나 입력하고, 서버 주소에 localhost라고 적는다. (네트워크 상에서 내 PC를 일컷는 말이다.)
- 직접 빌드한 서버와 mod에 접속했다. 성공을 기원하고 축하한다.
7. 부연 설명
- 모듈 생성 후 생성된 main이라고 할 수 있는 java 파일을 보면, org.bukkit에 있는 API를 사용하는 것을 볼 수 있다.
- bukkit에 ctrl + 마우스클릭 하면, External Libraries에 spigot-api가 모두 있는 것을 볼 수 있다.
- JavaPlugin 클래스를 확장하는 방식으로 spigot 서버 시작 시 plugin이 로딩되도록 만들어졌다.
- Minecraft 모듈로 만들지 않고 일단 Kotlin JVM 모듈로 생성했다면 JavaPlugin 클래스를 참조 못하는 에러가
발생할 수 있다.. (classpath에 spigot-api-1.18.1-xxxxx.jar 라이브러리를 추가해야 한다.)
- Minecraft 모듈을 한번 생성하면, 자동으로 External Libraries에 라이브러리가 추가되므로,
라이브러리 잡느라 쓸데없이 고생하지 않기를 바란다..
- 당연히 plugin은 여러개가 로딩될 수 있고, 하나의 project에 여러개의 module을 만들어서 개발할 수도 있다.
[Minecraft] AWS EC2를 이용한 Public 서버 운영 (0) | 2021.12.21 |
---|---|
[Minecraft] Forge 환경 설정 (0) | 2021.12.21 |
[Minecraft] Forge와 Plugin 의 차이점 (0) | 2021.12.21 |
[Minecraft] 환경 설정, 들어가는 말 (0) | 2021.12.21 |
[Minecraft] Magma 서버 설정 (0) | 2021.12.11 |
댓글 영역