Kotlin · Bukkit · Spigot · Paper

KOTLIN 插件 產生器

同樣的 Bukkit API,用 Kotlin 來寫。描述插件要做什麼,Codexe 就會建立含 Kotlin 原始碼集的 Gradle 專案、正確的 plugin.yml,還能在你下載前先幫你編譯出 JAR。

為什麼要產生 Kotlin 插件

在 Bukkit 需要的地方做到空值安全

Bukkit 經常回傳 null:離線玩家、不存在的世界、缺少的設定鍵。Kotlin 讓這些情況在編譯時就攤開來,而不是凌晨兩點才在你的伺服器主控台裡冒出來。

真正的 Gradle 專案

build.gradle.kts 已為 Kotlin JVM 插件和 Paper/Spigot 儲存庫設定好,原始碼結構也是標準的。不會只丟給你一個檔案,讓你自己找地方放。

樣板程式碼少很多

設定模型用資料類別,Player 和 ItemStack 用擴充函式,用作用域函式取代層層巢狀的 null 檢查。同樣的邏輯,程式碼明顯更少。

也支援 Folia 和代理伺服器

如果你用的是 Paper 的多執行緒分支,要注意 Folia 拿掉了單一主執行緒,需要依區域排程。請在插件產生器上選擇 Folia 目標,讓排程從一開始就正確。網路層級的工作請用代理伺服器插件產生器。插件文件說明了其中的差異。

提示詞範例

> 一個適用於 Paper 1.21 的 Kotlin 插件,有 /kit 指令可發放可設定的物品組合,以資料類別儲存每位玩家的冷卻時間,並使用有預設值的 YAML 設定檔。
> 一個 Kotlin 插件,以非同步方式把每次破壞方塊記錄到各世界專屬的檔案裡,並新增 /blocklog <player> 來查看最近 20 筆紀錄。
> 一個 Kotlin 插件,為一件附魔物品新增自訂合成配方,並用監聽器阻止它在地獄以外的地方使用。
> 一個 Kotlin 插件,用分頁介面列出線上玩家,點擊即可傳送,需要權限節點才能使用。

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 完全相同。

比較喜歡 Java,或在架構的其他部分工作?Codexe 也能產生:

Codexe 如何建置與檢查這些專案、需求裡該寫什麼,以及常見問題:Spigot and Paper plugins (Java or Kotlin) 指南。

準備好做新插件了嗎?

Free 方案每天補充 50K token,足夠一次做出一個小型 Kotlin 插件。

開始鍛造
Kotlin Minecraft 插件 AI 產生器 | Codexe