2017年のMinecraftプラグイン開発はKotlinで決まり！Kotlin導入方法！

# <i class="fa fa-star"></i> Kotlinとは？

プログラミング言語Kotlinには以下のような特徴があります

* KotlinとはJavaと100%互換がある
  * JavaとKotlinの混在が可能
  * JavaからKotlinの呼び出し、KotlinからJavaの呼び出しが可能
* Null安全
  * NullPointerExceptionをコンパイル段階で防げる
* 自然に簡単に記述することができる
* 開発元がJetBrainsでなおかつ、オープンソースなので、開発が止まるということが考えられにくい

この他にも様々な特徴があります。

Androidアプリでは、JavaからKotlinへの置き換えが進んでいるようです。
こうなったら、MinecraftでもKotlinへの置き換えを推進しようということで、この記事を書いてみました。

# <i class="fa fa-wrench"></i> 環境設定

## IntelliJ IDEAのダウンロード

* [IntelliJ IDEA the Java IDE](https://www.jetbrains.com/idea/#chooseYourEdition)
* Communityをダウンロードします

## Minecraft Developmentプラグインのダウンロード

IntelliJ IDEAのプラグイン設定画面で、Browse Repositoryをクリック
![Preferences.png](https://qiita-image-store.s3.amazonaws.com/0/152986/0a88ec25-e985-973f-82e3-32d7b30cc30a.png)

Minecraftと検索すると、MinecraftDevelopmentというプラグインが見つかるのでインストールして再起動します。
![Browse_Repositories.png](https://qiita-image-store.s3.amazonaws.com/0/152986/d64c75c1-c1a4-a0ca-07eb-d26b5ede2d33.png)

同様に、Kotlinのプラグインも導入しておいてください。

# <i class="fa fa-file"></i> プロジェクト作成

IntelliJ IDEAをリスタートして、新規プロジェクトを作成します。
MinecraftDevelopmentプラグインをインストールすると、Minecraft Pluginという項目が増えています。
その中から今回はSpigotPluginを選択して次へ進みます。

![New_Project_1.png](https://qiita-image-store.s3.amazonaws.com/0/152986/abc089c1-972b-3914-5d45-8a387143d809.png)

プロジェクトの情報を入力します。
Gradleを選択して次へ進んでください
![New_Project_2.png](https://qiita-image-store.s3.amazonaws.com/0/152986/9d6477c0-a7f6-63f6-ff64-9f551824ac47.png)


Minecraftのバージョンを選択します。今回は1.11にして次へ進みます。
![New_Project_3.png](https://qiita-image-store.s3.amazonaws.com/0/152986/bc926633-3bb5-07fc-f6a9-b496a7d3dbf2.png)


プロジェクトの名前を入力して完了です。
![New_Project_4.png](https://qiita-image-store.s3.amazonaws.com/0/152986/a490b190-3b60-333c-60fe-b15dd5ad3ee0.png)


## Gradleの設定

Gradleは以下のように設定しました。

```groovy:build.gradle
apply plugin: 'java'
apply plugin: 'kotlin'

group = pluginGroup
version = pluginVersion

sourceCompatibility = 1.8
targetCompatibility = 1.8

configurations {
    embed
    compile.extendsFrom(embed)
}

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 {
    testCompile group: 'junit', name: 'junit', version: '4.11'
    compile 'org.spigotmc:spigot-api:1.11-R0.1-SNAPSHOT'
    embed "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]
    }
}
buildscript {
    ext.kotlin_version = '1.0.5-3'
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    }
}

sourceSets {
    main.java.srcDirs += 'src/main/kotlin'
}

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

別の方も記事を書いているのでそちらも参考にしてみてください
[Kotlin で Spigot プラグインを作るための build.gradle - Qiita](http://qiita.com/Masahiro_Saito/items/5e4829964ad780155b8f)

## Kotlinへの変換

Shiftボタン２回押すとダイアログが出てくるので、Kotlinと入力して、
Convert Java File to Kotlin File

を押して変換してください

![スクリーンショット 2016-12-26 2.07.40.png](https://qiita-image-store.s3.amazonaws.com/0/152986/891cb2e2-352e-9eac-2b0d-6023e799f58d.png)

変換した後、以下のようにコードを変更してください。

```kotlin:KotlinPlugin.kt
package me.reyad.kotlin.kotlinplugin

import org.bukkit.plugin.java.JavaPlugin

class KotlinPlugin : JavaPlugin() {

    override fun onEnable() {
        // Plugin startup logic
        logger.info("Hello Kotlin!")
    }

    override fun onDisable() {
        // Plugin shutdown logic
    }
}
```

プラグインを有効にすると、サーバーログに「Hello Kotlin!」と出力されます。

Javaでは以下のように書いていました。

```java
getLogger().info("Hello Kotlin!");
```

Kotlinでは以下のように書くことができます。

getLogger()をloggerとして書くことができます。

```kotlin
logger.info("Hello Kotlin!")
```


## Build

ビルドボタンを押すと、Jarファイルが作成されます
![KotlinPlugin_kt_-_KotlinPlugin_-____IdeaProjects_KotlinPlugin_.png](https://qiita-image-store.s3.amazonaws.com/0/152986/0ba4236d-e9a9-510d-9175-7b7df729c8fa.png)


実行後、buildディレクトリにJarファイルが出力されています。
これをspigotのpluginディレクトリに入れれば動作します。


# 終わりに

上記のようにして、MinecraftでKotlinライフをスタートすることができます。
みなさんもKotlinの素晴らしさを体験してください！