提供: Minecraft Modding Wiki
この編集を取り消せます。
下記の差分を確認して、本当に取り消していいか検証してください。よろしければ変更を保存して取り消しを完了してください。
最新版 | 編集中の文章 | ||
1行目: | 1行目: | ||
+ | |||
Minecraft1.1向けのBukkit API以降、新しいイベントの仕組みが提供されています。<BR /> | Minecraft1.1向けのBukkit API以降、新しいイベントの仕組みが提供されています。<BR /> | ||
この新しい仕組みは、シンプルでかつ、汎用性・高速性・可読性等に優れています。<BR /> | この新しい仕組みは、シンプルでかつ、汎用性・高速性・可読性等に優れています。<BR /> | ||
14行目: | 15行目: | ||
=== イベントリスナ === | === イベントリスナ === | ||
まず、イベントを待ち受ける処理(Event Listenerと呼ばれます)が必要です: | まず、イベントを待ち受ける処理(Event Listenerと呼ばれます)が必要です: | ||
− | <blockquote><source lang="java"> | + | <blockquote><source lang="java">public void onPlayerLogin(PlayerLoginEvent event) { |
− | + | // Your code here... | |
− | public void onPlayerLogin(PlayerLoginEvent event) { | + | }</source></blockquote> |
− | // | ||
− | } | ||
− | </source></blockquote> | ||
次に、発生するイベント(Event Handlerと呼ばれます)が必要になります。 | 次に、発生するイベント(Event Handlerと呼ばれます)が必要になります。 | ||
28行目: | 26行目: | ||
イベントハンドラには優先度を指定でき、次のような書き方をします: | イベントハンドラには優先度を指定でき、次のような書き方をします: | ||
− | <blockquote><source lang="java">@EventHandler(priority = EventPriority.HIGHEST) // | + | <blockquote><source lang="java">@EventHandler(priority = EventPriority.HIGHEST) // 高優先度のイベントとする |
− | @EventHandler(priority = EventPriority.LOW) // | + | @EventHandler(priority = EventPriority.LOW) // 低優先度のイベントとする</source></blockquote> |
以上をまとめると、次のようになります: | 以上をまとめると、次のようになります: | ||
<blockquote><source lang="java">@EventHandler | <blockquote><source lang="java">@EventHandler | ||
public void onPlayerLogin(PlayerLoginEvent event) { | public void onPlayerLogin(PlayerLoginEvent event) { | ||
− | // | + | // Your code here... |
}</source></blockquote> | }</source></blockquote> | ||
43行目: | 41行目: | ||
@EventHandler | @EventHandler | ||
public void onPlayerLogin(PlayerLoginEvent event) { | public void onPlayerLogin(PlayerLoginEvent event) { | ||
− | // | + | // Your code here... |
} | } | ||
}</source></blockquote> | }</source></blockquote> | ||
53行目: | 51行目: | ||
上記の例で言えば、PlayerLoginEventから読み込みます。 | 上記の例で言えば、PlayerLoginEventから読み込みます。 | ||
− | :'''Note''': | + | :'''Note''': 特定のイベントまたはBukkitが登録しないイベントに関しては、手動で指定しなければなりません。(訳が不適切か) |
=== イベントハンドラの設定 === | === イベントハンドラの設定 === | ||
107行目: | 105行目: | ||
その後、LOWからHIGHESTまで、順にリスナーが行われ、設定内容が書き換わります。<br> | その後、LOWからHIGHESTまで、順にリスナーが行われ、設定内容が書き換わります。<br> | ||
最終的に、MONITORのリスナーが呼び出されます。この時点で、全てのリスナーが設定した内容が最終結果として参照できるようになります。<br> | 最終的に、MONITORのリスナーが呼び出されます。この時点で、全てのリスナーが設定した内容が最終結果として参照できるようになります。<br> | ||
− | + | MONITORは、イベントの内容を変更すべきではなく、イベントの結果を見るために使用されるべきです。 | |
例として、BLOCK_PLACE イベントが処理されるとしましょう。<br> | 例として、BLOCK_PLACE イベントが処理されるとしましょう。<br> | ||
3つのプラグインが有効になっており、1つ目は基本的な領域保護プラグイン、2つ目はカンバンを使った付加価値的プラグイン、3つ目はログ記録プラグインです。<br> | 3つのプラグインが有効になっており、1つ目は基本的な領域保護プラグイン、2つ目はカンバンを使った付加価値的プラグイン、3つ目はログ記録プラグインです。<br> | ||
領域保護プラグインはPriority.LOWESTで待機します。 | 領域保護プラグインはPriority.LOWESTで待機します。 | ||
− | + | それは、「この領域内にブロックを配置することはできません」という理由で、イベントをキャンセルします。<br> | |
カンバンを使った付加価値的プラグインはPriority.NORMALで待機します。 | カンバンを使った付加価値的プラグインはPriority.NORMALで待機します。 | ||
− | + | それは、「この領域内にカンバンを置くことができます」という理由で、イベントをuncancelします。<br> | |
ログ記録プラグインはPriority.MONITORで待機します。 | ログ記録プラグインはPriority.MONITORで待機します。 | ||
− | これは、''' | + | これは、'''イベントが実際に許された'''という最終結果を確認し、イベント内容をログに記録します。 |
あなたはイベントの結果を変更する場合、LOWESTからHIGHESTの間で、慎重に選択してください。<br> | あなたはイベントの結果を変更する場合、LOWESTからHIGHESTの間で、慎重に選択してください。<br> | ||
− | + | あなたが、イベントを受け取りたいが、結果を変更しないときは、MONITORを使用してください。<br> | |
− | + | ただし、MONITORのリスナーがイベントをキャンセルしたりしないように、イベントの内容を変更したりしないように、十分注意してください。最悪、他のプラグインの正常動作を阻害してしまうことになってしまいます。 | |
− | == | + | == イベントの登録 == |
− | + | イベントを記述するクラスは、<BR /> | |
Listenerインタフェースを実装(implements)し、かつイベントハンドラを含んでいなければなりません。 | Listenerインタフェースを実装(implements)し、かつイベントハンドラを含んでいなければなりません。 | ||
131行目: | 129行目: | ||
}</source></blockquote> | }</source></blockquote> | ||
− | + | イベントの登録処理は、PluginManagerインスタンスのregisterEventsメソッドとして、プラグインとリスナに記述します。 | |
<blockquote><source lang="java">getServer().getPluginManager().registerEvents(Listener, Plugin);</source></blockquote> | <blockquote><source lang="java">getServer().getPluginManager().registerEvents(Listener, Plugin);</source></blockquote> | ||
248行目: | 246行目: | ||
// 全てのイベントリスナを登録解除します。 | // 全てのイベントリスナを登録解除します。 | ||
</source></blockquote> | </source></blockquote> | ||
+ | |||
324行目: | 323行目: | ||
} | } | ||
}</source></blockquote> | }</source></blockquote> | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− |