MENU

CloudburstMCのプラグインを作ってみた

注意

Cloudburstは現在も開発途中のソフトです。

この記事の内容が最新版では動作しない可能性があります。

この記事は「Minecraftのサーバ開発・運営Advent Calendar 2021」の12月22日分の記事となります!

目次

Cloudburstとは

Cloudburstについては以前に紹介した記事がありますので、そちらをご覧ください。

Cloudburstの現状について

さて、開発が本格的にアナウンスされてから1年以上が経過したCloudburstですが、まだまだ不安定で実際にサーバーに使える状態とはとても言えません。

さらに言うと、Cloudburstのためのプラグインが公式フォーラムには一つもありません。(いくつかありますがどれも動作しません。)

そんな状態ですので、今からプラグインを作ることは一切おすすめできません。本当に。

公式のExamplePluginすらも動きません。やばすぎます。

用意するもの

さて、Cloudburstのプラグインを作成していくわけですが、Nukkitと比べるとかなり多くの変更がされています。

そうした変更からくる手間も予測機能やimport文の自動挿入機能などである程度軽減できるので、今回はIntelliJ IDEAを使用します。

用意するもの
  • Cloudburstが動作する環境
  • JDK12以上、mavenが使用できるようにしたIntellJ IDEA

実際に作っていく

今回つくるプラグイン

今回はプラグインが読み込まれたときにログを出力するプラグインを作ります。

入門プラグインのJoinMessageにすら達していませんが、本当に簡単にはプラグインが作れる環境にないのです…

作成手順

さて、まずはIntelliJ IDEAを起動してください。以下の説明はそれ以降のことになります。

STEP
プロジェクトを作成する

まずは「New Project」のボタンからプロジェクトを作成します。

Mavenプロジェクトのタブを開いて、JDKを選び「Next」ボタンを押します。12以上だとビルドまで問題なく通るかと思います。

プロジェクトネームのところに名前を入れます。ビルドされたファイルの名前やアーティファクトIDはArtifact Coordinatesのところに隠されているので、必要であれば変えてください。

STEP
pom.xmlを編集する

propertiesタグの後ろに以下のrepositoriesタグとdependenciesタグを追加します。

<repositories>
    <repository>
        <id>opencollab-repo-release</id>
        <url>https://repo.opencollab.dev/maven-releases/</url>
        <releases>
            <enabled>true</enabled>
        </releases>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
    </repository>
    <repository>
        <id>opencollab-repo-snapshot</id>
        <url>https://repo.opencollab.dev/maven-snapshots/</url>
        <releases>
            <enabled>false</enabled>
        </releases>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
    </repository>
</repositories>

<dependencies>
    <dependency>
        <groupId>org.cloudburstmc</groupId>
        <artifactId>cloudburst-api</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
       <groupId>org.cloudburstmc</groupId>
        <artifactId>cloudburst-server</artifactId>
        <version>0.0.3-SNAPSHOT</version>
        <scope>provided</scope>
    </dependency>
</dependencies>

コピペしたら、右上に出ているアイコンを押して再読み込みします。

STEP
メインクラスをつくる

左側のメニューからJavaディレクトリまで下って行って、右クリックからメニューに進み「packeges」を選択します。

表示されたポップアップにパッケージの名前を入れます。

作成されたパッケージを右クリックして、メニューからメインクラスとなるJavaクラスを作成します。

表示されたピックアップにメインクラスの名前を入れます。

STEP
メインクラスを編集する

IntelliJ IDEAではimport文はalt+enterで自動挿入してくれるので、手打ちは基本的にしません。

それはさておき、まずはプラグインアノテーション(@Plugin)でプラグインの基本的な情報を示します。最低限idとversionは記入しましょう。

これは、package文やimport文の下に記入します。

@Plugin
    id = "ExamplePlugin4C",
    version = "1.0-SNAPSHOT"
}

次にインジェクターでロガーをプラグインで使えるようにします。今のところデータフォルダへのパスなどがインジェクトできるみたいです。

private final Logger logger;

@Inject
public ExamplePlugin4C(Logger logger) {
    this.logger = logger;
}

最後に、サーバーがイニシャライズされたときに実行されるイベントの中にログ出力をするコードを記入します。

@Listener
public void onInitialization(ServerInitializationEvent event) {
    logger.info("[ExamplePlugin4C] Loaded successfully!");
}

以上でメインクラスは完成です。import文を含めた全体のコードは以下のようになるはずです。

package org.example;

import org.cloudburstmc.api.event.Listener;
import org.cloudburstmc.api.event.server.ServerInitializationEvent;
import org.cloudburstmc.api.plugin.Plugin;
import org.slf4j.Logger;

import javax.inject.Inject;

@Plugin(
        id = "ExamplePlugin4C",
        version = "1.0-SNAPSHOT"
)
public class ExamplePlugin4C {

    private final Logger logger;

    @Inject
    public ExamplePlugin4C(Logger logger) {
        this.logger = logger;
    }

    @Listener
    public void onInitialization(ServerInitializationEvent event) {
        logger.info("[ExamplePlugin4C] Loaded successfully!");
    }
}
STEP
ビルドして動かす!

さて、メインクラスが書き終わったら、右上のメニューにある「maven」から「package」をクリックしてJARファイルを作ります。

作られたファイルはプロジェクトのフォルダの中にあるtargetフォルダの中に入っていると思いますので、それをCloudburstのpluginsフォルダの中に入れてサーバーを起動します。

うまくいっていればプラグインがいくつ読み込まれたかというログの下あたりに今回作ったプラグインによるログが表示されているはずです。

つ、疲れた…

最初はいつも通りJoinMessageを作ろうと思っていました。

今回はこの記事を書かないといけないので時間の都合上諦めました。

なんだかもやもやしますが、こんな気持ちも Minecraftのサーバ開発・運営Advent Calendar 2021 の最後を締めくくる冬月さんの記事で吹き飛ばしてもらいましょう。

とてもざっくりした説明になってしまい申し訳ありません!

最後まで読んでいただきありがとうございました!!

  • URLをコピーしました!
目次