指南

如何制作 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