minecraft
Detektory zdarzeń w Forge
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);