minecraft
Ascoltatori di eventi a Forge
Ricerca…
Creazione di un listener di eventi in Forge
Creare un listener di eventi in Forge è molto simile a crearne uno in Bukket.
La creazione della classe listener richiede molto meno. Non c'è interfaccia per implementare o altre importazioni.
public class ListenerClass { } //perfectly valid event listener class
Per registrarlo è necessario passare l'istanza al bus di eventi Forge:
MinecraftForge.EVENT_BUS.register(new ListenerClass());
Ci sono un paio di bus per eventi diversi a seconda dell'evento. Ad esempio, gli eventi di generazione di minerali vengono attivati su ORE_GEN_BUS
. Puoi chiamare questa registrazione da qualsiasi luogo, ma è consigliabile chiamarla dalla tua classe mod principale (con l'annotazione @Mod) o da una classe proxy (alcuni eventi sono solo lato client e un gestore eventi lato client deve essere chiamato dal proxy client, altrimenti il server dedicato si bloccherà!)
Per ascoltare un determinato evento nella classe del listener, è necessario creare un metodo con l'annotazione @SubscribeEvent sul metodo. Il tipo di evento è specificato dal tipo nel solo argomento del metodo. Il metodo può essere nominato come desideri.
Si noti che alcuni tipi di eventi sono sottotipi (a cui si deve fare riferimento con il loro tipo di allegato, ad esempio CropGrowEvent.Pre
) e che alcuni eventi possono avere una fase in quanto viene TickEvent
in più di una posizione (come tutti i TickEvent
che vengono attivati entrambi prima e dopo tutto il codice di vaniglia). Come modder devi sempre controllare entrambe le cose e solo eseguire il tuo codice quando necessario.
public class ListenerClass {
@SubscribeEvent
public void onPlayerLogin(PlayerLoggedInEvent event) {
event.player.addChatMessage(new TextComponentString("Welcome to the server!"));
}
}
Poiché le mod di Forge interagiscono direttamente con gli interni di Minecraft, viene data molta potenza al modder per poter influenzare le cose, ma allo stesso modo, il codice deve seguire il framework vanilla: non ci sono scorciatoie per inviare messaggi, il messaggio deve essere costruito da ITextComponents manualmente, ma la capacità di manipolare questi oggetti (come ad esempio l'applicazione della formattazione del colore) è molto più semplice. Per esempio:
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);
Il che dà il seguente risultato: