[覚書]Spigot PluginをKotlinで書く

詰まったし多分今後も詰まるので覚え書き
なんか間違ってたら教えてください　首切ります

# IDEの導入
InteliJ IDEA使います

導入:
[InteliJ IDEA 入門](https://qiita.com/opengl-8080/items/108102d692b49f804dbd)

導入出来たら設定->プラグイン->マーケットプレイスで「Minecraft Development」をインストールして再起動
プロジェクト制作時のテンプレートにそれっぽいのが追加されてたらok

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/661075/146fd94d-ff45-e951-35c5-3de1efe055d0.png)

デフォルトでMavenになってることに留意してください
今回はgradleに変更して初期設定してください

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/661075/0a8c8600-3c8c-05a9-b24e-99382149e358.png)


# Kotlinに変換する
このプラグインで制作した雛形ファイルのデフォルト言語はJavaです
なのでこれをKotlin用に書き換える必要があります

> ・build.gradleの書き換え
・ファイルをKotlinに変換
・plugin.ymlの書き換え

以上の作業が必要です

## build.gradleの書き換え
一番めんどくさいし一番詰まります
途中に#で注記してあるとこは各自のプロジェクトによって違うので適宜書き換えてください

```
buildscript {
    ext {
        junit_version = '4.12'
        kotlin_version = #Kotlinのバージョン#
        spigot_version = #Spigotのバージョン#
    }
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    }
}

apply plugin: 'java'
apply plugin: 'kotlin'

group = #グループid#
version = "1.0-SNAPSHOT"

sourceCompatibility = 1.8
targetCompatibility = 1.8

repositories {
    mavenCentral()
    maven {
        name = 'spigotmc-repo'
        url = 'https://hub.spigotmc.org/nexus/content/groups/public/'
    }
    maven {
        name = 'sonatype'
        url = 'https://oss.sonatype.org/content/groups/public/'
    }
}

dependencies {
    testImplementation group: 'junit', name: 'junit', version: junit_version
    testRuntimeOnly group: 'junit', name: 'junit', version: junit_version
    compile "org.spigotmc:spigot-api:$spigot_version"
    compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
}

import org.apache.tools.ant.filters.ReplaceTokens

processResources {
    from(sourceSets.main.resources.srcDirs) {
        filter ReplaceTokens, tokens: [version: version]
    }
}

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

書き換えた後右の"gradle"からリサイクルマークみたいなの押して再同期してエラーが出なければ恐らく成功してます

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/661075/b0a90ca6-bc4e-bae8-3f82-db264843a53a.png)


## ファイルをKotlinに変換する
と言ってもただデフォルトで生成されたJavaファイルをkotlinに置き換えるだけです

`ルートファイル\src\main\java\(グループid)\プロジェクト名` に入っているJavaファイルを右クリック
出てきたメニューの下の方にある`JavaファイルをKotlinファイルに変換`を押して(日本語化してなかったらConvertうんたらってやつ)適当にokすればオッケーです

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/661075/3ab23001-bbe2-db81-3faa-2eeb10beda6b.png)

指定したファイルの拡張子が変更され、コードがKotlinの記述に変換しているはず

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/661075/5612edbb-a981-e48d-5518-e7144c2c9bb7.png)


## plugin.ymlの変更
ちょっとした変更です

```yml
name: #pluginの名前#
version: @version@
main: #メインファイル#
api-version: '1.16'
```

api-versionの数字はクォーテーションで囲ってください

# ビルド
早速動作確認します

右の「gradle」タブから「Run Configration」を開き「"pluginName" build」をダブルクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/661075/6cac5b02-0488-2a58-af1d-6cdb728690c5.png)

成果物は`ルートファイル\build\lib`に生成されています

そしたらサーバーのpluginファイルにjarを設置、サーバーを起動
エラーなく`Enabling "pluginName"`の文字列が出たらokです