Szukaj…


Tworzenie detektora zdarzeń w Forge

Tworzenie detektora zdarzeń w Forge jest bardzo podobne do tworzenia detektora zdarzeń w Bukket.

Tworzenie klasy detektora wymaga o wiele mniej. Brak interfejsu do wdrożenia lub innego importu.

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

Rejestracja wymaga przekazania instancji do magistrali zdarzeń Forge:

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

Istnieje kilka różnych autobusów zdarzeń w zależności od zdarzenia. Na przykład zdarzenia generowania rudy są uruchamiane w ORE_GEN_BUS . Możesz wywołać tę rejestrację z dowolnego miejsca, ale zaleca się, aby wywołać ją z głównej klasy mod (z adnotacją @Mod) lub z klasy proxy (niektóre zdarzenia są tylko po stronie klienta, a moduł obsługi zdarzeń po stronie klienta musi być wywoływany z serwera proxy klienta, w przeciwnym razie serwer dedykowany ulegnie awarii!)

Aby odsłuchać dowolne zdarzenie w klasie nasłuchiwania, musisz utworzyć metodę z adnotacją @SubscribeEvent w metodzie. Typ zdarzenia jest określony przez typ w jedynym argumencie metody. Metodę można nazwać dowolnie.

Zauważ, że niektóre typy zdarzeń są podtypami (do których powinien odwoływać się ich typ zamykający, np. CropGrowEvent.Pre ) i że niektóre zdarzenia mogą mieć fazę, ponieważ są uruchamiane w więcej niż jednym miejscu (np. Wszystkie TickEvent które są uruchamiane zarówno wcześniej i mimo wszystko kod waniliowy). Jako modder zawsze powinieneś sprawdzać obie te rzeczy i uruchamiać kod tylko w razie potrzeby.

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

Ponieważ mody Forge współdziałają bezpośrednio z elementami wewnętrznymi Minecrafta, modder otrzymuje wiele mocy, aby mieć wpływ na różne rzeczy, ale podobnie kod musi być zgodny z ramami wanilii: nie ma skrótów do wysyłania wiadomości, wiadomość musi być zbudowana z ITextComponents ręcznie, ale możliwość manipulowania tymi obiektami (np. Stosowanie formatowania kolorów) jest znacznie łatwiejsza. Na przykład:

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

Co daje następujący wynik: Wiadomość czatu



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow