|
BC端就是世c端BungeeCord,一个代理端。界b教程你有一台机器,世c端上面跑了三个Spigot服,界b教程想让玩家用一个IP进不同服,世c端就得靠它。界b教程没有BC,世c端玩家得记三个端口,界b教程烦得很。世c端BC的界b教程作用就一个:把进来的连接转发到后端的子服,顺便管管玩家在哪个服。世c端 先说清楚架构。界b教程BC本身不跑地图,世c端不刷怪,界b教程不处理方块。世c端它就是个中转站。玩家连到BC的监听端口,BC根据配置决定把人送到哪个子服。子服才是真正跑游戏逻辑的地方。所以BC机器配置不用太高,但网络得稳,不然玩家掉线掉到怀疑人生。 下载BC去SpigotMC或者PaperMC的官网找。PaperMC现在有Waterfall,是BC的分支,性能好点,修了些bug。新手直接用Waterfall也行,配置文件跟BC基本一样。下下来是个jar,扔进一个空文件夹,跟开普通服务端一样启动一次,生成配置文件,然后关掉。 配置文件里最重要的几个地方。config.yml里有个listeners,下面有个query_port和motd。host写0.0.0.0表示监听所有网卡。query_port默认25577,这是BC自己的查询端口,跟游戏端口不是一回事。priorities是子服优先级,比如lobby、survival、creative,玩家默认进第一个。server.yml在config.yml同目录下,里面定义子服名字和地址。比如: servers: lobby: address: 127.0.0.1:25566 restricted: false motd: '大厅' survival: address: 127.0.0.1:25567 restricted: false motd: '生存服' 注意address必须写子服实际监听的IP和端口。子服那边server.properties里online-mode要改成false,因为BC已经做了正版验证。子服spigot.yml里bungeecord设成true,不然玩家进子服会被踢。这步最容易漏,漏了就是“If you wish to use IP forwarding, please enable it in your BungeeCord config as well!”报错。 防火墙别忘开。BC监听端口比如25565,子服端口25566、25567,这些端口如果只在本机通信,不用对外开放,但BC的端口必须放行。我见过有人BC端口开了,子服端口也开,结果玩家直连子服绕过BC,权限全乱。子服端口绑到127.0.0.1就行,别绑0.0.0.0。 插件方面,BC端插件放plugins文件夹,跟子服插件不互通。常用的有BungeeTabListPlus改tab,LuckPerms做跨服权限同步,GeyserMC让基岩版玩家进来。注意BC端插件不能用Bukkit API,得用BC自己的API。写错插件直接报ClassNotFound,服务端起不来。 实际跑起来之后,玩家在子服之间切换用/server 子服名。想自动传送得装插件或者写脚本。跨服聊天BC默认不支持,得装BungeeChat或者RedisBungee做消息同步。我试过用RedisBungee,配置有点绕,但跨服聊天延迟低,几百人在线也不卡。 最后说个坑。BC端和子服版本别差太远。BC 1.19带1.20子服可能出问题,协议对不上。Waterfall更新挺勤,跟着子服版本走就行。还有,BC端别装太多插件,它就是个转发器,插件多了反而拖慢连接速度。我见过有人BC端装了二十几个插件,玩家进服要等十秒,纯属折腾。 |
