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

Vilket ger följande resultat: Chattmeddelande



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow