よって提供されているスケジューラの使用方法をガイドします。スケジューラは、指定の時間後に実行される処理を書くことができます。これはリスナーやイベントへの応答で実行されるコードの記述方法とは異なります。繰り返しや、遅延の有無を設定したりすることもできます。この繰り返し処理は、処理が完了するか、キャンセルされるか、プラグインが無効になるまで実行できます。スケジューラを利用した実装は、次のような手順を踏んでください。run()メソッドで実装します。次に、前のステップで実装したクラスをインスタンス化し、スケジュールをしたい箇所で、runTaskLaterメソッドやrunTaskTimerメソッドなどを実行するように設定します。抽象クラスRunnableの実装クラスです。Runnableに無い便利な機能として、自身の処理を再スケジュールしたり、キャンセルしたりできることです。これはスケジュール処理のタスク定義の例です。スケジュールで実行する処理の内容をここに書きます。}}実装した処理のスケジューリング[編集]タスクを定義した後、プラグインは、タスクをスケジュールする必要があります。指定の時間になったら、タスクのインスタンスが起動され、メソッドが実行されます。これらのメソッドは共通して、BukkitTaskクラスのオブジェクトを返します。これは、プレイヤーがログインしたら、20ticks(=1秒)後にタスクを実行するスケジューラを登録する実装例です。メソッドで20ticks後に実行するように設定します。}}自己キャンセルの実装例[編集]今度は、プレイヤーがログインしたら、10ticks待った後、20ticksごとに5回実行し、その後スケジューラの処理をキャンセルする例を示します。1以上を指定してください。ここに、スケジュールの処理内容を実装します。}}無名クラスを使用した実装例[編集]毎回BukkitRunnableを継承したクラスを作成していると大変なので、BukkitRunnableを無名クラスとして内部に実装した例も示します。無名クラスを理解している場合は、こちらを使っても構いません。20ticks後に1度だけ実行される処理を、実装しつつ、そのままスケジュールします。スケジューラで実行される処理内容を、ここに実装します。↑そのままスケジュールします。}}BukkitScheduler[編集]BukkitSchedulerは、RunnableクラスやCallableクラスの、どちらかまたは両方を実装したクラスを、一定時間後に実行する機能を提供します。BukkitSchedulerのメソッドで実行できる内容は、BukkitRunnableのメソッドで実行できる内容と全く同じです。BukkitSchedulerでBukkitRunnableを実行することも可能ですが、BukkitRunnableのcancel()メソッドを使ってスケジューラをキャンセルすることができないことに注意してください。非推奨に設定されました。今後は前述のBukkitRunnableのメソッドを呼び出す方法を使用してください。実装例1[編集]無名クラスでRunnableを実装し、20ticks後に実行される例を示します。ここに処理を実装する。}}実行例2[編集]無名クラスでRunnableを実装し、20ticksごとにプラグインが終了するまでずっと実行され続ける例を示します。ここに処理を実装する。}}BukkitTask[編集]BukkitTaskクラスのオブジェクトは、Runnableがスケジュールされたときに返されます。このオブジェクトは、スケジューラにより実行されるスケジュールタスクを表現しています。Future[編集]Callableクラスは、同期処理を呼び出したときに、Futureクラスのオブジェクトを返します。これはJavaで提供されている機能やクラスです。非同期実行タスクは、BukkitのAPIを直接実行してはいけません。非同期タスクのコレクションにアクセスしたり、内容を変更しないでください。通常のコレクションはスレッドセーフではありません。非同期タスクは、同期タスクをスケジュールすることができます。同期タスクは、非同期タスクをスケジュールすることができます。