Nukkit プラグインの作り方 part.2 - 最初のプロジェクト -
Nukkit 公式のサンプルコードも Maven を使用しているので、 Mavenを使ってプラグインを開発、コンパイルする。
Mavenの説明をすると、脱線して、作るのが難しく感じるかもしれないので、省略する。
3. 最初のプロジェクト作成
起動すると上図のような画面が表示される(初期起動時にはIDEのカラーテーマを選択したりしたかも)。
「Create New Project」を選択する。
(Mavenを選択して、「Next」)
(GroupId, ArtifactId, Version を記入する画面が表示され、Versionだけ1.0-SNAPSHOT
が入っている。)
蛇足
GroupId プロジェクトのルートパッケージ
ArchifactId プロジェクト名ちなみに、Nukkitの場合、
groupId = cn.nukkit
artifactId = nukkit
で下図のようなパッケージ構成になっている
プロジェクト名とプロジェクトファイルの場所を設定(基本そのままでいい)したら、「Finish」をクリックする
プロジェクトの作成が完了すると下図のような画面になる。
4. シンプルなプラグインプログラム
A. 依存性追加 pom.xml
このプロジェクトに作成したプログラムから、NukkitのAPIにアクセスするために、pom.xml
に依存性を追加する。
- 現在
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>jp.hatenablog.pekomemo.example</groupId> <artifactId>sample</artifactId> <version>1.0-SNAPSHOT</version> </project>
- 修正後
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>jp.hatenablog.pekomemo.example</groupId> <artifactId>sample</artifactId> <version>1.0-SNAPSHOT</version> <repositories> <repository> <id>nukkit-repo</id> <url>https://repo.nukkitx.com/snapshot</url> </repository> </repositories> <dependencies> <dependency> <groupId>cn.nukkit</groupId> <artifactId>nukkit</artifactId> <version>1.0-SNAPSHOT</version> <scope>provided</scope> </dependency> </dependencies> </project>
B. ルートパッケージ作成
プロジェクト作成時に groupId
には、ルートパッケージ名を記入する旨を書いた。src / main / java
の配下にパッケージを作成する。
src
から展開していくと、 java
というディレクトが見えるので、右クリックして 「package」 を選択する。
groupId
と同じ名前を記入して、「OK」を選択する。
C. メインクラスの作成
プラグインは、後述の plugin.yml
の内容をもとに、PluginBase
を継承したクラス(この講座では、プラグインの"メインクラス"と呼ぶ)を呼び出す。
plugin.yml
は 「D」 で作成するので、まずはメインクラスを作成しよう。
パッケージ「jp.hatenablog.pekomemo.example」を右クリックして「Java Class」を選択する。
クラス名は、Javaの命名規則にしたがって、適当(適切)なクラス名を記入して「OK」を押す。 クラスを作成すると、内容が表示される。
このクラスは、プラグインのメインクラスなので、PluginBase
を継承する
D. plugin.ymlの作成
NukkitがSpigotなどと同じような挙動であれば、pluginsディレクトに置かれた jarファイルの plugin.yml
の設定をもとに、プラグインを読み込む。と、いうわけでplugin.yml
を作成しよう。
javaディレクトリの下(jp.hatenablog.pekomemo.example と同階層)に resources
というディレクトリが存在する。この中に plugin.yml
を作成する。
plugin.yml
には、name
main
version
api
が必須です。
- name: プラグインの名前
- main: メインクラスまでのパス(今回の場合 jp.hatenablog.pekomemo.example.SamplePlugin
)
- version: プラグインのバージョン
- api: このプラグインがNukkitのどのAPIをサポートするか
なんか、PocketMineに強いインスパイアを感じる。PocketMineと同様に、ここのAPIのバージョンが動作させるNukkitのAPIバージョンよりも大きければ、プラグインのロードエラーがはかれる模様。
今回は、下記のようにした。
name: SamplePlugin main: jp.hatenablog.pekomemo.example.SamplePlugin version: "0.0.1" api: ["1.0.0"]
5. ソースコードのビルド
最低限、プラグインとして必要なファイルを作成したので、いよいよビルドしてプラグインの jar
ファイルを作ろう。
右上のセレクトボックスをクリックして、「Edit Configurations...」 を選択する。
新しいウィンドウが表示されるので、プラス「+」をクリックして、 Maven
を探して、クリックする。
package
と記入して、「OK」を押す。
「OK」を押すと、初期状態だと 「Unnamed」という項目が表示される。
を押すと、ビルドが始まる。
ビルドが終わると、下図のように、「target」ディレクトリが作成され、その中に sample-1.0-SNAPSHOT.jar
というファイルができている。
これを、Nukkit の 「plugins」 にコピーしてサーバを起動すると、読み込まれていることがわかる。