minecraft
Forge의 이벤트 리스너
수색…
Forge에서 이벤트 리스너 만들기
Forge에서 이벤트 리스너를 생성하는 것은 Bukket에서 이벤트 리스너를 만드는 것과 매우 유사합니다.
리스너 클래스를 만드는 것은 훨씬 덜 필요합니다. 구현할 인터페이스 나 다른 가져 오기가 없습니다.
public class ListenerClass { } //perfectly valid event listener class
이를 등록하려면 인스턴스를 Forge 이벤트 버스로 전달해야합니다.
MinecraftForge.EVENT_BUS.register(new ListenerClass());
이벤트에 따라 두 종류의 이벤트 버스가 있습니다. 예를 들어, ORE_GEN_BUS
생성 이벤트는 ORE_GEN_BUS
에서 ORE_GEN_BUS
됩니다. 이 등록은 어느 곳에서나 호출 할 수 있지만, 기본 Mod 클래스 (@Mod 주석 포함) 또는 프록시 클래스 (일부 이벤트는 클라이언트 측에만 호출되며 클라이언트 측 이벤트 핸들러는 호출되어야 함)에서 호출하는 것이 좋습니다 클라이언트 프록시에서 그렇지 않으면 전용 서버가 중단됩니다!)
리스너 클래스에서 주어진 이벤트를 수신하려면 메소드에 @SubscribeEvent 주석이있는 메소드를 작성해야합니다. 이벤트 유형은 메소드의 유일한 인수에있는 유형에 의해 지정됩니다. 이 메서드는 원하는대로 지정할 수 있습니다.
일부 이벤트 유형의 하위 유형 참고 (자신의 둘러싸는 형태로 참조해야한다, 예를 들면 CropGrowEvent.Pre
)과이 같은 모든으로 (이상 한 장소에서 발사되는 일부 이벤트는 위상을 가질 수 TickEvent
의 전에 모두 해고되는 그리고 모든 바닐라 코드 이후). modder로서 항상이 두 가지를 확인하고 필요할 때만 코드를 실행해야합니다.
public class ListenerClass {
@SubscribeEvent
public void onPlayerLogin(PlayerLoggedInEvent event) {
event.player.addChatMessage(new TextComponentString("Welcome to the server!"));
}
}
Forge mods가 Minecraft 내부와 직접 상호 작용할 때, 사물에 영향을 줄 수있는 많은 힘이 modid에 주어 지지만 마찬가지로 코드는 바닐라 프레임 워크를 따라야합니다. 메시지를 보내는 지름길이 없습니다. 메시지는 ITextComponent는 수동으로 처리 할 수 있지만 이러한 개체를 조작하는 기능 (예 : 색상 서식 적용)은 훨씬 쉽습니다. 예 :
TextComponentString txt = new TextComponentString(
TextFormatting.LIGHT_PURPLE + "Welcome to the server!");
txt.appendSibling(new TextComponentString(
TextFormatting.AQUA + "Server has been online for " + x + " days"));
event.player.addChatMessage(txt);