본문 바로가기

플러그인 제작 강의

[마인크래프트 플러그인 제작 강의] 2강 간단한 플러그인 따라만들기

SMALL

 

 

안녕하세요.

 

오늘은 저번에 세팅한 개발환경 ( eclipse )를 이용하여 간단한 플러그인 제작을 해보겠습니다.

 

제가 추천드리는 코딩 공부하는 방법은 클론 코딩입니다.

 

실행되는 코드들을 그대로 따라 타이핑을 반복하다 보면 왜 이런 위치에 이러한 코드를 사용하는지 이해가 될 때가 생길 것입니다.

 

오늘은 모든 코드들을 이해하기보다는 이런 식으로 플러그인을 제작하는구나!라는 생각 정도로 가볍게 글을 보시기를 추천드립니다.

 

 

 

 

 

먼저 프로젝트를 생성하는 방법에 대해서 알려드리겠습니다. 

 

앞으로 나오게 될 프로젝트 이름, 클래스 이름, 패키지 이름 등은 오류를 방지하기 위해

모두 영어로 작성드리는 것을 추천합니다.

 

이클립스를 킨 후 사진을 참고하여 프로젝트를 생성해주세요.

 

표시한 부분에 플러그인 이름을 적어주세요. (같은 제목으로 생성 불가능)

 

프로젝트를 생성하고 , 마인크래프트 핵심 파일을 라이브러리로 등록하는 과정입니다.

저는 1.12.2를 기준으로 하겠습니다.

마인크래프트 서버 구동기가 있는 파일에서 .jar 파일을 찾아서 등록하면 됩니다.

 

 

아래와 같이 나온다면 라이브러리로 등록이 완료된 것입니다. 

finish버튼을 눌려 프로젝트 생성을 마무리해줍니다.

 

 

다음으로는 패키지, 클래스를 생성하겠습니다.

 다음 사진을 참고하여 따라 해 주세요.

 

 

Name에는 자신의 블로그 주소를 거꾸로 작성하거나 / com.이름.플러그인이름 으로 하시는 것을 추천드립니다.

package명은 다른 플러그인과 중복될 경우 에러가 발생하게 되므로 겹치지 않게 주의해서 작성해야 합니다.

 

패키지 생성이 완료되었습니다. 다음은 클래스를 생성하겠습니다.

 

대문자, 소문자를 잘 구분하여 작성해주세요! class의 맨 앞 문자는 대문자로 하는 게 규칙입니다

 

 

클래스 생성이 완료되었으면 드디어 코드를 작성할 시간입니다.

먼저 정상적으로 생성이 되었는지 확인해 봅시다.

 

빨간색으로 표시된 부분 / 파란색으로 표시된 부분들이 서로 같다면 정상적으로 생성된 것입니다.

파란색 부분이 패키지 이름, 빨간색 부분이 클래스 이름입니다. 잠시 후 사용될 예정이니 위치를 잘 기억해두세요!

 

 

형광펜으로 표시한 부분을 제외하고 아래와 똑같이 입력해주세요.

아래 코드를 전부 복사해서 붙여 넣기 해도 좋습니다.

 

import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.ConsoleCommandSender;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.plugin.java.JavaPlugin;

public class Main extends JavaPlugin implements Listener {
	
	ConsoleCommandSender consol = Bukkit.getConsoleSender();
	
	@Override
	public void onEnable() {
		
		consol.sendMessage( ChatColor.AQUA + "[플러그인 활성화 중 입니다.]");
		
		getServer().getPluginManager().registerEvents(this, this);
		
	}
	
	@Override
	public void onDisable() {
		
		consol.sendMessage( ChatColor.AQUA + "[플러그인 비활성화 중 입니다.]");

	}
	
	@EventHandler
	public void join(PlayerJoinEvent e) {
		
		e.setJoinMessage(  ChatColor.RED + "입장했습니다!"  );
		
	}
	
}

 

코드 작성이 끝났으면 plugin.yml 파일을 생성해보겠습니다.

 

다음과 같이 plugin.yml이라는 파일을 생성해주세요.

 

파일이 생성되었으면 아래와 같이 해주세요.

 

파일이 열렸으면 아래와 같이 작성해주세요.

 

main : 패키지명.Main

name : 플러그인이름

version : 1.0.0

author : 제작자

description : 설명

 

띄어쓰기, 소문자 대문자 전부 다 중요합니다. 형식이 틀리게 될 경우 정상적으로 작동되지 않습니다. 

main의 경우 지금 작성하고 있는 패키지.Main으로 작성하셔야 합니다.

저와 똑같이 작성하면 안 됩니다!

 

여기까지 하면 플러그인을 저장할 준비가 모두 끝났습니다.

이제 플러그인을 마인크래프트에 적용해보겠습니다.

 

JAR 파일을 저장할 경로는 마크 서버 폴더 안의 plugins으로 지정해주세요.

 

저장이 완료되었으면 버킷을 실행해주세요.

 

 

 플러그인에서 설정한 대로 전부 정상적으로 작동되는 것을 볼 수 있습니다!

 

만약 오류가 난다면

1. 라이브러리 등록이 정상적으로 되었는지 확인하시기 바랍니다.

2. Main.java 파일이 정상적으로 작성되었는지 다시 한번 확인 하시기 바랍니다.

(빨간색, 노란색 줄이 뜨면 잘못 입력했을 가능성이 큽니다.)

3. plugin.yml 파일이 정상적으로 작성되었는지 다시 한번 확인하시기 바랍니다.

4. plugin.yml 파일의 생성 위치를 확인하시기 바랍니다. 

(src 폴더가 아닌 프로젝트 폴더에 들어있어야 합니다.)

 

 

 

오류가 난다면 오류 내용을 덧글로 남겨주시면 최대한 빨리 답변해드리겠습니다. 

 

 

 

오늘 강좌는 여기서 마치도록 하겠습니다! 

 

다음 강의에서는 오늘 작성한 플러그인을 좀 더 발전시키는 과정과 함께

JAVA에서의 데이터 타입, 변수 등에 대해서 알려드리겠습니다.

 

 

 

 

아래 코드는 어떤 역할을 하는지 주석을 달은 코드입니다. 참고하시길 바랍니다!

import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.ConsoleCommandSender;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.plugin.java.JavaPlugin;

public class Main extends JavaPlugin implements Listener {
	
	ConsoleCommandSender consol = Bukkit.getConsoleSender();
   	 // 버킷의 콘솔을 선언하고 대입하는 과정입니다.
	
	@Override
	public void onEnable() {	// 버킷이 켜질때 실행되는 부분입니다.
		
		consol.sendMessage( ChatColor.AQUA + "[플러그인 활성화 중 입니다.]");
     	  	 // 콘솔에 메시지를 출력합니다
		
		getServer().getPluginManager().registerEvents(this, this);
		// 서버의 플러그인매니저에 이벤트를 등록합니다.
        
	}
	
	@Override
	public void onDisable() {	// 버킷이 꺼질때 실행되는 부분입니다.
		
		consol.sendMessage( ChatColor.AQUA + "[플러그인 비활성화 중 입니다.]");
      		 // 콘솔에 메시지를 출력합니다

	}
	
	@EventHandler
	public void join(PlayerJoinEvent e) {	// 플레이어가 입장할때 실행되는 부분입니다.
		
		e.setJoinMessage(  ChatColor.RED + "입장했습니다!"  );
      		  // 플레이어의 입장 메시지를 바꿉니다.
		
	}
	
}

 

 

LIST