0. 初めに
この説明は、Intellij を使用した場合の説明です。
まだ、インストールしていない人は1.1 開発環境のインストールを参考にしてみてください。
1. プロジェクトを準備する
左側から Gradle を選択し、Kotlin/JVM だけにチェックをつけてください。
プロジェクトの設定をします。
Name と ArtifactId はプロジェクトの名前です。同じ名前にしておくといいです。
Location はフォルダの場所です。自分の好きなところに設定してください。
GroupId はパッケージ名です。他のプロジェクトと区別するための名前です。
一般的にはドメイン名を逆にしたものが使われます。(例: example.com
→ com.example
, s7a.dev
→ dev.s7a
)
ドメインを持っていなく、GitHub のアカウント持っていれば、com.github.(アカウント名)
としましょう。私(sya-ri)であれば com.github.syari
になります。
アカウントすら持っていなければ、me.(マイクラのID)
とかでもいいでしょう。私(sya_ri)であれば me.syari
になります。
これはとてもよく使うので覚えておいてください。
Version はバージョンです。そのままでもいいですが、私は 1.0
にしています。
プロジェクトに必要なデータをダウンロードしています。
このような画面が表示されるまで待っててください。
右下にこのようなポップアップが出たら Fix を選択してください。
そのあとは Configure Automatically を選択して、自動で設定を終わらせましょう。
上に緑色のバーが表示されていたら、Ok, apply suggestion! を選択してください。
2. build.gradle の設定
プロジェクトを作ったばかりの時はこのようになっていると思います。
plugins {
id 'org.jetbrains.kotlin.jvm' version '1.5.21'
}
group 'me.syari.qiita.p_1_2_how_to_create'
version '1.0'
repositories {
mavenCentral()
}
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8"
}
compileKotlin {
kotlinOptions.jvmTarget = "1.8"
}
compileTestKotlin {
kotlinOptions.jvmTarget = "1.8"
}
plugins はビルドに使うプラグインの設定です。そのままで大丈夫です。
group, version は事前に設定した GroupId, Version です。そのままで大丈夫です。
repositories (リポジトリ) に
maven {
url "https://hub.spigotmc.org/nexus/content/repositories/snapshots"
}
maven {
url "https://oss.sonatype.org/content/repositories/snapshots"
}
を付け足して
repositories {
mavenCentral()
maven {
url "https://hub.spigotmc.org/nexus/content/repositories/snapshots"
}
maven {
url "https://oss.sonatype.org/content/repositories/snapshots"
}
}
このように書き換えてください。
これを追加しておくことで、簡単に必要なファイルをダウンロードできるわけです。
dependencies (依存関係) に関してです。
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8"
の implementation
を compile
に書き換えて
compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8"
のようにしてください。
また、
implementation "org.spigotmc:spigot-api:1.15.2-R0.1-SNAPSHOT"
を付け足して
dependencies {
compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8"
implementation "org.spigotmc:spigot-api:1.15.2-R0.1-SNAPSHOT"
}
compileKotlinや compileTestKotlin はそのままで大丈夫です。
一番最後に
jar {
from configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
}
を付け足してください。これを追加することで プラグインを .jar ファイルとして出力できます
最終的にこのようになっていると思います。
plugins {
id 'org.jetbrains.kotlin.jvm' version '1.5.21'
}
group 'me.syari.qiita.p_1_2_how_to_create'
version '1.0'
repositories {
mavenCentral()
maven {
url "https://hub.spigotmc.org/nexus/content/repositories/snapshots"
}
maven {
url "https://oss.sonatype.org/content/repositories/snapshots"
}
}
dependencies {
compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8"
implementation "org.spigotmc:spigot-api:1.15.2-R0.1-SNAPSHOT"
}
compileKotlin {
kotlinOptions.jvmTarget = "1.8"
}
compileTestKotlin {
kotlinOptions.jvmTarget = "1.8"
}
jar {
from configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
}
右上に以下のようなリロードボタンが表示されていたら、必ず押してください。build.gradle
の変更を反映するのに必須です。
3. .kt をかく
左のフォルダやファイルがあるところから
src
→ main
を開いてください。
そして、kotlin
を右クリックして New
→ Package
を選択してください。
パッケージ名は 先ほどから出てきている GroupId です。
私であれば以下のようになっています。
では次に、作成したパッケージを右クリックして New
→ Kotlin Class/File
を選択してください。
名前は何でもいいですが、分かりやすく Main
としておきます。
ファイルの種類は Class
にしてください。これらの違いは後々解説しようと思います。
生成されたファイルを見ると
package me.syari.qiita.p_1_2_how_to_create
class Main {
}
このような感じになっていると思います。
こちらを編集していきましょう。
class Main {
の Main
と {
の間に :JavaPlugin()
というのを書きます。
以下のように候補が出ると思うので、JavaPlugin
を選択しましょう。
候補から選択することで import
というのを自動でやってくれます。
最後に ()
をつければOKです。
補足説明: import
とは…
簡単に言うと、「これ、使います!!」と宣言をしています。
別のファイルで定義されたものを使いたいときは必ずこれをしなければいけません。
このように赤くなっていたらカーソルを合わせてみましょう。
Unresolved reference
かみ砕いて言うと、「どれを使えばいいかわからないよ><」といった感じです。
Import
を選択すると 自動で書いてくれます。
※ 同じ名前だけど別物 ということがよくあります。
最初のうちに使うものは大抵 org.bukkit
や org.spigotmc
から始まります。
それらを選ぶと間違えることが少ないかもしれません。
もしも、間違ったものをインポートしてしまったらその行を消しましょう。
では、実際に処理を書いてみましょう。
まず、
override fun onEnable() {
}
を追記して、下のようにしましょう。
class Main: JavaPlugin() {
override fun onEnable() {
}
}
onEnable
を日本語で言うと 有効になった時
です。
要するに、プラグインが起動したときに実行される処理をここに書けばいいです。
とりあえず、コンソールに起動したことを知らせるメッセージを送信してみましょう。
onEnable
の 中括弧 { }
の中に処理を書けばいいのです。
override fun onEnable() {
logger.info("プラグインが起動したよ")
}
このように編集しましょう。これで .kt の編集は終わりです。
4. plugin.yml をかく
処理をいくら書いてもプラグインとしては完成しません。
サーバーに対して、「これはプラグインですよ~」と分かるようにしておかなければなりません。
そこで書くのが plugin.yml
です。
src/main/resources
を右クリックして New
→ File
を選択してください。
ファイル名は plugin.yml
です。
実際に書いていきましょう。
name:
version:
api-version:
main:
author:
これを書き足していきましょう。
name はプラグインの名前です。アルファベットで入力しましょう。私は HowToCreate
にします。
version はプラグインのバージョンです。プロジェクトと同じに設定すれば大丈夫です。
api-version は Minecraft 1.13 から追加されたものです。1.13以降はそれを書けば大丈夫です。私は "1.15"
にします
main は JavaPlugin()
が書いてあるクラスのパスです。指示通りにやっていれば (グループID).Main
で大丈夫です。
author はプラグインの作者の名前です。自分のMinecraftIDを書いておけばいいでしょう。私は sya_ri
になります。
私の場合はこのようになります。
name: HowToCreate
version: "1.0"
api-version: "1.15"
main: me.syari.qiita.p_1_2_how_to_create.Main
author: sya_ri
これで終了です。
5. プラグインをサーバーに入れる
まずは .jar を生成するところからです。
右のほうに Gradle
と書かれたものがあると思います。それを選択すると
こんな画面。プロジェクト名 → Tasks → build
と開いていくと
jar
と書かれたものがあると思いますので、それをダブルクリック。
下のコンソールに
BUILD SUCCESSFUL
と出ていたら成功です。
左側の build
→ libs
を開くと目的の .jar があると思います。
これを右クリックすると
Show in Explorer
というのがあるのでそれをクリックすることで .jar があるフォルダが開かれます。
あとはこれをサーバーの plugins
に入れるだけ。
それでは、サーバーを起動してみましょう。
「プラグインが起動したよ」とメッセージが出ていれば成功です!!お疲れ様でした。
6. 終わりに
これからいろいろなプラグインを作ると思いますが、過去に書いたものを残しておくのも大切なことです。
毎回違うプロジェクトとして保存しておくと見返すときも簡単です。
今回作ったプロジェクトをテンプレートとしておく。
→ 新しいプロジェクトを作ったらコピペで済ませるようにしておく。
こんなようにしてたくさんのプロジェクトを作ってみると達成感も感じられます。
どうか、一つのプラグインを書き換えてチュートリアルを進めていくのはやめてほしいです。
別々にしていたことで役に立つときがいずれありますから。私からのお願いです。