
I. Wstęp
Witajcie w drugiej części ze serii poradników, pisania pluginów do serwera Bukkit! Dzisiaj, poznamy tzw. Listenery, dzięki którym, będziemy mogli reagować na eventy, które dokonały się na serwerze.
II. Tworzenie nowego Listenera
Dobrze, stwórzmy sobie nową klasę o nazwie Listeners i zaimplementujmy klasę Listener:
public class Listeners implements Listener
Teraz należy stworzyć nowego voida, i nad nim dodać adnotację @EventHandler:
@EventHandler public void onJoin() { }
W parametrach void'a, należy podać event, który Ciebie będzie interesował. Ja dzisiaj pokażę na przykładzie AsyncPlayerPreLoginEvent. Jest to event asynchroniczny (wykonujący się poza głównym wątkiem serwera), dzięki czemu nie wpływa w głównej mierze na pracę serwera:
@EventHandler public void onJoin(AsyncPlayerPreLoginEvent event) { }
Po stworzeniu void'a, przystępujemy do działania. Patrząc w dokumentację klasy AsyncPlayerPreLoginEvent, możemy pobrać UUID gracza, który aktualnie się loguje. I to wykonajmy:
@EventHandler public void onJoin(AsyncPlayerPreLoginEvent event) { final UUID uuid = event.getUniqueId(); }
I teraz możemy z tym UUID zrobić, co nam się chcę. Załadować do mapki, czy jak ja przedstawie niżej, wyświetlić na chacie:
@EventHandler public void onJoin(AsyncPlayerPreLoginEvent event) { final UUID uuid = event.getUniqueId(); Bukkit.broadcastMessage(uuid.toString()); }
Cała klasa o nazwie Listeners prezentuje się tak:
import org.bukkit.Bukkit; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.player.AsyncPlayerPreLoginEvent; import java.util.UUID; public class Listeners implements Listener { @EventHandler public void onJoin(AsyncPlayerPreLoginEvent event) { final UUID uuid = event.getUniqueId(); Bukkit.broadcastMessage(uuid.toString()); } }
Teraz nam pozostało zarejestrować Listener, w naszej klasie głównej;
import org.bukkit.Bukkit; import org.bukkit.plugin.java.JavaPlugin; public class Main extends JavaPlugin { @Override public void onEnable() { Bukkit.getPluginManager().registerEvents(new Listeners(), this); } @Override public void onDisable() { // do something } }
W tym momencie wystarczy skompilować plugin, i wrzucić kod na nasz serwer
Przydatne linki:
- Javadoc: klik (tam znajdziesz więcej m.in. więcej eventów).
-
Eventy:
- Package org.bukkit.event: klik
- Package org.bukkit.event.block: klik
- Package org.bukkit.event.enchantment: klik
- Package org.bukkit.event.entity: klik
- Package org.bukkit.event.hanging: klik
- Package org.bukkit.event.inventory: klik
- Package org.bukkit.event.painting: klik
- Package org.bukkit.event.player: klik
- Package org.bukkit.event.server: klik
- Package org.bukkit.event.vehicle: klik
- Package org.bukkit.event.weather: klik
- Package org.bukkit.event.world: klik