[Minecraft plugin] 마인크래프트 플러그인 만들기

jong·2021년 3월 5일
1

취미

목록 보기
2/12

이전에 마인크래프트 플러그인을 껍데기만 만들어서 활성화라도 시켜보고자 했지만 실패했었다. 그런데 최신 버전을 사용하면서 필요한 플러그인이 점점 부족해져 직접 한번 손이나 대보자는 의미로 새로 시작해보기로 했다.

이번엔 밑의 글을 참고해서 해보기로 했다.
https://fred16157.github.io/java/java-minecraft-plugin-start/

마인크래프트 플러그인 기초

프로젝트 생성

자바는 역시 Intellij라 생각하기에, Intellij로 Gradle 프로젝트를 생성시켜 준다.
마크가 1.8버전의 자바로 구동되는 것으로 알아 플러그인의 자바 버전도 맞추어 주었다.

build.gradle

spigotmc API를 연결해주기 위해 Gradle를 수정해준다.

이와 관련된 자세한 내용은 https://www.spigotmc.org/wiki/spigot-maven/ 에 포함되어 있다.

plugins {
    id 'java'
}

group 'org.jong_plugin'
version '1.0-SNAPSHOT'

repositories {
    mavenCentral()
    maven {
        url "https://hub.spigotmc.org/nexus/content/repositories/snapshots"
    }
}

dependencies {
    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.6.0'
    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine'
    implementation "org.spigotmc:spigot-api:1.16.5-R0.1-SNAPSHOT"
}

test {
    useJUnitPlatform()
}

위와 같이 해주고 나니 'BUILD SUCCESSFUL in 11s' 가 확인되었다.

plugin.yml

spigot에서는 'plugin.yml'파일이 없으면 플러그인으로 인식하지 않는다고 한다.
main/resources/plugin.yml 파일을 만들어준다.

name: JongPlugin 
version: 1.0
main: com.jong_plugin.JongPlugin.JongPlugin

참고한 블로그에서는 main에 적을 것을 모르겠다면 com.().(plug name).(plug name)으로 하기를 권장하기에 위와 같이 해주었다.

진입점 클래스

진입점 클래스를 생성할 패키지가 필요하다.

사진과 같이 패키지와 클래스를 만들었다.

활성화, 비활성화 로그

플러그인이 실행되고, 종료될 때 표시될 로그를 생성한다.

import org.bukkit.plugin.java.JavaPlugin;

public class JongPlugin extends JavaPlugin {
    @Override
    public void onEnable(){
        //플러그인 활성화
        getLogger().info("Jong Plugin 활성화");
    }

    @Override
    public void onDisable(){
        //플러그인 비활성화
        getLogger().info("Jong Plugin 종료");
    }
}

.jar 파일로 만들기

우측의 Gradle > jar 순으로 실행하면 jar 파일이 생성된다.

혹시 한글이 깨지면서 오류가 발생한다면,

사진과 같이 UTF-8로 3개 모두 바꾸어 주고 Run창을 닫아주고 다시 빌드 하니 정상적으로 되었다.

.jar 파일 확인

정상적으로 빌드가 되었는지 확인하기 위해 (프로젝트 경로)\jong_plugin\build\libs 로 이동하여 파일을 확인해본다.

일단 오류 없이 정상적으로 빌드 된 것 같다.

테스트

버킷 설치

필자는 라즈베리 파이에서 구동하기 때문에 paper를 이용한다. spitgo 기반이기 때문에 플러그인의 호환 문제는 없을 것이라 생각한다.

버킷 파일 다운은
https://papermc.io/downloads 이곳에서

서버 jar 파일을 다운로드하고 나면 eula.txt 파일을 같은 폴더에 생성해 주어야 한다.

eula=true

해당 파일의 내용은 위와 같다.
버킷을 실행시키기 위한 .bat 파일도 생성해 준다.

@echo off
java  -Xmx2G -Xms2G -jar paper-1.16.5-500.jar
pause

위와 같이 해주면서 서버에 할당할 램의 크기와 파일 이름은 직접 맞게 수정해 준다.

플러그인 실행

플러그인 파일을 plugins 폴더에 넣어주고 reload confirm을 통해 다시 로드해준다.

확인해보니 잘 실행된다. 그런데 한글이 깨지는 것이 보인다.

별 짓을 다 해도 해결이 안 되었는데 build.gradle에 다음 코드를 추가하고 정상적으로 작동하였다.

compileJava.options.encoding = 'UTF-8'
tasks.withType(JavaCompile) {
    options.encoding = 'UTF-8'
}

profile
공부 기록

4개의 댓글

comment-user-thumbnail
2021년 3월 30일

오.. 취미로 쓴 제글이 다른 사람에게 참고가 되다니 놀랍네요 ㅋㅋ
라즈베리파이에서 돌리는 것도 좋은 아이디어인 것 같고요

1개의 답글
comment-user-thumbnail
2021년 6월 24일

안녕하세요. gradle에 인코딩 추가해서 빌드했더니 저도 정상적으로 잘 나오네요ㅠㅠ 감사합니다.

1개의 답글