개인 자료란 (JE)

  서버 커뮤니티

Profile JSD-ITHAN 대표칭호 없음
Profile

강좌 자바 에디션(JE) 플러그인 개발

[2강]마인크래프트 플러그인 개발하기 - 긴 커맨드

2020.01.21 조회 수 8560 추천 수 5
분야 플러그인 
게임버전 모든버전 

0.준비 할 것

스피곳 버킷 Build Path 하기
이클립스 프로그램

자바 8 버전(스피곳에서 8버전을 사용해야 안정적임)


1.새 프로젝트 만들기

먼저 1강 처럼 새 프로젝트를 하나 만들어줍니다.

그다음에 프로젝트를 우클릭에서 BuildPath를 누르시고 Add External Archives를 눌러줍니다. 만약 이렇게 하면 파일을 고르라는 창이 하나 뜰 것입니다. 그 때 스피곳 버킷을 추가 해주시면 됩니다.

https://getbukkit.org/download/spigot 

여기서 자신의 마인크래프트 버전에 맞게 스피곳 버킷을 다운로드 해주시면 됩니다.

이클립스에서

프로젝트를 더블클릭 -> src 폴더 우클릭 -> New Package 만들기 -> 자신이 만든 패키지 우클릭 -> Class 만들기를 해주시면 됩니다.

저는 패키지 이름을 test라고 하였고 클래스 이름을 Main이라고 하였습니다. 그래서 코드를 보여 드릴 건데 복사 붙여넣기 하실 분들은 패키지와 클래스 이름을 바꾸시면 될 것 같습니다.

그럼 모든 준비는 다 끝났습니다.

2. 코드 적기

package test;

import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.plugin.java.JavaPlugin;

public class Main extends JavaPlugin{

    @Override
    public void onEnable() {
        System.out.println("Plugin is Activated");
    }
    @Override
    public void onDisable() {
        System.out.println("Plugin is DisActivated");
    }
    
    @Override
    public boolean onCommand(CommandSender sender, Command cmd, String label, String [] args)         
    {
    if(cmd.getName().equalsIgnoreCase("t")) {
        if(args.length == 0) {
             sender.sendMessage(ChatColor.RED + "Type the command to execute.");
        }
        else if(args[0].equalsIgnoreCase("info")) {
            sender.sendMessage(ChatColor.YELLOW + "This Plugin is Made By JSD-ITHAN");
        }
        else {
        sender.sendMessage(ChatColor.RED + "Command is not correct.");
        }
   return true;
    }
}

3. 코드 해석

위의 코드를 간단하게 해석 해들겠습니다. 먼저 boolean은 자바에서 논리형으로서, 뒤에 return true/false를 꼭 써주셔야 합니다

CommandSender sender은 커맨드를 입력한 사람입니다. 이것은 플레이어가 될 수도 있고 콘솔 창도 될 수 있습니다.

Command command cmd커맨드를 말하는 것입니다.

그리고 위의 코드는 long command라고 해서 "t" 로 여러가지 명령어를 수행 할 수 있습니다.

예를 들어서  /t info를 쓸 수 있고 명령어를 더 추가해 준다면 "/t 수행할 명령어" 이렇게 여러가지 명령을 수행 할 수 있습니다.

"if(args.length == 0)"은 플레이어가 /t 까지만 입력하고 뒤에 명령을 안 썼다면  빨간색으로 수행할 명령을 입력하라고 플레이어에게 메세지를 보내는 것입니다.

"else if(args[0].equalsIgnoreCase("info"))" 는 /t info라고 쳤을 때 노란색으로 "이 프로그램을 만든 사람은 JSD-ITHAN입니다"라고 영어로 출력해 줍니다.

마지막으로 else는 /t 뒤에 정확한 명령어가 아닌 잘못 된 명령을 입력하였을 때 "명령어가 정확하지 않습니다." 라고 플레이어에게 메세지를 보냅니다.

4.plugin.yml

마지막 단계는 plugin.yml 파일을 만들어야 합니다.

모든 마인크래프트 플러그인에는 plugin.yml 파일이 들어 있어야 합니다. 만약 없다면 실행 시킬 대 invalid plugin.yml이 뜨거나 

plugin.yml이 없다고 뜹니다.

프로젝트 우클릭 ->  New -> File -> 이름에다가 plugin.yml이라고 적어주시면 됩니다.

먼저 plugin.yml에는 이름, 버전, 메인, 커맨드가 있는 경우는 커맨드까지 써주셔야 합니다. 그리고 Description이라고 설명글을 쓸 수 있는데 여기서 한글을 쓰면 오류가 날 수도 있습니다.

name: TestPlugin
version: 1.0
main: test.Main
commands:
  t:
    description: "About Plugin"

이렇게 써주시면 됩니다. description, name, version에는 마음대로 하시면 됩니다. 하지만 main에는 "패키지이름.클래스이름"

꼭! 이렇게 써주셔야 합니다. 저 같은 경우는 패키지 이름이 test이고 클래스 이름이 Main이기 때문에 test.Main이라고 했습니다.

5.Export Jar

이제 모든 것이 끝났습니다.

이제 프로젝트를 Jar 파일로 빼냅시다.

프로젝트 우클릭 -> Export -> Java 폴더에서 JAR file 선택 후 Next -> 자신의 프로잭트 선택, Jar 파일을 어느 폴더에다가 둘지 설정하기 -> Finish 누르면 끝.

그리고 자신이 만든 프로젝트를 버킷 서버의 plugins 폴더에 넣고 버킷을 실행시켜 줍니다.

콘솔에서 pl이라고 적어서 플러그인이 정상적으로 실행 되는 지 확인하고 게임에서 /t info를 치시거나 /t 를 치셔서 플러그인이 잘 실행 되는지 확인합니다.

궁금하시거나 안 되는 것들은 댓글에다가 적어주시면 감사하겠습니다:D


 









21개의 댓글

옹비버
2021.11.09

안녕하세요. 글 잘봤습니다. 좋은 정보 감사합니다.

혹시 명령어를 't'말고 다른 명령어를 추가하고 싶을때는 plugin.yml에 commands를 어떻게 추가하나요?

답변 주시면 감사하겠습니다.

뉴스 및 창작물
/files/thumbnails/483/916/003/262x150.crop.jpg?20241127115329

레드스톤

[노트블럭 커버] 뉴진스 - ETA 2

노트블럭전문가

2024-11-27

0

/files/thumbnails/150/925/003/262x150.crop.jpg?20241123005717

건축

응답하라 1988 ?

팀뉴일리시

2024-11-23

4

/files/thumbnails/761/908/003/262x150.crop.jpg?20241025153749

건축

서울 숭례문(崇禮門) 6

KHC

2024-10-25

2

/files/thumbnails/578/899/003/262x150.crop.jpg?20241010142350

건축

경주 월정교 1

KHC

2024-10-10

2

/files/thumbnails/219/899/003/262x150.crop.jpg?20241009200950

건축

송전탑+도시 2

dbasd12

2024-10-09

2

/files/thumbnails/246/898/003/262x150.crop.jpg?20241008102328

레드스톤

단다단 - 오토노케(オトノケ) | 마인크래프트 노트블럭 커버

노트블럭전문가

2024-10-08

1

/files/thumbnails/348/896/003/262x150.crop.jpg?20241006103035

디도스/봇테러등등을 낚는 방법 5

물귀신

2024-10-06

3