LoginSignup
1
1

More than 1 year has passed since last update.

Kotlin DSLでSpigot/Paperプラグインをビルドする

Last updated at Posted at 2022-03-11

初投稿です。おねがいします。
Paper-APIのバージョンは1.18.xです。(ほかのバージョンでもちょっと変えればできると思います)
Kotlin DSLを使ってビルドしているSpigot/Paperプラグインの例が少なかったので。
Spigot-APIを使う場合は逐次読み替えてください。

新規プロジェクト作成

新規プロジェクト作成の画面を開いて、Gradleを選択します。Kotlin DSLのGradleのテンプレートがないので、Minecraft Devプラグインは使いません。(Issueによると対応しようとしてるものの遅れている?らしい)

Image from Gyazo

上の図のようにJavaKotlin DSL ビルドスクリプトにチェックを入れてください。プラグインをKotlinで書きたい人はKotlin/JVMにもチェックを入れてください。プロジェクトSDKは使いたいAPIに合ったJDKを選択しましょう。

Image from Gyazo

ここらへんは普通にやってください。なんでもいいです。

完了を押すとプロジェクトが出来上がってビルドが始まります。最初はGradleのデーモンを起動するまで長いので待ちましょう。

ビルド周りを書き換える

ビルドが終わるとシンタックスハイライトされたビルドスクリプトが表示されます。このビルドスクリプト(build.gradle.kts)をいじってAPIが使えるようにしていきましょう。

build.gradle.kts
plugins {
    java
}

group = "com.github.jin-ini" // ここは指定したgroup id
version = "1.0-SNAPSHOT" // ここは指定したversion

repositories {
    mavenCentral()
}

// 以降のテスト関連のところ(junit系)は使わなければ消してしまっていいです。
dependencies {
    testImplementation("org.junit.jupiter:junit-jupiter-api:5.6.0")
    testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine")
}

tasks.getByName<Test>("test") {
    useJUnitPlatform()
}

このままではFat Jarをビルドすることができないのでプラグインを入れていきます。また、同時にPaper-APIも使えるようにしていき、ついでにtoolchainで指定してビルドするようにします。

build.gradle.kts
plugins {
    java
+   id("com.github.johnrengelman.shadow") version "7.1.2"
}

group = "com.github.jin-ini"
version = "1.0-SNAPSHOT"

repositories {
    mavenCentral()
+   maven { url = uri("https://papermc.io/repo/repository/maven-public/") } // PaperのMavenリポジトリ
}

dependencies {
+   compileOnly("io.papermc.paper:paper-api:1.18.1-R0.1-SNAPSHOT") // Paper-API
    testImplementation("org.junit.jupiter:junit-jupiter-api:5.6.0")
    testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine")
}

+ java {
+     toolchain.languageVersion.set(JavaLanguageVersion.of(17))
+ }

tasks.getByName<Test>("test") {
    useJUnitPlatform()
}

Gradleのバージョンが古いものになっていることがあるので最新を指定しましょう。最新リリースは公式サイトから確認してください。

gradle/wrapper/gradle-wrapper.properties
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
- distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-bin.zip
+ distributionUrl=https\://services.gradle.org/distributions/gradle-7.4.1-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists

Gradleをデーモン化していちいち起動を待たなくていいようにします。プロジェクト直下に以下のファイルを作成してください。

gradle.properties
org.gradle.daemon=true

ここまででPaperのプラグインをKotlin DSLでビルドする準備が完了しました。あとは実行構成からgradle shadowJarを実行するとbuild/libs/プロジェクト名-all.jarができます。

おわり

正直まだまだ初心者なのでこれがベストプラクティスではないと思います。いろいろ試行錯誤してみてください。あとよい方法があったらぜひ教えてください。

1
1
0

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
1
1