수색…


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);

다음 결과가 나온다. 채팅 메시지



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow