본문 바로가기

카테고리 없음

Minecraft Plugin EVENT

반응형

플러그인 인식에 성공하고 잠시 이벤트 처리를 위해 api를 살펴보고 있는데

아무리 봐도 어떻게 쓰는지를 모르겠었다.


클래스 만들어서 상속도 시켜보고 해봤지만 도저히 안되었었는데

조사해보니 따로 방법이 있었다.


---------------------------------------------------------------------------

개발환경

JDK : 1.8

Server : Spigot 1.12.2


----------------------------------------------------------------------------

PluginManager라는 인터페이스가 필요하다.


PluginManager pm = getServer().getPluginManager();

위와같이 선언 후


pm.registerEvents(Class, Plugin);

으로 등록을 해야한다.


Class는 객체를 생성해서 넘겨준다. new MyEvent()

Plugin은 JavaPlugin을 상속받은 클래스에서 this를 넣어줘도 된다.

---------------------------------------------------------------------------

이후는 쉽다.


public class MyEvent implements Listenr{



}


처럼 클래스를 생성하고 인터페이스를 상속받는다.

이 후, 생성자는 기본생성자를 사용해도 되며 함수 선언에 대해서 함수명은 자유인듯 하다.

대신, 함수가 받는 매개값을 이벤트 클래스로 받도록 한다.



public void onMoveEvent(PlayerMoveEvent event){

if(event.getTo().getBlockX() > 500 || event.getTo().getBlockZ() > 500){

event.getPlayer().sendMessage("나가지마요!");

event.setCancelled(true);

}

}


처음엔 이렇게 작성을 했는데, 작동하질 않았었다.

그 이유는, 이벤트핸들러를 지정해주지 않아서였다.



@EventHandler(priority = EventPriority.NORMAL)

public void onMoveEvent(PlayerMoveEvent event){

if(event.getTo().getBlockX() > 500 || event.getTo().getBlockZ() > 500){

event.getPlayer().sendMessage("나가지마요!");

event.setCancelled(true);

}

}


이런식이다.

정상적으로 이벤트를 처리해줌을 알 수 있었다.

반응형