指南

如何製作 BungeeCord 插件

更新於 2026年10月18日

BungeeCord 插件執行在你所有伺服器前面的代理伺服器上,而不是遊戲伺服器上。它看得到玩家連線、切換伺服器和離開,所以很適合做全群組聊天、管理工具、維護模式、MOTD,以及在伺服器之間傳送玩家。它沒有世界或方塊:遊戲玩法應該放在後端伺服器的插件裡。

把指令改成適合你伺服器群組的。

用 Codexe 產生這個

逐步說明

  1. 1.確認你使用的代理伺服器

    BungeeCord(或 Waterfall 這類分支)和 Velocity 是不同的 API。BungeeCord 插件不能在 Velocity 上執行,反過來也一樣。

  2. 2.建立專案

    一個 Maven 或 Gradle 專案,加入範圍為 provided 的 bungeecord-api 相依套件。執行時由代理伺服器提供它。

  3. 3.撰寫主類別

    一個繼承 net.md_5.bungee.api.plugin.Plugin 的類別,在 onEnable() 裡透過 getProxy().getPluginManager() 註冊指令和監聽器。

  4. 4.在 bungee.yml 中描述插件

    name、version、main 和 author。BungeeCord 也會讀取 plugin.yml,但用 bungee.yml 可以避免和 Spigot 插件搞混。指令是在程式碼裡註冊,而不是寫在檔案裡。

  5. 5.撰寫指令和監聽器

    指令繼承 Command;監聽器實作 Listener,用 @EventHandler 方法處理 PostLoginEvent 或 ServerSwitchEvent 等事件。

  6. 6.需要時和後端伺服器溝通

    代理伺服器看不到物品欄或世界。如果需要這些,就在每台後端伺服器上放一個小型的搭配插件,和代理伺服器插件互傳插件訊息。

  7. 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 產生這個
如何為你的伺服器群組製作 BungeeCord 插件 | Codexe