🐥

Kotlin × MongoDB × Spigotで経済プラグイン制作 #1

2022/10/26に公開約2,600字

前置き

こんにちは。Takaと申します。OracleRPGというマインクラフトサーバーで唯一のエンジニアをやらせていただいてます。学生なので更新頻度は低いかも知りませんが、頑張って更新するよう努力します。

目標

このプロジェクトの目標は、Kotlin x MongoDB x Spigot(Bukkit)で経済システムを管理するプラグインを作ることです。
(なお、記事を書きながらソースコードを書いていくので、全体像は未知です。ご了承ください。)

環境

  • M1 MacBook Air 2020
  • macOS Monterey ver12.4
  • IntelliJ Community 2020.3
  • Spigot 1.16.5
  • Java 16.0.2
  • Kotlin 1.6.10
  • Mongo Java Driver 3.11.0

Spigot1.16.5はJava16のみサポートしているのでJava16を推奨します。

$ java -version

https://zenn.dev/aruneko/articles/91f4562fc99c11

Hello World

(環境構築は各自で行なっていただいた前提で話を進めます)

Main.kt
package rpg.oracle.EconomySystem

import org.bukkit.plugin.java.JavaPlugin

class Main: JavaPlugin() {
    override fun onEnable() {
        logger.info("Hello Oracle!")
    }
}

解説

1行目

package rpg.oracle.EconomySystem

rpgoracleEconomySystemっていうシステムにこのプログラムが帰属するみたいなイメージでいればOK。

3行目

import org.bukkit.plugin.java.JavaPlugin

簡単に言うとSpigotのプラグインを作るときに必要なものをライブラリから持ってくるために必要な文です。

5~9行目

class Main: JavaPlugin() {
    override fun onEnable() {
        logger.info("Hello Oracle!")
    }
}

class Main: JavaPlugin()というところっで3行目で呼び出したJavaPlugin型のMainクラスを宣言します。あんま深いことは覚えなくて大丈夫です。
override fun onEnable()でプラグイン起動時の処理を書きます。ちなみにプラグイン終了時(/reload や /stopをするとき)の処理は

override fun onDisable() {
}

で実装可能です。

logger.info("Hello Oracle!")

でログにHello Oracle!と表示しています。loggerはSpigotのログを操作するメソッドで、logger.info()の他にもlogger.warning()等を使うことで[WARN]と出てくるやつを実装できます。

コンパイル&ビルド


汚い

右上の赤いトンカチみたいなやつを押すとコンパイル&ビルドが開始され、jarファイルを生成することができます。このjarファイルをserver/pluginsに置くことでプラグインがSpigotサーバーにロードされます。


しかし!!!
めんどくさいです。ということで自動的にjarファイルがserver/pluginsに置かれるようにプロジェクト構造を設定していきましょう。

設定

右から3つ目のアイコンを押すと、以下のような画面が出てきます。私はUIをプラグインでカスタマイズしてるので、みなさんと少し画面が違うかもしれません。

+ -> JAR -> 依存関係を持つモジュールからを押して何も変更せずにOKしましょう。


なんかすごい!!!

出力したいディレクトリを設定します。ここではserver/pluginsにjarファイルを出力するのが目的なので各々任意のディレクトリを出力ディレクトリというところに入力してください。

これだけでは不十分なのでresources/plugin.ymlsrc/mainディレクトリを追加して適用 -> OKしましょう。これで完了です。

コンパイル&ビルドするときはビルド -> アーティファクトのビルドから先ほど作った構成を選択するとできます。

確認

[16:28:36] [Server thread/INFO]: [OracleEconomySystem] Hello Oracle!

サーバーのログを見ると、ちゃんとできていますね。

ということで#1はここまでです。次はMongoDBと接続していきます。

次はこちら未制作

Discussion

ログインするとコメントできます