[Minecraft plugin] HotTime Event - 마인크래프트 플러그인 Maven으로 시작하기

jong·2021년 3월 7일
0

취미

목록 보기
6/12

기존에는 공식 위키에도 Gradle로 시작하는 방법이 있는 만큼 Gradle 프로젝트로 시작했었다. 그러나 생각보다 대부분의 플러그인들이 maven 프로젝트였고, 초보인 만큼 정보의 풀이 많은 maven으로 시작하기로 했다.

Maven 프로젝트로 마인크래프트 플러그인 개발 시작

프로젝트 생성

maven으로 프로젝트를 새로 연다.

groupId: io.github.potato-y.hottimeevent
artifactId: HotTimeEvent

로 설정하여 프로젝트를 생성하였다.

pom.xml 편집

https://www.spigotmc.org/wiki/spigot-maven/

위 링크로 들어가면 최신 버전과 함께 가이드가 잘 되어있다.

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>io.github.potato_y.hottimeevent</groupId>
    <artifactId>HotTimeEvent</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
        <project.build.sourceEncoding>utf-8</project.build.sourceEncoding>
    </properties>
    <repositories>
        <!-- This adds the Spigot Maven repository to the build -->
        <repository>
            <id>spigot-repo</id>
            <url>https://hub.spigotmc.org/nexus/content/repositories/snapshots/</url>
        </repository>
    </repositories>

    <dependencies>
        <!--This adds the Spigot API artifact to the build -->
        <dependency>
            <groupId>org.spigotmc</groupId>
            <artifactId>spigot-api</artifactId>
            <version>1.16.5-R0.1-SNAPSHOT</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>
</project>

위 링크를 참조하여 프로젝트를 설정하였다.
utf-8 인코딩 문제가 있어 <project.build.sourceEncoding>utf-8</project.build.sourceEncoding>를 추가 하였다.

참고: https://www.slipp.net/questions/37

plugin.yml

서버에서 플러그인으로 인식할 수 있도록 plugin.yml 파일을 추가해준다.

name: HotTimeEvent
main: io.github.potato_y.hottimeevent.HotTimeEvent
version: 1.0

commands:
  HotTimeEventTest:
    description: 플러그인이 정상 작동하는지 확인하세요.
    usage: /HET 를 입력하세요.
    aliases:
      - HET
    permission: hottimeevent.het
    permission-message: You do not have permission to use this command.

permissions:
  hottimeevent.het:
    default: op

테스트용 명령어와 권한까지 입력했다.
name에 띄어쓰기가 들어가면 안 된다. 이거 때문에 몇 시간을 헤맸다.

진입점


사진과 같이 패키지를 만들었다.
메인 클래스로 사용할 HotTime_Event 클래스를 생성하고 다음과 같이 코드를 입력했다.

package io.github.potato_y.hottimeevent;

import org.bukkit.plugin.java.JavaPlugin;

public class HotTime_Event extends JavaPlugin {
    @Override
    public void onEnable(){
        //플러그인 활성화
        getLogger().info("HotTime event on"); 
    }

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

빌드

몇 시간 만에 드디어 빌드를 한다.

package를 두 번 눌러준다.

빌드 완료!
프로젝트 폴더\target에 가면 사진과 같이 jar 파일이 생긴 것을 볼 수 있다.

서버 plugins 폴더에 추가


정상적으로 작동하는 것을 확인할 수 있다.

profile
공부 기록

0개의 댓글