提供: Minecraft Modding Wiki
この編集を取り消せます。
下記の差分を確認して、本当に取り消していいか検証してください。よろしければ変更を保存して取り消しを完了してください。
最新版 | 編集中の文章 | ||
7行目: | 7行目: | ||
スケジューラを利用した実装は、次のような手順を踏んでください。 | スケジューラを利用した実装は、次のような手順を踏んでください。 | ||
− | # | + | # まずスケジューラにより実行される処理内容を、[[#BukkitRunnable|BukkitRunnable]] を継承したクラスの run()メソッドで実装します。 |
− | # | + | # Bukkit.getScheduler() でBukkitSchedulerを取得し、前のステップで実装したクラスを実行するように設定します。 |
== BukkitRunnable == | == BukkitRunnable == | ||
15行目: | 15行目: | ||
Runnableに無い便利な機能として、自身の処理を再スケジュールしたり、キャンセルしたりできることです。 | Runnableに無い便利な機能として、自身の処理を再スケジュールしたり、キャンセルしたりできることです。 | ||
− | == | + | == 定義方法の例 == |
スケジューラの処理を定義するには、まず BukkitRunnable を extends しましょう。 | スケジューラの処理を定義するには、まず BukkitRunnable を extends しましょう。 | ||
+ | |||
+ | ==== 具体例 ==== | ||
これはスケジュール処理のタスク定義の例です。 | これはスケジュール処理のタスク定義の例です。 | ||
<blockquote><source lang="java"> | <blockquote><source lang="java"> | ||
import org.bukkit.Bukkit; | import org.bukkit.Bukkit; | ||
+ | import org.bukkit.plugin.java.JavaPlugin; | ||
import org.bukkit.scheduler.BukkitRunnable; | import org.bukkit.scheduler.BukkitRunnable; | ||
− | + | ||
public class ExampleTask extends BukkitRunnable { | public class ExampleTask extends BukkitRunnable { | ||
− | + | ||
− | |||
public void run() { | public void run() { | ||
// スケジュールで実行する処理の内容をここに書きます。 | // スケジュールで実行する処理の内容をここに書きます。 | ||
34行目: | 36行目: | ||
</source></blockquote> | </source></blockquote> | ||
− | == | + | == 作業のスケジューリング == |
タスクを定義した後、プラグインは、タスクをスケジュールする必要があります。<br> | タスクを定義した後、プラグインは、タスクをスケジュールする必要があります。<br> | ||
40行目: | 42行目: | ||
詳細は、BukkitRunnableのjavadoc を参照してください。<br> | 詳細は、BukkitRunnableのjavadoc を参照してください。<br> | ||
これらのメソッドは共通して、BukkitTaskクラスのオブジェクトを返します。 | これらのメソッドは共通して、BukkitTaskクラスのオブジェクトを返します。 | ||
+ | |||
+ | ==== 具体例 ==== | ||
これは、プレイヤーがログインしたら、20ticks(=1秒)後にタスクを実行するスケジューラを登録する実装例です。 | これは、プレイヤーがログインしたら、20ticks(=1秒)後にタスクを実行するスケジューラを登録する実装例です。 | ||
47行目: | 51行目: | ||
import org.bukkit.event.player.PlayerJoinEvent; | import org.bukkit.event.player.PlayerJoinEvent; | ||
import org.bukkit.plugin.java.JavaPlugin; | import org.bukkit.plugin.java.JavaPlugin; | ||
− | + | import org.bukkit.scheduler.BukkitRunnable; | |
− | public class ExamplePlugin extends JavaPlugin implements Listener { | + | import org.bukkit.scheduler.BukkitTask; |
− | + | ||
+ | public final class ExamplePlugin extends JavaPlugin implements Listener { | ||
+ | |||
@Override | @Override | ||
public void onEnable() { | public void onEnable() { | ||
− | getServer().getPluginManager().registerEvents(this, this); | + | plugin.getServer().getPluginManager().registerEvents(this, this); |
} | } | ||
− | + | ||
@EventHandler | @EventHandler | ||
public void onJoin(PlayerJoinEvent event) { | public void onJoin(PlayerJoinEvent event) { | ||
// BukkitRunnableを継承したExampleTaskを生成し、 | // BukkitRunnableを継承したExampleTaskを生成し、 | ||
// runTaskLater メソッドで20ticks後に実行するように設定します。 | // runTaskLater メソッドで20ticks後に実行するように設定します。 | ||
− | new ExampleTask().runTaskLater( | + | new ExampleTask().runTaskLater(plugin, 20); |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
} | } | ||
} | } | ||
166行目: | 73行目: | ||
BukkitSchedulerは、[http://docs.oracle.com/javase/1.5.0/docs/api/index.html?java/lang/Runnable.html Runnable]クラスや[http://docs.oracle.com/javase/1.5.0/docs/api/index.html?java/util/concurrent/Callable.html Callable]クラスの、どちらかまたは両方を実装したクラスを、一定時間後に実行する機能を提供します。<br> | BukkitSchedulerは、[http://docs.oracle.com/javase/1.5.0/docs/api/index.html?java/lang/Runnable.html Runnable]クラスや[http://docs.oracle.com/javase/1.5.0/docs/api/index.html?java/util/concurrent/Callable.html Callable]クラスの、どちらかまたは両方を実装したクラスを、一定時間後に実行する機能を提供します。<br> | ||
− | 詳細は、[http://jd.bukkit.org/rb/apidocs/index.html?org/bukkit/scheduler/BukkitScheduler.html BukkitSchedulerのjavadoc] を参照してください。 | + | 詳細は、[http://jd.bukkit.org/rb/apidocs/index.html?org/bukkit/scheduler/BukkitScheduler.html BukkitSchedulerのjavadoc] を参照してください。 |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | {{warning}} '''非同期実行タスクは、BukkitのAPIを直接実行してはいけません。''' | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | } | ||
− | |||
=== BukkitTask === | === BukkitTask === |