minecraft
Event Lyssnare i Forge
Sök…
Skapa en händelse lyssnare i Forge
Att skapa en händelse lyssnare i Forge liknar mycket att skapa en i Bukket.
Att skapa lyssnarklass kräver mycket mindre. Det finns inget gränssnitt att implementera eller annan import.
public class ListenerClass { } //perfectly valid event listener class
För att registrera det krävs att instansen överförs till Forge-eventbussen:
MinecraftForge.EVENT_BUS.register(new ListenerClass());
Det finns ett par olika evenemangsbussar beroende på evenemanget. Till exempel avfyras ORE_GEN_BUS
på ORE_GEN_BUS
. Du kan ringa den här registreringen var som helst, men det rekommenderas att ringa det från antingen din huvudmodklas (med @Mod-kommentaren) eller från en proxy-klass (vissa händelser är endast klientsidan och en klientsidahändelseshanterare måste bara ringas från klientproxy, annars kraschar den dedikerade servern!)
För att lyssna på en given händelse i din lyssnarklass måste du skapa en metod med @SubscribeEvent-kommentar på metoden. Händelsetypen anges av typen i metodens enda argument. Metoden kan namnges vad du än vill.
Observera att vissa händelsetyper är subtyper (som bör hänvisas till av deras bifogande typ, t.ex. CropGrowEvent.Pre
) och att vissa händelser kan ha en fas eftersom det avfyras på mer än ett ställe (till exempel alla TickEvent
som avfyras båda innan och trots allt vaniljkod). Som modder bör du alltid leta efter båda dessa saker och bara köra din kod när det behövs.
public class ListenerClass {
@SubscribeEvent
public void onPlayerLogin(PlayerLoggedInEvent event) {
event.player.addChatMessage(new TextComponentString("Welcome to the server!"));
}
}
Eftersom Forge-mods interagerar direkt med Minecraft-internalen, ges massan mycket kraft till moddern för att kunna påverka saker, men på samma sätt måste koden följa vaniljramen: det finns inga genvägar för att skicka meddelanden, meddelandet måste konstrueras från ITextKomponenter manuellt, men förmågan att manipulera dessa objekt (som att tillämpa färgformatering) är mycket lättare. Till exempel:
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);