KOTLIN 插件 產生器
plugin.yml,還能在你下載前先幫你編譯出 JAR。為什麼要產生 Kotlin 插件
在 Bukkit 需要的地方做到空值安全
Bukkit 經常回傳 null:離線玩家、不存在的世界、缺少的設定鍵。Kotlin 讓這些情況在編譯時就攤開來,而不是凌晨兩點才在你的伺服器主控台裡冒出來。
真正的 Gradle 專案
build.gradle.kts 已為 Kotlin JVM 插件和 Paper/Spigot 儲存庫設定好,原始碼結構也是標準的。不會只丟給你一個檔案,讓你自己找地方放。
樣板程式碼少很多
設定模型用資料類別,Player 和 ItemStack 用擴充函式,用作用域函式取代層層巢狀的 null 檢查。同樣的邏輯,程式碼明顯更少。
也支援 Folia 和代理伺服器
如果你用的是 Paper 的多執行緒分支,要注意 Folia 拿掉了單一主執行緒,需要依區域排程。請在插件產生器上選擇 Folia 目標,讓排程從一開始就正確。網路層級的工作請用代理伺服器插件產生器。插件文件說明了其中的差異。
提示詞範例
Kotlin 插件產生器常見問題
Kotlin 插件能在一般的 Spigot 或 Paper 伺服器上執行嗎?
+
能。Kotlin 會編譯成一般的 JVM 位元組碼,所以伺服器不知道也不在乎插件是用哪種語言寫的。它的載入方式和 Java 插件完全一樣。
我需要在伺服器上安裝什麼嗎?
+
不需要。Kotlin 標準函式庫會在建置時打包(shade)進 JAR,所以插件可以獨立運作。不過這也會讓 JAR 比功能相同的 Java 插件更大。
Maven 還是 Gradle?
+
Gradle。Kotlin 目標使用 Gradle 的 Kotlin 插件,這是 JVM 上 Kotlin 的標準工具鏈。Java 目標則使用 Maven。
Kotlin 在這裡到底有什麼好處?
+
主要是空值安全和更少的繁瑣寫法。Bukkit 的 API 很多地方會回傳 null,像是 getPlayer、getWorld、讀取設定,而 Kotlin 的型別系統會強迫你在編譯時就處理好,而不是到了正式環境才以 NullPointerException 的形式發現。資料類別、擴充函式和作用域函式也能大幅減少設定和監聽器程式碼裡的樣板。
可以在一個插件裡混用 Java 和 Kotlin 嗎?
+
產生器產出的是 Kotlin 原始碼集。Gradle 可以編譯混合原始碼,所以你之後可以加入 Java 檔案,但產生的專案以 Kotlin 為主。
我該選 Kotlin 還是 Java?
+
如果你想跟教學、現成的程式碼片段和別人的程式碼有最大的相容性,就選 Java,因為幾乎所有 Bukkit 資料都以 Java 為前提。如果你熟悉 Kotlin,想要更精簡、空值安全的程式碼,就選 Kotlin,兩者的 API 完全相同。
其他 Codexe 產生器
比較喜歡 Java,或在架構的其他部分工作?Codexe 也能產生:
Codexe 如何建置與檢查這些專案、需求裡該寫什麼,以及常見問題:Spigot and Paper plugins (Java or Kotlin) 指南。