指南
如何製作 BungeeCord 插件
更新於 2026年10月18日
BungeeCord 插件執行在你所有伺服器前面的代理伺服器上,而不是遊戲伺服器上。它看得到玩家連線、切換伺服器和離開,所以很適合做全群組聊天、管理工具、維護模式、MOTD,以及在伺服器之間傳送玩家。它沒有世界或方塊:遊戲玩法應該放在後端伺服器的插件裡。
把指令改成適合你伺服器群組的。
用 Codexe 產生這個逐步說明
1.確認你使用的代理伺服器
BungeeCord(或 Waterfall 這類分支)和 Velocity 是不同的 API。BungeeCord 插件不能在 Velocity 上執行,反過來也一樣。
2.建立專案
一個 Maven 或 Gradle 專案,加入範圍為
provided的bungeecord-api相依套件。執行時由代理伺服器提供它。3.撰寫主類別
一個繼承
net.md_5.bungee.api.plugin.Plugin的類別,在onEnable()裡透過getProxy().getPluginManager()註冊指令和監聽器。4.在 bungee.yml 中描述插件
name、version、main和author。BungeeCord 也會讀取plugin.yml,但用bungee.yml可以避免和 Spigot 插件搞混。指令是在程式碼裡註冊,而不是寫在檔案裡。5.撰寫指令和監聽器
指令繼承
Command;監聽器實作Listener,用@EventHandler方法處理PostLoginEvent或ServerSwitchEvent等事件。6.需要時和後端伺服器溝通
代理伺服器看不到物品欄或世界。如果需要這些,就在每台後端伺服器上放一個小型的搭配插件,和代理伺服器插件互傳插件訊息。
7.安裝到代理伺服器
把 .jar 放進代理伺服器的
plugins/資料夾,然後重新啟動代理伺服器,而不是後端伺服器。
實用的代理伺服器事件
| 事件 | 觸發時機 | 常見用途 |
|---|---|---|
ProxyPingEvent | 用戶端重新整理伺服器清單 | MOTD、玩家人數、維護訊息 |
PostLoginEvent | 玩家已加入代理伺服器 | 加入訊息、載入玩家資料 |
ServerConnectEvent | 玩家即將連線到某台伺服器 | 把玩家送到大廳、封鎖某些伺服器 |
ServerSwitchEvent | 玩家移動到另一台伺服器 | 全群組的「加入了伺服器」訊息 |
PlayerDisconnectEvent | 玩家離開了伺服器群組 | 保存資料、通知管理人員 |
ChatEvent | 玩家送出聊天訊息或指令 | 全群組聊天、過濾器、管理人員聊天 |
正確設定伺服器群組
- 在代理伺服器的
config.yml開啟ip_forward,並在每台 Spigot 或 Paper 伺服器的spigot.yml設定bungeecord: true,玩家名稱和 UUID 才會被傳過去。 - 把後端伺服器設成
online-mode=false,並確保它們無法從網際網路直接連線,只能透過代理伺服器進入。 - 插件訊息只有在有玩家連線到該後端伺服器時才能傳送,所以送往空伺服器的訊息不會送達。
描述範例
「一個名為 NetUtils 的 BungeeCord 1.21 代理伺服器插件。/lobby 把玩家送到大廳伺服器。/staffchat <message>(別名 /sc)把訊息傳給所有伺服器上擁有 netutils.staff 的人。/maintenance on|off 顯示維護中的 MOTD,並踢出沒有 netutils.bypass 的玩家。管理人員切換伺服器時,在管理人員聊天中發出加入訊息。伺服器名稱、MOTD 和訊息放在 config.yml。」
用 Codexe
選擇 BungeeCord/Velocity 類型,並寫明你用的是哪一種代理伺服器,因為它們的 API 不同。Codexe 會用 Maven 編譯插件,並在變成就緒之前確認 .jar 的描述檔正確;需求中沒寫版本時,會使用 BungeeCord API 1.21。如果你需要後端的搭配插件,請把它當成另一個 Spigot/Paper 專案來要求。
「立即試用」目前還不支援代理伺服器,所以請在你自己的伺服器群組,或是搭配一台後端伺服器的本機代理伺服器上測試代理伺服器插件。也可以參考 BungeeCord 插件產生器。
常見問題
BungeeCord 插件可以修改方塊或物品欄嗎?
不行,代理伺服器只處理連線和訊息。遊戲玩法請用後端插件,如果兩者需要配合,就用插件訊息。
它能在 Velocity 上執行嗎?
不行。Velocity 有自己的 API 和 velocity-plugin.json。如果兩種都有用,就做兩個專案。
聊天功能要用代理伺服器插件還是後端插件?
如果聊天訊息必須傳到每台伺服器上的玩家,就用代理伺服器插件。如果聊天只在單一伺服器內,就用後端插件。
替你的伺服器群組製作插件
這則提示詞開啟後即可直接傳送:
“一個名為 NetUtils 的 BungeeCord 1.21 代理伺服器插件:/lobby 把玩家送到大廳伺服器,/staffchat(別名 /sc)把訊息傳給所有伺服器上擁有 netutils.staff 的人,/maintenance on|off 顯示維護中的 MOTD 並踢出沒有 netutils.bypass 的玩家,管理人員切換伺服器時在管理人員聊天中通知,伺服器名稱、MOTD 和訊息放在 config.yml。”
用 Codexe 產生這個