Skocz do zawartości
  • Pisanie pluginów pod Bukkit #2 - Listenery

       (0 opinii)

    Nieaktywny

    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



    Opinie użytkowników

    Dołącz do dyskusji

    Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

    Nieaktywny

×
×
  • Dodaj nową pozycję...