完全に個人的なメモです。
- もっとこうしたら簡単になるんじゃないの?
- その書き方って汚くない?
っていうのがあるとは思いますが、プラグイン開発はまだまだ初心者なので... お手柔らかにお願いします。
よく使うGradle Plugin
shadow
- Gradle Plugins: https://plugins.gradle.org/plugin/com.gradleup.shadow
- Wiki: https://gradleup.com/shadow/
run-paper (デバッグ起動用)
- Gradle Plugins: https://plugins.gradle.org/plugin/xyz.jpenilla.run-paper
- Github: https://github.com/jpenilla/run-task
plugin-yml (plugin.ymlの自動生成)
よく参考にするサイト
- Paper API - docs
- PaperAPIの公式ドキュメント
- Minecraft-Plugin-Template
- Gradleを使ったPaperプラグインのテンプレート
- Slimefun4 - src/test
- MockBukkitとJUnitを使ったテストが沢山ある
- JSpecify
@NonNullなどのアノテーション
- Spigot Event List
- Spigotのイベント一覧
対応してないJavaバージョンでサーバーを動かしたい
Jarファイルを実行している場合
-DPaper.IgnoreJavaVersion=trueをJVM引数に入れればいけるかも (もちろん、入れているプラグインのビルド時のJavaバージョンとの競合で動かない場合もある)
run-paperの場合
ignoreUnsupportedJvm()を使えば、上記のオプションを引数に入れたことと同じになって、デバッグ時にも対応してないJavaバージョンで起動できる。
kotlin
tasks.runServer {
minecraftVersion("x.x.x")
ignoreUnsupportedJvm() // <- これ
}PaperAPI(1.15.2)が依存関係に入らない...
エラー例
> Could not resolve net.md-5:bungeecord-chat:1.15-SNAPSHOT.原因
こんな感じのエラー(上記)が出ていれば... 多分、maven centralに公開されているbungeecord-chatが壊れてるからだと思います。 (なぜか、bungeecord-chatのpomが取得できないっぽい...?)
解決策
- repositoriesの一番上にpapermcのリポジトリをもってくる
- mavenCentralのcontentブロック内で除外設定をする
excludeModule("net.md-5", "bungeecord-chat")かexcludeGroup("net.md-5")を使えばいい感じになると思います。
CI経由のリリース時にバージョンを変えたい
- CI環境変数があるなら、VERSION環境変数を参照するようにする
kotlin
version = if (System.getenv("CI") == "true") {
// If in CI environment, it requires VERSION from env.
System.getenv("VERSION") ?: error("Failed to get version from environment")
} else {
"0.1.0-SNAPSHOT"
}- gradle.propertiesを書き換える
- git commitとかしたいなら、これもいいかもしれない...? (やったことないけど)
コメント