지난 번에 모든 세팅을 하였습니다.
이번에는 예정대로 메인 클래스와 플러그인 작동 및 종료 로그를 보내도록 하겠습니다.
먼저 아마 저번에 세팅했던 플러그인 이름이 메인 클래스로 이미 되어 있을 겁니다.
public final class 메인 클래스명 extends JavaPlugin {
@Override
public void onEnable() {
// Plugin startup logic
}
@Override
public void onDisable() {
// Plugin shutdown logic
}
}
메인 클래스에 멤버 변수를 선언하여, 간단하게 로그를 보낼 수 있도록 합니다.
(※멤버변수란? 클래스 내부에 존재하는 변수로서 클래스 변수 혹은 인스턴스 변수로 구분 지을 수 있는 변수 입니다.
예를 들어
public class Main {
public static void main(String[] args) {
Test test;
}
}
class Test {
int value = 15;
}
여기서 Test 클래스의 멤버 변수는 value입니다.
value는 클래스 변수입니다.
public class Main {
public static void main(String[] args) {
Test test = new Test(15);
System.out.println(test.value);
}
}
class Test {
int value;
public Test(int value) {
this.value = value;
}
}
위 처럼 할 경우, 인스턴스화를 거치기때문에 value는 멤버 변수이자, 인스턴스 변수입니다.
(사실, 클래스 변수나 인스턴스 변수 보다는 멤버 변수라는 것만 아셔도 됩니다.)
마크 로그는 콘솔 로그를 사용하므로
JavaPlugin에 있는 ConsoleCommandSender 를 멤버 변수로 선언하여 로그 메시지를 전송할 수 있도록 합니다.
ConsoleCommandSender consoleSender = Bukkit.getConsoleSender();
이후, onEnable 메소드에서
주석으로
// Plugin startup logic
라고 있는 것으로 보아, 플러그인의 시작 코드임을 알 수 있다.
이 영역에서 시작 로그를 콘솔로 보낼 것이다.
위 Spigot overview에서 있듯이 consoleSender::sendMessage 메소드를 사용하여,
원하는 문자열 로그를 보낼 수 있다고 한다.
저는 "[ activate plugin ]"라고 보내고 싶기때문에
consoleSender.sendMessage("[ activate plugin ]");
라고 적었습니다.
onDisable 메소드도 있는 데,
이는 플러그인이 종료될 때 발생하는 메소드이므로
콘솔에 플러그인 종료 로그를 설정하면 된다.
위와 마찬가지로 sendMessage 메소드를 사용하여 종료 로그를 설정합니다.
이가 전부 설정되었다면
Maven, Gradle 둘 다 아니신 분은 직접 수동으로 jar 파일로 압축하시면 됩니다.
수동으로하는 방법은
File -> Project Structure -> Artifacts에서 '+' -> JAR -> EMPTY 를 하시고
이름 알아서 설정하시고 APPLY
(output directory로 원하는 디렉토리로 보내는 것도 가능합니다.)
그 이후, Build -> build artifacts에서 빌드하시면 됩니다.
Gradle는
Run -> Run -> Edit Configuration -> '+' -> Gradle 선택 -> 실행할 프로젝트 선택 -> Arguments -> clean build
라고 수동으로 추가하셔도 되고, 그냥
에 있는 초록색 버튼 중 세모(?) 버튼을 누르면 작동합니다.
Maven 역시 수동은 Gradle과 마찬가지입니다.
이후, 해당 jar 파일이 생성된 디렉토리로 이동하여
마크 서버 파일에 있는
plugins로 옮겨줍니다.
이후, 배치 파일을 실행하여, 제대로 작동하는 지 여부를 확인합니다.
오류가 있는 지 확인하는 방법은 간단합니다.
콘솔창에 [Server thread/ERROR] 이라는 로그가 있다면 에러가 난 것입니다.
또는 작성한 로그가 제대로 나오지않아도 에러가 발생한 것입니다.
오류가 없다면 onEnable에 작성한 로그 메시지가 제대로 출력될 것입니다.
이상입니다.