모드 커뮤니티

이 게시판에 글을 승인 없이 바로 작성하시려면 인증 개발자 권한이 필요합니다. 언제든지 지원해주세요(바로가기).

플러그인

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

JSD-ITHAN 2020.01.21 조회 수 630 추천 수 3

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.commmand.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


 






 




12개의 댓글

이엘
27 일 전

저는 위에랑 똑같이 적었는데도 왜 안 될까요

DRDTF
2020.02.27

어려워보이지만 저도 한번 만들어볼게요

귤이
2020.02.10

코드적기 부분 리턴 위치 잘못되있는거 같아요..!

JSD-ITHAN
15 일 전
@귤이

어느 부분이요??

inecraft_player
2020.02.01

그냥 스크립트에 있어야겠다..

JSD-ITHAN
2020.02.01
@inecraft_player

문법은 스크립트가 더 쉽긴 해요...

저도 요즘 스크립트에 빠져 살고 있어요 ㅋㅋㅋ

아이스틴
2020.01.22

좀 어렵네요 ㅠㅅㅠ

JSD-ITHAN
2020.01.22
@아이스틴

음...제가 다음 강좌에서는 쉽게 설명해드리도록 하겠습니닷!

피드백 감사합니다!

아이스틴
2020.01.22
@JSD-ITHAN

처음배워서 어려운것 같아요. 나중에는 익숙해지겠죠!

JSD-ITHAN
2020.01.22
@아이스틴

그러겠죠! 저도 처음에 어려워서 포기하려고 했던 적 많은데 지금은 많이 익숙해졌어요:D

DDang_
2020.01.22

감사합니다 선생님

JSD-ITHAN
2020.01.22
@DDang_

:D

 

조회 수 제목 글쓴이
390 한디포 이용 규칙 15 초스터
626 한디포 이용 가이드! 처음 온 분은 읽어둡시다! 15 초스터
9124 한마포 AD 소개 (유료 광고 서비스) 57 U 프리루트
385 [플러그인] [마시자] 마인크래프트로 시작하는 Java 0강 - JDK 설치 / IntelliJ IDEA 설치 / Paper API 가져... 30 Kobins
421 [플러그인] [1강] 마인크래프트 플러그인 개발하기 - 활성화 비활성화 9 JSD-ITHAN
211 [프로그래밍 일반] [4강:Ping Pong!] 파이썬으로 디스코드봇 민들어보기 5 라고솔로가말했습니다
630 [플러그인] [2강]마인크래프트 플러그인 개발하기 - 긴 커맨드 12 JSD-ITHAN
47 [기타] [네모팁] 자주 사용하는 Git 명렁어 6 네모
34 [프로그래밍 일반] Python 강좌 3강 - 자료형이란 무엇일까? (1) sleepylapis
169 [플러그인] [마시자] 마인크래프트로 시작하는 Java 시리즈 2 Kobins
91 [프로그래밍 일반] Python 강좌 0강 - Python은 무엇일까요? 5 sleepylapis
126 [프로그래밍 일반] Python 강좌 2강 - 메세지 출력해보기 10 sleepylapis
67 [프로그래밍 일반] Python 강좌 1강 - Python을 설치해보아요! 3 sleepylapis
209 [스크립트] 명령어 막기 스크립트. 21 윈트초코
45 [데이터팩] 초큐의 데이터팩 초급 강좌! [1편 - 데이터팩 베이스 만들기] 윈트초코
96 [스크립트] `엔티티를 우클릭했을때` 이벤트 2 윈트초코
69 [플러그인] Spigradle - 더이상 plugin.yml 을 수동으로 만들지 마세요! EntryPoint
153 [플러그인] [5강]마인크래프트 플러그인 개발하기 - (ChatColor) 채팅 색깔 바꾸기 4 JSD-ITHAN

 

개발자 최신글
https://www.koreaminecraft.net/files/thumbnails/955/552/001/262x150.crop.jpg

구인

1.12.2 RPG서버 개발팀.건축팀 모집합니다/Esther.KR

Esther.KR

2020-04-10

0

사진이 없습니다.

구인

건축가, 스크립터를 구합니다! ※건축가를 더 빨리 구합니다!!!※

마크러버

2020-04-09

0