BukkitWiki

Welcome to the BukkitWiki!

This Wiki is home to Bukkit's documentation and regulations surrounding the Bukkit Project and it's services. Want to help out? We would love to have you! Signup to get started!

READ MORE

BukkitWiki
Advertisement
TODOIcon Tłumaczenie wymagane!
Ta strona jest nie dokończona i może z tego względu zawierać niepełne informacje. W międzyczasie możesz zajrzeć na IRC lub do JavaDocs. Najprawdopodobniej w angielskiej wersji artykułu znajdziesz wszystkie potrzebne informacje.
TODOIcon


Tutorial schedulera[]

Ten poradnik pokaże Ci, jak w łatwy sposób można wykorzystywać możliwości Bukkitowego schedulera. Pozwala on na opóźnienie danego zadania na czas późniejszy. Nie należy tego mylić z rejestrowaniem Listenera, czyli bloku kodu wykonywanego podczas wystąpienia jakiegoś zdarzenia. Kod może też być wykonywany cyklicznie, z przerwami lub bez; będzie on wykonywany aż do momentu zakończenia zadania, jego anulowania lub wyłączenia pluginu.

BukkitRunnable[]

BukkitRunnable jest abstrakcyjną implementacją typu Runnable. Wspiera ona dodatkowe operacje, które dla zwykłej Runnable nie są możliwe. Jest to między innymi możliwość opóźnienia lub nawet anulowanie wykonywania samej siebie.

Definiowanie pracy[]

Plugin powinien najpierw rozwijać BukkitRunnable, aby móc definiować pracę wymagającą wykonania.

Przykład[]

import org.bukkit.Bukkit;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.scheduler.BukkitRunnable;

public class ExampleTask extends BukkitRunnable {

    private final JavaPlugin plugin;

    public ExampleTask(JavaPlugin plugin) {
        this.plugin = plugin;
    }

    public void run() {
        // Tu znajduje się to, co chcesz opóźnić
        plugin.getServer().broadcastMessage("Witaj na Bukkicie! Pamiętaj o zajrzeniu do dokumentacji :P");
    }

}

Opóźnianie pracy[]

Po zdefiniowaniu zadania, plugin musi je opóźnić. BukkitRunnable mogą zostać wykonane poprzez wywołanie na niej konkretnej metody. Ich lista znajduje się w JavaDocs dla BukkitRunnable. Wszystkie metody zwracają obiekt typu BukkitTask.

Warning Warning: Zadania asynchroniczne nigdy nie powinny wykorzystywać Bukkit API.

Przykład[]

Poniżej jest przykładowy plugin, który po dołączeniu gracza opóźnia zadanie na 20 ticków później.

import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.scheduler.BukkitRunnable;
import org.bukkit.scheduler.BukkitTask;

public final class ExamplePlugin extends JavaPlugin {

    @Override
    public void onEnable() {
        new ExampleListener(this);
    }
}

class ExampleListener implements Listener {

    private final ExamplePlugin plugin;

    public ExampleListener(ExamplePlugin plugin) {
        this.plugin = plugin;
        plugin.getServer().getPluginManager().registerEvents(this, plugin);
    }

    @EventHandler
    public void onJoin(PlayerJoinEvent event) {
        BukkitTask task = new ExampleTask(this).runTaskLater(plugin, 20);
    }

}

BukkitScheduler[]

Language   EnglishбеларускаяDeutschespañolsuomifrançaisitaliano한국어Nederlandsnorskpolskiportuguêsрусскийlietuviųčeština
Advertisement