Suche…


Erstellen eines Ereignis-Listeners in Forge

Das Erstellen eines Ereignis-Listeners in Forge ähnelt sehr dem Erstellen von Bukket.

Das Erstellen der Listener-Klasse erfordert viel weniger. Es gibt keine Schnittstelle zum Implementieren oder andere Importe.

public class ListenerClass { } //perfectly valid event listener class

Für die Registrierung muss die Instanz an den Forge-Ereignisbus übergeben werden:

MinecraftForge.EVENT_BUS.register(new ListenerClass());

Je nach Veranstaltung gibt es mehrere verschiedene Veranstaltungsbusse. Beispielsweise werden ORE_GEN_BUS auf dem ORE_GEN_BUS . Sie können diese Registrierung von überall aus aufrufen. Es wird jedoch empfohlen, sie entweder von Ihrer Hauptmod-Klasse (mit der @Mod-Annotation) oder von einer Proxy-Klasse (einige Ereignisse sind nur clientseitig) aufzurufen, und ein clientseitiger Ereignishandler muss nur aufgerufen werden vom Client-Proxy aus, sonst stürzt der dedizierte Server ab!)

Um ein bestimmtes Ereignis in Ihrer Listener-Klasse abhören zu können, müssen Sie eine Methode mit der @SubscribeEvent-Annotation für die Methode erstellen. Der Ereignistyp wird von Type im einzigen Argument der Methode angegeben. Die Methode kann beliebig benannt werden.

Beachten Sie, dass einige Ereignistypen Untertypen sind (auf die von ihrem einschließenden Typ verwiesen werden sollte, z. B. CropGrowEvent.Pre ) und dass einige Ereignisse möglicherweise eine Phase haben, da sie an mehreren TickEvent ausgelöst werden (z. B. alle TickEvent die beide zuvor ausgelöst wurden.) und nach allem Vanille-Code). Als Modder sollten Sie immer nach diesen beiden Aspekten suchen und Ihren Code nur ausführen, wenn er benötigt wird.

public class ListenerClass {
    @SubscribeEvent
    public void onPlayerLogin(PlayerLoggedInEvent event) {
        event.player.addChatMessage(new TextComponentString("Welcome to the server!"));
    }
}

Da Forge-Mods direkt mit Minecraft-Interna interagieren, wird dem Modder viel Kraft verliehen, um Auswirkungen zu haben. Der Code muss jedoch ebenfalls dem Vanilla-Framework folgen: Es gibt keine Abkürzungen für das Senden von Nachrichten, aus denen die Nachricht erstellt werden muss ITextComponents manuell, aber die Möglichkeit, diese Objekte zu bearbeiten (z. B. Farbformatierung anwenden), ist wesentlich einfacher. Zum Beispiel:

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

Was ergibt folgendes Ergebnis: Chat-Nachricht



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow