前言
想弄一个跨服,目前这篇文章是边测试边写的,两个子服都是在同一个机器上运行的
如果两个子服在不同的网络,跨服的延迟就会比较高
- 两个子服 s1 和 s2 都是使用folia核心
- 版本1.20.1
- s1 端口: 25565
- s2 端口 : 25566
1.下载 Waterfall
Waterfall Downloads | PaperMC
2.启动两个子服
/usr/local/java17/bin/java -jar server.jar nogui
/usr/local/java17/bin/java -jar server.jar nogui
3.启动 Waterfall
第一次启动服务端时会下载额外的模块(位于 modules 文件夹内),下载完成后服务端便会启动。
/usr/local/java17/bin/java -Dfile.encoding=UTF-8 -Xms512M -Xmx1024M -jar waterfall-1.20-562.jar
看到这一行表示启动成功了
[03:55:33 INFO]: Listening on /0.0.0.0:25577
4.配置 Waterfall
enforce_secure_profile: false
listeners:
- query_port: 25577
motd: '&1Another Bungee server'
tab_list: GLOBAL_PING
query_enabled: false
proxy_protocol: false
forced_hosts:
pvp.md-5.net: pvp
ping_passthrough: false
priorities:
- s1
- s2
bind_local_address: true
host: 0.0.0.0:25577
max_players: 1
tab_size: 60
force_default_server: false
remote_ping_cache: -1
network_compression_threshold: 256
permissions:
default:
- bungeecord.command.server
- bungeecord.command.list
admin:
- bungeecord.command.alert
- bungeecord.command.end
- bungeecord.command.ip
- bungeecord.command.reload
- bungeecord.command.kick
log_pings: true
connection_throttle_limit: 3
server_connect_timeout: 5000
timeout: 30000
player_limit: -1
prevent_proxy_connections: false
ip_forward: false
groups:
md_5:
- admin
remote_ping_timeout: 5000
connection_throttle: 4000
log_commands: false
stats: 4981b3ee-08b3-45b8-b337-2dcd607df4c6
online_mode: false
forge_support: true
disabled_commands:
- disabledcommandhere
servers:
s1:
motd: '&1Just another Waterfall - Forced Host'
address: localhost:25565
restricted: false
s2:
motd: '&1Just another Waterfall - Forced Host'
address: localhost:25566
restricted: false
在最后的server 中 配置了两个服务器 s1 和s2
motd可以自己改
这里注意如果服务器是离线服,记得在 Waterfall 也关闭正版验证
下面是配置的解释
forge_support
代表是否启用对 Forge 的支持,默认值为true
,即启用。启用后会为 Forge 客户端提供支持(尽管兼容性并不是很好,编者注)。
player_limit
代表整个 BungeeCord 实例能够接受的最大玩家数量,默认值为-1,即不限数量。调整为正整数即启用最大玩家数量限制。
premission
和 groups
由 BungeeCord 提供的简易权限管理设置。前者用以配置权限组内置的权限,default
表示默认权限组;后者用以配置玩家所在的权限组。(这里的权限是指 BungeeCord 内置及其插件声明的权限,与下游服务器的权限完全无关,切勿混淆。正如 CraftBukkit 提供的 permission.yml 一样,这套简易的权限管理配置同样不受到欢迎,且难以配置。这里推荐安装 Luckperms 作为 BungeeCord 的权限组管理插件,编者注)。
log_commands
代表是否在控制台记录玩家输入的指令(同样,仅记录 BungeeCord 指令,与下游服务器无关,编者注)。默认值为false
,即不记录。
log_pings
代表是否在控制台记录玩家客户端向 BungeeCord 发起 ping 请求的记录(这种记录一般是玩家尝试刷新服务器MOTD信息时出现的)。默认值为true
,即记录。
online_mode
代表是否开启正版验证,开启正版验证时, BungeeCord 将仅接受经过 Mojang 正版验证服务器验证通过的玩家加入服务器,反之任何玩家都可进入服务器。默认值为true
,即开启正版验证。(请注意,如果开启正版验证,那么请务必将所有下游服务器的正版验证关闭,否则玩家将无法连接至下游服务器(BungeeCord 将负责向下游服务器传递玩家的正版数据,如 UUID 等),编者注)。
ip_forward
代表是否启用 IP 追踪,默认值为 false
,即不开启。开启后 BungeeCord 将会向下游服务端传递玩家的真实IP。如果不开启本项,那么下游服务端接收到的玩家 IP 将永远为 BungeeCord 服务端所在的 IP 地址。要想开启此项,您必须使用支持 ip_forward功能的服务端,并启用其配置中的设置(具体设置方法见下)。如果仅启用了此项而不配置下游服务端的是设置,那么玩家将无法连接到下游服务器。强烈建议所有人都启用此项以免出现某些 IP 问题。
listeners
表示监听器设置,一个监听器对应一个监听端口,不同的监听端口可以允许不同的玩家加入设定的不同的服务器,且设置相互独立。一个 BungeeCord 实例可以设置多个监听器。BungeeCord 的默认配置文件只提供了一个监听器,如需添加多个监听器请自行按照 YAML 语法在listeners
下重复添加。
listeners.query_enabled
代表是否开启 UDP 查询,开启后可籍由 UDP 协议监听该监听器的状态。默认值为false
,即关闭查询。
listeners.query_port
代表查询端口,默认值为25577
。
listeners.motd
代表当仅有一个默认服务器时,服务器将会显示给玩家的Motd。当listeners.ping_passthrough
被开启时,此项无效。如果希望使用双行Motd,那么可以使用以下的格式(servers.[xxx].motd
同):
motd: |
第一行MOTD
第二行MOTD
listeners.tab_list
代表连接到服务器的玩家的 TAB 列表所显示的内容格式。他可以有三个值,分别是GLOBAL_PING
(默认值),GLOBAL
和SERVER
。当设置为第一种时, TAB 列表会显示所有连接到本 BungeeCord 实例的玩家和他们的 PING 值;当设置为第二种时,同上一种大致相同,但玩家的 PING 值不会更新;当设置为第三种时,只会显示玩家所在的下游服务器的玩家列表。
listeners.proxy_protocol
代表是否开启对 HAProxy 的支持,默认值为false,即关闭。开启后,BungeCord 将支持接收上游 HAProxy 籍由 ProxyProtocolV3 协议发送的玩家真实 IP,如不开启此项但在上游使用了 HAProxy 服务端,那么 BungeeCord 接收到的玩家 IP 地址将衡为 HAProxy 的所在地址。如果您不理解此项在说什么,请不要随意开启本项。
listeners.forced_hosts
代表端口转发设置,默认值为一个仅包含一个键为pvp.md-5.net
,值为pvp
的 Map (即pvp.md-5.net: pvp
)。这意味着所有通过pvp.md-5.net
域名连接到 BungeeCord 的玩家将不会再被连接到默认下游服务器(对于默认下游服务器的配置请见listeners.priorities
项),而将会被重定向至服务器名为pvp
的服务器(关于服务器名的配置请见servers
项)。这要求您预先将名为pvp.md-5.net
的子域先解析至 BungeeCord 所在的地址。
listeners.ping_passthrough
是否开启 ping 穿透,默认值为false
,即不开启。开启后,BungeeCord 将直接传递默认下游服务器的 ping(如motd,在线玩家数)信息到客户端,而不是显示 BungeeCord 设置的此类信息。
listeners.priorities
优先级设置,默认值为一个仅有lobby
服务器的列表,可以按照格式依次向下添加多个已在servers
项中配置的服务器名,优先级由上到下逐级递减)。这代表玩家连接到 BungeeCord 后将会被转发到的服务器的顺序:第一个是首选服务器,如果因为某些原因使玩家无法连接到该服务器(如服务器已关闭,版本与玩家客户端版本不匹配),那么将尝试将玩家转发到下一个服务器,以此类推。如果所有服务器都无法连接,那么玩家将会收到一个服务器当前不可用的提示。(此项不一定必须全部对应servers
内的下游服务端名称,如果您有一个登录服,那么此处应当只填写您的登录服名称,这样当您的登录服离线时,玩家将不能进入服务器,而不是绕过登录服的登录系统前往其他下游服务器)
listeners.bind_local_address
代表是否显式显示 BungeeCord 正在监听的 IP 地址,默认值为true
。除非的服务器拥有多个 IP 地址,否则这并没有什么实际用处。如果没有特殊需求,最好不要改变此项。
listeners.host
代表该监听器监听的 IP 地址和端口,默认值为0.0.0.0:25577
,即监听来自所有 IP 地址的来自25577
端口的连接。0.0.0.0
代表监听所有 IP 地址,如果您将其设置为非0.0.0.0
的 IP 地址,则代表只监听来自于该 IP 地址的连接。一般情况下,您只需要修改25577
为希望玩家连接的端口号,或保持不变。
listeners.max_players
代表玩家客户端将会显示的最大玩家数,默认值为1。此项只作为装饰,并未真实的最大玩家数设置,即使将此项设置为0,玩家仍可以进入服务器。要想设置真正的最大玩家数,请见player_limit
项。 listeners.tab_size
代表将会显示在 TAB 列表上的最大玩家数量,默认值为60.
listeners.force_default_server
代表当每次玩家进入服务器时,是否强制将玩家发送到默认服务器中,默认值为false
,即关闭。设置为false
则代表玩家进入服务器时将会发送到玩家上一次下线时的服务器。如果您有一个登录服,亦或者使用了一个由单个大厅服务器管理的登录插件,请务必将此处设置为true
以免玩家下次登录时直接绕过登录系统。此项与listeners.forced_hosts
相冲突,如果您希望使用后者提供的重定向功能,那么请将此项设置为false
。
prevent_proxy_connections
代表是否向 Mojang 发送玩家 IP 数据以阻止 使用了代理的玩家进入服务器。默认值为false
,即不开启
connection_throttle
和 connection_throttle_limit
为 BungeeCord 自带的简易反压测策略,他们分别代表断开时间和断开次数,默认值分别为4000
和3
。这意味着单个 IP 一旦在 4000 毫秒内连接了 BungeeCord 3 次,那么它必须等待 4000 毫秒后才能再次连接。
servers
代表下游服务端设置,只有在此处设置过的下游服务器才可被连接。它包括一个名为lobby
的默认下游服务端,您可以按照这种格式继续向下添加更多的下游服务器。(如果修改了lobby
的名称,请千万不要忘记修改上方listeners.priorities
的优先级设置以免因不存在一个名为lobby
的下游服务端而无法连接。其中:
server.[XXX]
代表服务器名称,可为任意值,但必须是唯一的;server.[xxx].motd
代表当有多个默认服务器时,被匹配到可以连接的首选服务器将会显示给玩家的Motd。同样当listeners.ping_passthrough
被开启时,此项无效。如果希望使用双行Motd,请参见上方listeners.motd
的注释。server.[xxx].address
代表目标下游服务器的 IP 地址和端口,请填写 BungeeCord 所在的网络环境能够连接到的地址(包括本地地址和内网地址),无需保证玩家可以连接。server.[xxx].restricted
代表权限控制,默认值为false
。当设置为true
时,只有拥有bungeecord.server.[xxx]
权限时,玩家才能进入此服务器。
5.验证
在PCL2启动mc,多人游戏 - 添加服务器 输入你服务器ip:25577
进入后输入
/server s1 或者 /server s2
进入s1 或者 s2 服务器