最近研究了一番 BungeeCord,有感而发,故写下此文。此文是我根据 SpigotMC 的官方文档 以及自己在实际的使用中的理解写成的。当然,这篇文章同样适用于 Waterfall 这样的 BungeeCord 的 Fork 版本。
以下是关于 config.yml 配置文件的一些个人理解,可能会不够准确。
server_connect_timeout: 5000
此行配置表示的是在取消连接之前,BungeeCord 会尝试把玩家连接到自己身上多长时间。这个里面仅支持填入整数,单位是毫秒。
remote_ping_cache: -1
此行配置表示 BungeeCord 是不是应该缓存它下面子服务器的人数以避免反复 ping 它下面的子服务器。像这样将它设置为 -1 则表示禁用缓存。如果你将它配置为正整数(单位:毫秒),那么它会在这段时间里面不重新 ping 所有子服务器以获取玩家数量统计。
forge_support: false
这表示对于 Forge Model Loader(锻造模组加载器)的支持。对于其它的模组加载器,此配置项有可能是无效的。开启后,带有 Forge 的 Minecraft 客户端将会显示出这是支持 Forge 的服务器(一个绿色的对勾,如果没有开启则是黄色的 V 字图样)。如果子服务器中有 Forge 服务器,则务必开启此项目(将其设置为 true,否则像这样默认即可)。
player_limit: -1
这一行表示对于最大玩家数量的限制(实际的)。如果它被设置为正整数,则它将会在玩家数量达到此限制时禁止新的玩家加入。如果这是一个 0 或者更低的值,则可以允许无限数量的玩家通过此 BungeeCord 服务器加入。需要注意的是,即使 BungeeCord 允许无限数量的客户端加入,它下面的子服务器依然会按照它们本身的配置来限制玩家数量。
permissions:
default:
- bungeecord.command.server
- bungeecord.command.list
admin:
- bungeecord.command.alert
- bungeecord.command.end
- bungeecord.command.ip
- bungeecord.command.reload
在这里,可以定义一些权限组。在默认配置下,这里会有 default 和 admin 两个权限组。注意不要删除 default 权限组,这可能会导致无法使用 /server 或者 /list 甚至更严重的后果。这与之后的玩家权限配置需要配合使用,可以为一个玩家授予 BungeeCord 的管理员权限。
timeout: 30000
这一行表示在 BungeeCord 失去响应之后,应该在多少毫秒后关闭全部连接。一般来说,这一项可以不用额外配置,因为 BungeeCord 未响应的情况可能是比较少见的。
log_commands: false
是否需要记录下玩家所执行的 BungeeCord 命令。注意这与对子服务器执行的命令无关。它只能记录玩家运行的 BungeeCord 命令。将它打开可能会便于查看玩家具体进行了什么操作,但是也会增大日志文件的大小。
network_compression_threshold: 256
服务器与客户端之间的数据包压缩等级。将它调大可能会使得使用的流量更少,但是可能会导致服务器变得较为卡顿。因此保持默认的配置即可。或者可以适当把这个值调高或者调低一些。
online_mode: true
这就是正版验证设置。不建议关闭它,因为它提供微软的正版验证服务,同时可以免去额外的登录环节。如果你关闭了它并使用 AuthMe,请一定要同步安装 AuthMeBungee,否则可能导致安全问题!或者你也可以保持它的开启并使用第三方登录服务器。
disabled_commands:
- disabledcommandhere
这里可以配置要在 BungeeCord 上禁用的命令。如果一个 BungeeCord 命令可能会导致安全问题和漏洞出现,你可以在这里的列表里面添加它以令 BungeeCord 拒绝执行这个命令。注意在这里添加命令依然无法有子。
servers:
lobby:
motd: '&1Just another BungeeCord - Forced Host'
address: localhost:25565
restricted: false
这里是关于子服务器列表的配置。通过 /greload 命令可以热重载,但是有可能不稳定哦。在这里呢,你可以复制多个子服务器并且为它们取不同的名字(必须为小写)。更改 address 可以实现更换子服务器地址。你甚至可以将各种服务器(例如 Hypixel)作为子服务器连接在 BungeeCord 上(不要开启 ip_forward)!
motd 部分是不需要动的。restricted 如果被配置为 True,则要求玩家具有 bungeecord.server.[服务器名称] 这样的 BungeeCord 权限才可以加入(例如,一个玩家拥有 bungeecord.server.lobby 权限,则该玩家可以加入 lobby 服务器)。
listeners: #这里是所有监听器的列表,你可以添加多个监听器以便从多个地址加入。
- query_port: 25577 #Query 协议所使用的端口
motd: '&1Another Bungee server' #自定义此监听器将会呈现出的 MOTD。
tab_list: GLOBAL_PING # Tab List 的状态,可以为 GLOBAL_PING(显示连接到代理的所有玩家并完成 ping)或者 GLOBAL(同上,但是不会更新他们的 IP)
query_enabled: false #启用 UDP 的 Query 协议。
proxy_protocol: false #是否开启 HAProxy,这可以与 frpc 配合以显示玩家真实 IP。
forced_hosts: #允许重定向,这可以根据加入时的域名来自动连接到子服务器。
pvp.md-5.net: pvp #就比如这里,会将通过 pvp.md-5.net 的玩家自动连接到名为 pvp 的子服务器。
ping_passthrough: false #是否传递子服务器的 ping 和 MOTD 信息
priorities: #在第一次连接启用了 force_default_server(就在下方)时,按照何种顺序尝试连接服务器。如果希望支持多版本,在这里添加所需要的版本的服务器,BungeeCord 将会为客户端匹配到合适的服务器。(其实 ViaVersion 更好一些)
- lobby
bind_local_address: true #BungeeCord 用于连接到服务器的地址是否将显式地设置为 BungeeCord 正在侦听的地址。除非所在的系统有多个 IP 地址,否则这没有任何用处。
host: 0.0.0.0:25577 #在 25577 上进行监听,玩家将会需要使用这里的端口加入。
max_players: 1 #最大玩家数量。注意这里并不是真实的限制,仅仅只是显示出来的大小。
tab_size: 60 #Tab 菜单的最大大小(按下 )
force_default_server: false #根据 priorities
中的顺序尝试连接到其中的服务器。
这里是全部的关于监听器的配置。接下来就是其它的一些设置了。
ip_forward: false
打开 IP 地址转发。需要在子服务端的配置文件中找到 spigot.yml(原版服务端不存在这个文件)并设置 bungeecord: true 才可以启用这个功能。不然的话玩家会无法加入并得到错误消息。
remote_ping_timeout: 5000
在和子服务器断开连接之前,需要等待多长时间。假如说,你经常遇到 Proxy lost connection to server. 这样的错误,那么你或许应该调大这个值以避免 BungeeCord 过早地放弃尝试。
prevent_proxy_connections: false
这会让 BungeeCord 服务器将连接玩家的IP发送到Mojang,以检查他们是否正在使用代理连接到BungeeCord。
groups:
md_5:
- admin
用户组设置。一般来说,玩家都处于 default 权限组中。如果你正在使用离线模式的服务器,那么将此处的配置修改为 groups: [] 会好一些。或者配合 AuthMeBungee 也可以防止未登录的用户远程执行名命令(例如 /end 等等)。
connection_throttle: 4000
在上一次连接后的多少毫秒后玩家可以再次尝试连接(防止攻击)。
stats: c4b9cabb-93e9-4bce-93ab-4b18642e6f3e
这是用于统计目的的,不要删除或更改这里的代码。这是一个随机生成的字符串,是用来提供统计数据的。统计信息是在 MCStats 上收集的匿名信息。这是不应该被编辑的,所以请不要动这个!
connection_throttle_limit: 3
一旦 IP 在 connection_throttle 毫秒内连接了 connection_throttle_limit 次,它必须等待 connection_throttle 毫秒才能再次尝试连接。
log_pings: true
记录下 ping。这会让服务器在被 ping 的时候把访问者的 IP 记录到日志和输出中。
好的!那么这些就是全部的配置了。整理这些东西也是花费了我不少的时间呐,所以如果对你有用就太好了!