LoginSignup
3
3

More than 1 year has passed since last update.

【Kotlin+Spigot】1.2 プロジェクトを作成する

Last updated at Posted at 2020-04-29

0. 初めに

この説明は、Intellij を使用した場合の説明です。
まだ、インストールしていない人は1.1 開発環境のインストールを参考にしてみてください。

1. プロジェクトを準備する

Create New Project を選択してください。
image.png

左側から Gradle を選択し、Kotlin/JVM だけにチェックをつけてください。
image.png

プロジェクトの設定をします。
NameArtifactId はプロジェクトの名前です。同じ名前にしておくといいです。

Location はフォルダの場所です。自分の好きなところに設定してください。

GroupId はパッケージ名です。他のプロジェクトと区別するための名前です。
一般的にはドメイン名を逆にしたものが使われます。(例: example.comcom.example , s7a.devdev.s7a)

ドメインを持っていなく、GitHub のアカウント持っていれば、com.github.(アカウント名) としましょう。私(sya-ri)であれば com.github.syari になります。

アカウントすら持っていなければ、me.(マイクラのID) とかでもいいでしょう。私(sya_ri)であれば me.syari になります。
これはとてもよく使うので覚えておいてください。

Version はバージョンです。そのままでもいいですが、私は 1.0 にしています。

設定し終わったら、Finish を選択してください。
image.png

プロジェクトに必要なデータをダウンロードしています。
このような画面が表示されるまで待っててください。
image.png

右下にこのようなポップアップが出たら Fix を選択してください。
そのあとは Configure Automatically を選択して、自動で設定を終わらせましょう。
image.png

上に緑色のバーが表示されていたら、Ok, apply suggestion! を選択してください。
image.png

2. build.gradle の設定

プロジェクトを作ったばかりの時はこのようになっていると思います。

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"

implementationcompile に書き換えて

    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"
}

compileKotlincompileTestKotlin はそのままで大丈夫です。

一番最後に

jar {
    from configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
}

を付け足してください。これを追加することで プラグインを .jar ファイルとして出力できます

最終的にこのようになっていると思います。

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()
    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 の変更を反映するのに必須です。
image.png

3. .kt をかく

左のフォルダやファイルがあるところから
srcmain を開いてください。
そして、kotlin を右クリックして NewPackage を選択してください。
パッケージ名は 先ほどから出てきている GroupId です。
私であれば以下のようになっています。
image.png
では次に、作成したパッケージを右クリックして NewKotlin Class/File を選択してください。
名前は何でもいいですが、分かりやすく Main としておきます。
ファイルの種類は Class にしてください。これらの違いは後々解説しようと思います。
image.png

生成されたファイルを見ると

Main.kt
package me.syari.qiita.p_1_2_how_to_create

class Main {
}

このような感じになっていると思います。

こちらを編集していきましょう。

class Main {

Main{ の間に :JavaPlugin() というのを書きます。
以下のように候補が出ると思うので、JavaPluginを選択しましょう。
image.png
候補から選択することで import というのを自動でやってくれます。
image.png
最後に () をつければOKです。

補足説明: import とは…

簡単に言うと、「これ、使います!!」と宣言をしています。
別のファイルで定義されたものを使いたいときは必ずこれをしなければいけません。
image.png
このように赤くなっていたらカーソルを合わせてみましょう。
image.png
Unresolved reference かみ砕いて言うと、「どれを使えばいいかわからないよ><」といった感じです。
Import を選択すると 自動で書いてくれます。
※ 同じ名前だけど別物 ということがよくあります。
最初のうちに使うものは大抵 org.bukkitorg.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 を右クリックして NewFile を選択してください。
ファイル名は plugin.yml です。
実際に書いていきましょう。

plugin.yml
name: 
version: 
api-version: 
main: 
author: 

これを書き足していきましょう。
name はプラグインの名前です。アルファベットで入力しましょう。私は HowToCreate にします。
version はプラグインのバージョンです。プロジェクトと同じに設定すれば大丈夫です。
api-version は Minecraft 1.13 から追加されたものです。1.13以降はそれを書けば大丈夫です。私は "1.15" にします
mainJavaPlugin() が書いてあるクラスのパスです。指示通りにやっていれば (グループID).Main で大丈夫です。
author はプラグインの作者の名前です。自分のMinecraftIDを書いておけばいいでしょう。私は sya_ri になります。

私の場合はこのようになります。

plugin.yml
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 を生成するところからです。
image.png
右のほうに Gradle と書かれたものがあると思います。それを選択すると
image.png
こんな画面。プロジェクト名 → Tasks → build と開いていくと
image.png
jar と書かれたものがあると思いますので、それをダブルクリック。

下のコンソールに
image.png
BUILD SUCCESSFUL と出ていたら成功です。

左側の buildlibs を開くと目的の .jar があると思います。
image.png
これを右クリックすると
image.png
Show in Explorer というのがあるのでそれをクリックすることで .jar があるフォルダが開かれます。
あとはこれをサーバーの plugins に入れるだけ。
それでは、サーバーを起動してみましょう。
image.png
「プラグインが起動したよ」とメッセージが出ていれば成功です!!お疲れ様でした。

6. 終わりに

これからいろいろなプラグインを作ると思いますが、過去に書いたものを残しておくのも大切なことです。
毎回違うプロジェクトとして保存しておくと見返すときも簡単です。

今回作ったプロジェクトをテンプレートとしておく。
→ 新しいプロジェクトを作ったらコピペで済ませるようにしておく。

こんなようにしてたくさんのプロジェクトを作ってみると達成感も感じられます。
どうか、一つのプラグインを書き換えてチュートリアルを進めていくのはやめてほしいです。
別々にしていたことで役に立つときがいずれありますから。私からのお願いです。

プロジェクト用テンプレート

リンク

次の記事に進む

目次に戻る

3
3
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3