플러그인 인식에 성공하고 잠시 이벤트 처리를 위해 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);
}
}
이런식이다.
정상적으로 이벤트를 처리해줌을 알 수 있었다.