平台
Spigot 與 Paper 插件
如何用 Codexe 做出最好的 Bukkit、Spigot 或 Paper 插件(Java 或 Kotlin):需求要寫什麼、版本、plugin.yml、相依套件、建置和常見問題。
更新於
Bukkit/Spigot/Paper 類型會產生一個伺服器插件,可以在 Paper、Spigot 以及它們的分支上執行。你可以選 Java(Maven 專案)或 Kotlin(含 build.gradle.kts 的 Gradle 專案)。
想在遊戲裡玩玩看你的插件,可以用立即試用啟動一台私人測試伺服器。
你送出需求時,Codexe 會問你插件要用在哪個 Minecraft 版本,範圍從 1.8.8 到 26.3。程式碼會依照該版本的 API 和 Java 等級撰寫,測試伺服器也會執行該版本。2026 年 9 月 30 日之前建立的專案會保留建置檔中寫的版本。
#需求要寫什麼
- 伺服器軟體和版本:「Paper 1.21.4」或「Spigot 1.20.1」。Paper 的 API 比 Spigot 大。為 Spigot 寫的程式碼可以在 Paper 上執行,反過來就不行,所以兩邊都需要的話,請要求 Spigot。
- 指令:參數、誰可以用,以及 Tab 自動完成。
- 權限和它們的預設值(
true、op、false)。 - 你希望可以編輯的 config.yml 鍵值。
- 儲存方式:YAML、SQLite、MySQL,或存在記憶體中。
- 整合:Vault、PlaceholderAPI、LuckPerms、WorldGuard……請明確寫出名稱,這樣才會被加入為相依套件。
A Paper 1.21.4 plugin (Java) called Bounties.
- /bounty set <player> <amount>: takes money via Vault, adds it to the player's bounty.
- Killing a player with a bounty pays it to the killer.
- /bounty top shows the 10 highest bounties.
- Bounties stored in SQLite. Minimum bounty 100 (config.yml).
- Permission bounties.set (default true).A Paper 1.21.4 plugin in Kotlin called Bounties, same features as above.
Use Kotlin idioms (data classes, extension functions) but keep the Bukkit API usage standard.#Codexe 會產生什麼
- 一個帶有正確 API 相依套件的 Maven 專案(Java)或 Gradle 專案(Kotlin)。
- 繼承
JavaPlugin的主類別,以及指令、監聽器和儲存相關的類別。 - 包含主類別、
api-version、指令和權限的plugin.yml,有設定項目時還會有config.yml。
name: Bounties
version: 1.0.0
main: eu.codexe.bounties.Bounties
api-version: '1.21'
depend: [Vault]
commands:
bounty:
description: Manage bounties
permissions:
bounties.set:
default: true#版本與 Java
Codexe 會從建置檔讀取 Minecraft 版本,並用 Java 17(1.20.5 之前)、Java 21(1.20.5 及更新版本)或 Java 25(26.x)來建置。如果你沒說版本,就會使用 Paper/Spigot API 1.20.6。
#建置與驗證
Codexe 會先編譯插件才把它標為就緒,並檢查 JAR 裡有類別檔和 plugin.yml(或 paper-plugin.yml)。插件建置通常遠不到一分鐘。請參閱編譯。
#安裝
下載 JAR,放進 plugins/,重新啟動伺服器(不要用 /reload),然後看看主控台在啟動時有沒有錯誤。
#常見問題
| 症狀 | 可能的原因 |
|---|---|
| 插件無法載入,出現「main class not found」 | plugin.yml 裡的 main: 和類別對不上。請在聊天中要求修正,或在手動重新命名後檢查一下。 |
| 在較舊的伺服器上出現「Unsupported API version」 | 插件針對的 API 比你的伺服器還新。請在需求中寫出伺服器的確切版本。 |
| 某個指令完全沒反應 | plugin.yml 裡少了這個指令,或玩家沒有對應的權限。 |
Vault 之類的插件出現 NoClassDefFoundError | 伺服器上沒有安裝所需的相依插件。 |
| 能建置,但某個功能行為不對 | 在聊天中具體描述遊戲內的實際狀況。驗證檢查的是建置,不是遊戲玩法。 |