티스토리 뷰

728x90

 

원본 영상 - TechnoVision의 스피곳 플러그인 강좌 #2

 

2022.08.14 - [코딩/Java] - Java로 마인크래프트 플러그인 개발 세팅하기

 

Java로 마인크래프트 플러그인 개발 세팅하기

원본 영상 - TechnoVision의 스피곳 플러그인 강좌 1. 준비물 · 자바 JDK 8 - https://www.oracle.com/java/technologies/downloads/#java8 · 인텔리제이 / 이클립스 등등 자바 에디터 인텔리제이 - https://www..

devgarlic.tistory.com

해당 글에서 이어지는 내용입니다 :D

 

1. 패키지를 만들어보자

패키지란? - 우리가 폴더를 만들어 비슷한 유형의 파일을 모아두듯이, 자바도 비슷한 클래스를 패키지로 묶는다.

우리는 플러그인을 만들 것이고, 이 안에 들어가는 클래스들은 비슷한 유형을 띄기에 우리도 패키지로 이를 관리해보자.

지난 시간에 만든 인텔리제이 프로젝트를 열어보면, 디렉토리가 이런 식으로 되어 있는 것을 볼 수 있을 것이다.여기서 저 파란색 src 폴더, 저기가 우리의 코드가 저장되는 디렉토리이다.우클릭을 하고 새 패키지의 이름을 지어주도록 하자.

패키지의 이름은 보통 사이트 도메인의 이름으로 정하는 것이 보통인데,

정 없다면 com.name.projectname 형식으로 짓는 것이 옳다고 한다.

 

2. 새 클래스를 생성해보자

패키지를 클릭하고 New -> Java Class를 생성해주자.

처음 만들어낼 클래스는 플러그인의 시작과 끝을 관리하는 OnEnable() 과 OnDisable()이 들어갈 것이기에,

클래스의 이름을 프로젝트와 동일하게 지어주도록 하자.

 

코드 몇 줄을 좀 더 추가해보자.

 

package com.galakrond.leagueweapons;

import org.bukkit.plugin.java.JavaPlugin;

public class LeagueWeapons extends JavaPlugin{

    @Override
    public void onEnable() { }

    @Override
    public void onDisable() { }

}

복붙은 하지 말자, 코드를 이해하기 위해서는 빽빽이처럼 직접 작성해보는 것도 중요하다.

import를 추가해 JavaPlugin을 불러오고, API를 사용할 수 있도록 준비한다.

우리가 만든 이 클래스 파일이 JavaPlugin을 상속시키도록 extends를 붙여준다.

@Override 는 상속된 클래스의 메소드를 상속받는다. 우리는 JavaPlugin을 상속받았기에 저 두 메소드를 사용한다.

onEnable() / onDisable()은 각각 플러그인의 시작 / 종료 때 실행되는 메서드이다.

 

 

@Override에 관해 더 자세하게 알고 싶다면 여기로 -> https://velog.io/@polynomeer/JAVA의-오버라이딩Override

 

JAVA의 오버라이딩(Override)

Override는 '기각하다', '무시하다'의 뜻을 담고있다. 즉, '기존의 것을 무시하고 덮어쓰다.'의 의미를 가진다. 자바에서 메소드 오버라이딩이란, 상속의 관계에 있는 클래스 간에 하위 클래스가 상

velog.io

 

3. 나는 이런 플러그인이다 - plugin.yml

 

다음은 패키지 밖에다가 plugin.yml을 만들어보자.

즉 src 폴더 바로 밑에다가 New -> file -> plugin.yml을 누르면 된다.

 

이런 식으로 준비가 완료되었다면 내용을 적어보도록 하자. 

그 전에 plugin.yml이 무슨 역할을 하는지 알아보자면, 

plugin.yml은 플러그인의 기초적인 정보에 대해서 알려주는 파일이다. 

플러그인의 이름, 버전, 설명 등등의 내용이 들어가며, 이 파일이 없으면 플러그인이 서버 내에서 동작하지 않는다.

 

name : 이름

version : 해당 플러그인의 버전

author : 제작자의 이름

main : 아까 우리가 만들어뒀던 onEnable() / onDisable()이 들어간 코드의 위치

api-version :  지원하는 API 버전, 1.14 내지는 자신의 API 버전을 작성하는 것이 낫다.

원문을 빌려와보면,

 

API - version
사용할 API 버전입니다.
1.13, 1.14, 1.15, 1.16, 1.17, 1.18 및 1.19가 사용 가능한 버전입니다.
이것은 플러그인이 특정 서버 버전을 염두에 두고 코드화되어 있으며,

이전 버전과의 호환성 조치를 적용해서는 안 된다는 것을 서버에 알립니다.

따라서 이전 구성, 데이터 등을 읽을 수 있도록 코드를 프로그래밍했는지도 확인해야 합니다.

각 서버 버전은 호환성을 달성하는 방법을 결정할 수 있으며, 다른 버전에서는 플러그인을 사용할 수 없게 막습니다.

1.14 릴리스에서 api-version 1.13은 여전히 허용되지만, 이후 버전에서는 이 버전에 따라 지원이 중단될 수 있습니다.

 

라고 쓰여져 있다.

이 외에도 plugin.yml에는 작성할 수 있는 내용이 더 있는데, 해당 링크를 참조하자.

https://www.spigotmc.org/wiki/plugin-yml/

 

 

4. 콘솔 나와! 시작 메시지를 띄워보자

다시 메인 클래스로 돌아와서 해당 코드를 입력해주자 -

 

package com.galakrond.leagueweapons;

import org.bukkit.ChatColor;
import org.bukkit.plugin.java.JavaPlugin;

public class LeagueWeapons extends JavaPlugin{

    @Override
    public void onEnable() {
        getServer().getConsoleSender().sendMessage(ChatColor.GREEN + "[LeagueWeapon]: Hello World!");
    }

    @Override
    public void onDisable() {
        getServer().getConsoleSender().sendMessage(ChatColor.RED +"[LeagueWeapon]: Goodbye World!");
    }

}​

대강 추가된 라인을 설명하자면

서버 가져오기.콘솔 메시지 처리기 가져오기. 메시지 전송 ( 색상.색상명 + "string" );

 

이상으로 이번 글은 마치고, 다음번 글은 

서버를 직접 구동시키고 접속해보고, 명령어를 만들어보도록 하겠다.

 

유용한 내용이었다면 댓글과 하트를 달아주세요, 제게 큰 힘이 됩니다 :D

 

 

 

728x90
댓글
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함