細 (直訳による不自然さを緩和しました。) |
(→イベントとリスナ) |
||
68行目: | 68行目: | ||
== イベントとリスナ == | == イベントとリスナ == | ||
+ | |||
+ | Minecraft1.1向けのBukkit API以降、新しいイベントの仕組みが提供されています。<BR /> | ||
+ | この新しい仕組みは、シンプルでかつ、汎用性・高速性・可読性等に優れています。<BR /> | ||
+ | |||
+ | === チュートリアル === | ||
+ | 当項目の、翻訳元記事で紹介されている動画を参照して下さい。<BR /> | ||
+ | http://wiki.bukkit.org/Introduction_to_the_New_Event_System#Video_Tutorial | ||
+ | |||
+ | === 基礎 === | ||
+ | |||
+ | PlayerLoginEventについて説明します。<BR /> | ||
+ | このイベントは最低限動作するための処理のみを記述するよう心がけ、<BR /> | ||
+ | 極力シンプルに保ちつつ編集していきましょう。 | ||
+ | |||
+ | ==== イベントリスナ ==== | ||
+ | まず、イベントを待ち受ける処理(Event Listenerと呼ばれます)が必要です: | ||
+ | <nowiki> | ||
+ | public void onPlayerLogin(PlayerLoginEvent event) { | ||
+ | // Your code here... | ||
+ | }</nowiki> | ||
+ | 次に、発生するイベント(Event Handlerと呼ばれます)が必要になります。 | ||
+ | |||
+ | ==== イベントハンドラ ==== | ||
+ | イベントハンドラはイベントリスナに対する注釈であり、次のような書き方をします: | ||
+ | <nowiki>@EventHandler // EventPriority.NORMAL by default</nowiki> | ||
+ | この記述は、メソッドがイベント優先度がNORMALのイベントハンドラである事を指定します。 | ||
+ | |||
+ | イベントハンドラには優先度を指定でき、次のような書き方をします: | ||
+ | <nowiki>@EventHandler(priority = EventPriority.HIGHEST) // Makes your event Highest priority | ||
+ | @EventHandler(priority = EventPriority.LOW) // Makes your event Low priority</nowiki> | ||
+ | |||
+ | 以上をまとめると、次のようになります: | ||
+ | <nowiki>@EventHandler | ||
+ | public void onPlayerLogin(PlayerLoginEvent event) { | ||
+ | // Your code here... | ||
+ | }</nowiki> | ||
+ | |||
+ | ==== リスナの追加 ==== | ||
+ | "PlayerListener"として拡張する場合は、"Listener"インタフェースを実装する必要があります。<BR /> | ||
+ | この時点では、次のような形のメソッドになりそうです: | ||
+ | <nowiki>public class myPlayerListener implements Listener { | ||
+ | @EventHandler | ||
+ | public void onPlayerLogin(PlayerLoginEvent event) { | ||
+ | // Your code here... | ||
+ | } | ||
+ | }</nowiki> | ||
+ | |||
+ | リスナ内部のメソッドは任意の名前を付けて呼び出する事が可能であり、<BR /> | ||
+ | "onPlayerLogin()"のような、メソッドの名称が重要ではない事に言及しておきましょう。<BR /> | ||
+ | 「Bukkitは、どのEventを識別可能でどうやってListenするのか?」と不思議に思うかもしれませんが・・・<BR /> | ||
+ | Bukkitは、あなたが指定したイベントからそれら(識別可能なEventと、そのListenの方法)を読み込みます。<BR /> | ||
+ | 上記の例で言えば、PlayerLoginEventから読み込みます。 | ||
+ | |||
+ | :'''Note''': 特定のイベントまたはBukkitが登録しないイベントに関しては、手動で指定しなければなりません。 | ||
== コマンド == | == コマンド == |
2012年5月16日 (水) 02:25時点における版
本ページの内容は、Bukkit WikiのPlugin Tutorialを和訳した物となります。(一部は省略しています)
最新ではない可能性があるため、より新しい情報を確認する場合は、本家を参照するようにして下さい。
本項目は、和訳の最中です。最後まで読むことは出来ません。
目次
Plugin用プロジェクトを始めるために
プロジェクトの作成
始める前にEclipseのワークスペースとファイルの設定を行う必要があります。
Eclipseを起動し、ファイル>新規>Java プロジェクトと選択して下さい。
プロジェクト名を入力し、新規プロジェクトウィザード画面の指示に従って、プロジェクトを作成してください。
Bukkit APIの参照
開発を始める前にbukkit APIライブラリをプロジェクトに追加する必要があります。 使用したい他のAPIも同じように追加することが可能です。
最新のBukkit APIはここからダウンロードが可能です。 Bukkit API - Development Snapshot
画面の左手にあるパッケージエクスプローラの(先ほど名前を付けた)プロジェクトを右クリックし、プロパティーを選択します。
開いた画面のJavaビルド・パスを選択し、ライブラリータブの中から、外部 Jar 追加ボタンを押して、ダウンロードしたBukkit APIを指定します。
BukkitのJavadocの利用方法
Eclipseを用いたJavaプログラミングの経験がある方なら、
Eclipseのエディタ上でクラスやメソッドにマウスカーソルを重ねた時に、
クラスやメソッドに関するドキュメントがポップアップで表示される事をご存知でしょう。
これは、Oracleのウェブサイトから得る事ができるJavadocの内容が表示されています。
Bukkitもまた、BukkitのAPIが提供するクラスやメソッドの各々のコードに同種のドキュメントを含んでおり、ポップアップで表示させる事ができます。
Eclipse上で、Bukkitのクラスやメソッドにマウスを重ねたタイミングでポップアップを表示できるようにするためには、下記の手順を行います。
- プロジェクトエクスプローラ上で、Bukkitのjarファイルを右クリックして、メニューを開く。
- "プロパティ"を選択し、表示されるポップアップ左側の"Javadoc ロケーション"項目を選択する。
- "Javadoc URL"の下部にあるテキストボックスに、"http://jd.bukkit.org/apidocs/" (ダブルクォートは除く)を貼り付ける。
- "検証"ボタンを押下し、URLがJavadocとして正しく識別される事をチェックしてから、OKボタンを押す。
Plugin開発の開始
onEnable() and onDisable()
このファンクションは、プラグインが有効/無効になったときに呼ばれます。
デフォルトでは、プラグインは自動的に読み込まれたときに、イベントを登録やデバッグ出力を行うことが出来ます。
onEnable()は、プラグインがBukkitから読み込まれるときに最初に呼ばれ、プラグインを実行するために必須です。
onEnable()とonDisable()の基本
前のセクションで作成したメインクラスに、onEnable()とonDisable()のメソッドを作成します。
public void onEnable(){ } public void onDisable(){ }
この項目は現在執筆中です...
イベントとリスナ
Minecraft1.1向けのBukkit API以降、新しいイベントの仕組みが提供されています。
この新しい仕組みは、シンプルでかつ、汎用性・高速性・可読性等に優れています。
チュートリアル
当項目の、翻訳元記事で紹介されている動画を参照して下さい。
http://wiki.bukkit.org/Introduction_to_the_New_Event_System#Video_Tutorial
基礎
PlayerLoginEventについて説明します。
このイベントは最低限動作するための処理のみを記述するよう心がけ、
極力シンプルに保ちつつ編集していきましょう。
イベントリスナ
まず、イベントを待ち受ける処理(Event Listenerと呼ばれます)が必要です:
public void onPlayerLogin(PlayerLoginEvent event) { // Your code here... }
次に、発生するイベント(Event Handlerと呼ばれます)が必要になります。
イベントハンドラ
イベントハンドラはイベントリスナに対する注釈であり、次のような書き方をします:
@EventHandler // EventPriority.NORMAL by default
この記述は、メソッドがイベント優先度がNORMALのイベントハンドラである事を指定します。
イベントハンドラには優先度を指定でき、次のような書き方をします:
@EventHandler(priority = EventPriority.HIGHEST) // Makes your event Highest priority @EventHandler(priority = EventPriority.LOW) // Makes your event Low priority
以上をまとめると、次のようになります:
@EventHandler public void onPlayerLogin(PlayerLoginEvent event) { // Your code here... }
リスナの追加
"PlayerListener"として拡張する場合は、"Listener"インタフェースを実装する必要があります。
この時点では、次のような形のメソッドになりそうです:
public class myPlayerListener implements Listener { @EventHandler public void onPlayerLogin(PlayerLoginEvent event) { // Your code here... } }
リスナ内部のメソッドは任意の名前を付けて呼び出する事が可能であり、
"onPlayerLogin()"のような、メソッドの名称が重要ではない事に言及しておきましょう。
「Bukkitは、どのEventを識別可能でどうやってListenするのか?」と不思議に思うかもしれませんが・・・
Bukkitは、あなたが指定したイベントからそれら(識別可能なEventと、そのListenの方法)を読み込みます。
上記の例で言えば、PlayerLoginEventから読み込みます。
- Note: 特定のイベントまたはBukkitが登録しないイベントに関しては、手動で指定しなければなりません。