마인크래프트 플러그인 개발 - 1. 명령어 추가

kingcjy·2020년 2월 9일
1
post-thumbnail

소개

마인크래프트 플러그인은 서버에 부가기능을 추가하는것입니다.
이 글은 Spigot 1.12.2-R0.1-SNAPSHOT , EzFramework 1.1.1 버전을 사용합니다.

플러그인 개발에는 Ezframework 를 사용합니다
IDE는 IntelliJ 사용하며 Build Tool은 maven을 사용합니다.

이 글은 마인크래프트 서버에 대한 기본지식이 있다고 가정합니다.

Maven 설정

pom.xml

<repositories>
  <repository>
    <id>spigot-repo</id>
    <url>https://hub.spigotmc.org/nexus/content/repositories/snapshots/</url>
  </repository>
</repositories>
<dependencies>
  <dependency>
    <groupId>org.bukkit</groupId>
    <artifactId>bukkit</artifactId>
    <version>1.12.2-R0.1-SNAPSHOT</version>
  </dependency>
  <dependency>
    <groupId>io.github.kingcjy</groupId>
    <artifactId>ezframework-core</artifactId>
    <version>1.1.1</version>
  </dependency>
</dependencies>

<build>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-compiler-plugin</artifactId>
      <configuration>
        <source>1.8</source>
        <target>1.8</target>
        <compilerArgs>
          <arg>-parameters</arg>
        </compilerArgs>
      </configuration>
    </plugin>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-shade-plugin</artifactId>
      <executions>
        <execution>
          <phase>package</phase>
          <goals>
            <goal>shade</goal>
          </goals>
        </execution>
      </executions>
    </plugin>
  </plugins>
</build>

Main Class

마인크래프트 플러그인의 main class에는 JavaPlugin을 상속받아야합니다.
me.kingcjy.example.Main.java

public class Main extends JavaPlugin {
//    플러그인 활성화 시점에 호출
    @Override
    public void onEnable() {
//        프레임워크 초기화
        EzFramework.run(this);
    }
}

커맨드 추가

서버 전체에 메세지를 보내는 명령어를 추가합니다. /message send <message>
me.kingcjy.example.command.MessageCommand.java

@EzCommand("message")
public class MessageCommand {

    @Command("send <message>")
    public void broadcastMessage(@PathVariable String message) {
        Bukkit.broadcastMessage(message);
    }
}

plugin.yml 작성

resources/plugin.yml

name: <플러그인 이름>
main: <메인 클래스 (패키지 이름까지)>
version: <버전>

예시

name: testplugin
main: me.kingcjy.example.Main
version: 0.0.1

테스트

mvn package 명령어를 실행해 jar파일로 만듭니다.
target/폴더 안에 생성된 jar파일을 서버의 plugins/폴더에 넣고 서버를 실행합니다.

서버에 접속 후 /message send Hello World를 입력하면

위와 같이 메세지를 전송합니다.

Help 명령어 추가하기

플러그인에 help 명령어를 추가해 어떤 명령어가 있는지 확인할 수 있습니다.

me.kingcjy.example.command.MessageCommand.java

@GenerateHelpCommand
@EzCommand("message")
public class MessageCommand {

    @Command("send <message>")
    @Description("전체 플레이어에게 메세지를 보냅니다.")
    public void broadcastMessage(@PathVariable String message) {
        Bukkit.broadcastMessage(message);
    }
}

아까와 같이 서버에 적용시킨 후
/message help명령어를 입력하면 아래와 같이 메세지를 보냅니다.

Help 명령어 메세지 커스터마이징

resources/me/kingcjy/ezframework/resource/help.ez파일을 생성 후

<prefix>§2-------- [내 플러그인!!] --------</prefix>
<command>§3{help.command} -- {help.description}</command>
<suffix>§2-------------------------------</suffix>

위와 같이 작성한 후 서버에 적용시키면

이렇게 적용이됩니다.

끝!

샘플 소스는 >> GITHUB <<에 있습니다.

profile
아 개발잘하고싶다

0개의 댓글