minecraft
Escuchas de eventos en Forge
Buscar..
Creando un detector de eventos en Forge
Crear un detector de eventos en Forge es muy similar a crear uno en Bukket.
Crear la clase de oyente requiere mucho menos. No hay interfaz para implementar u otras importaciones.
public class ListenerClass { } //perfectly valid event listener class
Para registrarlo es necesario pasar la instancia al bus de eventos de Forge:
MinecraftForge.EVENT_BUS.register(new ListenerClass());
Hay un par de diferentes autobuses de eventos dependiendo del evento. Por ejemplo, los eventos de generación de mineral se ORE_GEN_BUS
en el ORE_GEN_BUS
. Puede llamar a este registro desde cualquier lugar, pero se recomienda hacerlo desde su clase de mod principal (con la anotación @Mod) o desde una clase de proxy (algunos eventos son solo para el cliente y un controlador de eventos del lado del cliente solo debe llamarse desde el proxy del cliente, de lo contrario el servidor dedicado se bloqueará!)
Para escuchar cualquier evento dado en su clase de oyente, debe crear un método con la anotación @SubscribeEvent en el método. El tipo de evento es especificado por el Tipo en el único argumento del método. El método puede ser nombrado como quieras.
Tenga en cuenta que algunos tipos de eventos son subtipos (a los que se debe hacer referencia por su tipo adjunto, por ejemplo, CropGrowEvent.Pre
) y que algunos eventos pueden tener una Fase ya que se dispara en más de un lugar (como todos los TickEvent
s que se disparan antes) y después de todo el código de vainilla). Como moderador, siempre debe verificar estas dos cosas y solo ejecutar su código cuando sea necesario.
public class ListenerClass {
@SubscribeEvent
public void onPlayerLogin(PlayerLoggedInEvent event) {
event.player.addChatMessage(new TextComponentString("Welcome to the server!"));
}
}
Como los mods de Forge interactúan directamente con los elementos internos de Minecraft, se le da mucha potencia al modder para poder afectar a las cosas, pero de manera similar, el código debe seguir el marco de vainilla: no hay atajos para enviar mensajes, el mensaje debe construirse desde ITextComponents manualmente, pero la capacidad de manipular estos objetos (como aplicar el formato de color) es mucho más fácil. Por ejemplo:
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);
Lo que da el siguiente resultado: