什么是WaterFall核心?

Waterfall 是一个 BungeeCord 的分支,由 PaperMC 团队主导开发,其特点是拥有更友好的控制台输出和更个性化的配置选项

为什么不使用原生 BungeeCord
由 SpigotMC 团队开发的 BungeeCord 在控制台输出和log输出上并不完美,而 Waterfall 恰好改善了这一部分的体验,因此在这里我们使用 Waterfall 作为示例。如果你仍想使用原生 BungeeCord 或其分支(如HexaCord)也无需担心,因为 Waterfall并不会改变主要配置文件(config.yml)和主要文件架构,因此您扔可通过本文来了解您所使用的 BungeeCord 跨服端如何配置

下载核心

请前往:https://papermc.io/downloads/waterfall
下载最新构建

2023-07-19T05:10:25.png

下载完毕后,将他放到一个文件夹里
然后按照启动服务器核心的方法启动它,该核心需要的内存不多,一般分配个512m~1024m的内存就够了
下面就列一个启动脚本
Windows的小伙伴用这个

@echo off
title Waterfall
:head
Java -Xms512m -Xmx1024m -jar 核心名字.jar
goto head

保存为任意bat文件或者cmd文件,就是后缀为.bat/.cmd
Linux系统就是这个

java -Xms512m -Xmx1024m -jar 核心名字.jar

然后保存为一个sh文件,比如start.sh
然后终端输入:

sudo bash start.sh

这样就成功打开了!

2023-07-19T08:38:17.png

第一次启动服务端时会下载额外的模块(位于 modules 文件夹内),下载完成后服务端便会启动。

当你看到 Listening on /0.0.0.0:25577 时即代表服务端已经完成了加载并开始正常工作了。因为我们需要配置服务端,因此输入end(不是stop)以关闭服务端。此时,你将可以看到 Waterfall 已经生成了一些文件。
他生成的文件一般有这些,除了你的启动脚本和核心排除掉

2023-07-19T08:39:28.png

配置

config.yml

server_connect_timeout: 5000
enforce_secure_profile: false
remote_ping_cache: -1
forge_support: true
player_limit: -1
permissions:
  default:
  - bungeecord.command.server
  - bungeecord.command.list
  admin:
  - bungeecord.command.alert
  - bungeecord.command.end
  - bungeecord.command.ip
  - bungeecord.command.reload
  - bungeecord.command.kick
timeout: 30000
log_commands: false
network_compression_threshold: 256
online_mode: true
disabled_commands:
- disabledcommandhere
servers:
  lobby:
    motd: '&1Just another Waterfall - Forced Host'
    address: localhost:25565
    restricted: 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:
  - lobby
  bind_local_address: true
  host: 0.0.0.0:25577
  max_players: 1
  tab_size: 60
  force_default_server: false
ip_forward: false
remote_ping_timeout: 5000
prevent_proxy_connections: false
groups:
  md_5:
  - admin
connection_throttle: 4000
stats: 03e8e9a3-973e-4025-821a-67c7e7f28969
connection_throttle_limit: 3
log_pings: true

下面我只介绍和推荐我认为需要配置的选项

forge_support: true 代表是否启用对 Forge 的支持,默认值为true,即启用。启用后会为 Forge 客户端提供支持(尽管兼容性并不是很好,编者注)
online_mode: true 正版验证,想开就开
proxy_protocol: false 代表是否开启对 HAProxy 的支持,默认值为false,即关闭。开启后,BungeCord 将支持接收上游 HAProxy 籍由 ProxyProtocolV3 协议发送的玩家真实 IP,如不开启此项但在上游使用了 HAProxy 服务端,那么 BungeeCord 接收到的玩家 IP 地址将衡为 HAProxy 的所在地址。如果您不理解此项在说什么,请不要随意开启本项。

下面这个是默认服务器,意思就是进入服务器的首选服务器,玩家连接Waterfall时转接的第一个服务器
priorities:
- lobby
host: 0.0.0.0:25577 绑定的地址,得要本地的地址,端口自己改,最好就25565,毕竟你拿来代理,有25565端口就最好了
max_players: 1 最大玩家数,可以随便改
force_default_server: false 这个必须开,不然玩家退出游戏再次进入还是在离线时的位置服务器,有登录服/大厅服的服务器必开
ip_forward: false 这个也必须得开你子服的spigot.yml开启bungeecord: true时,必须开启这个选项,这是转发玩家ip的选项必开!
log_pings: true 这个建议关掉,不然玩家每刷新一下服务器就会记录一次,后台就会刷屏

注意!true 等于打开选项 false 等于关闭选项!

额外的配置

对于 Waterfall,其在waterfall.yml上显示了很多有用的额外配置,您可以前往该文件内自行探索。

如何跨服

使用/server 服务器名指令即可传送到指定的服务器;

使用/send 玩家名 服务器名指令可以将指定在线玩家发送至指定的服务器;

请注意,不要忘记在权限管理系统中给予玩家bungeecord.command.server权限,给予有权限的管理员bungeecord.command.send权限以允许这些玩家使用上述指令。
推荐使用Luckpermsbungee插件来管理你的bungee权限与权限组

其他 BungeeCord 指令请自行探索

为 Waterfall 安装插件

您可以前往 SpigotMC 为 Waterfall 下载插件,并将插件放入plugins文件夹,并重启服务器,即可完成插件安装

子服配置

如果您正在使用 Vanilla 服务端###

前往server.properties将server-ip项设置为 BungeeCord 所在的 IP 地址(如果 BungeeCord 和 下游服务端位于同一个网络环境,那么可以使用127.0.0.1),将network-compression-threshold项设置为-1(此项将交由 BungeeCord 管理)
如果您启用了 BungeeCord 的ip_forward,那么您需要安装 VanillaCore,并依照其介绍为 Vanila 服务端注入补丁,注入完成后,使用修改后的 Vanilla 服务端即可支持 ip_forward

如果您正在使用 CraftBukkit 服务端

前往server.properties将server-ip项设置为 BungeeCord 所在的 IP 地址(如果 BungeeCord 和 下游服务端位于同一个网络环境,那么可以使用127.0.0.1),将network-compression-threshold项设置为-1(此项将交由 BungeeCord 管理)
前往bukkit.yml,将connection-throttle设置为-1(以免 BungeeCord 连接到下游服务端时因尝试多次而连接失败)
您不能启用 BungeeCord 的ip_forward,因为 CraftBukkit 不支持 ip_forward

如果您正在使用 Spigot 及其分支服务端(包括但不限于 Purpur、Paper,Folia,Tuinity,Akarin,Thermos,Contigo,Uranium,CatServer,Mohist,Magma,Arclight)

前往server.properties将server-ip项设置为 BungeeCord 所在的 IP 地址(如果 BungeeCord 和 下游服务端位于同一个网络环境,那么可以使用127.0.0.1),然后将network-compression-threshold项设置为-1(此项将交由 BungeeCord 管理)
前往bukkit.yml,将connection-throttle设置为-1(以免 BungeeCord 连接到下游服务端时因尝试多次而连接失败)
如果您启用了 BungeeCord 的ip_forward,那么请前往spigot.yml,将settings.bungeecord设置为true。如果您找不到该项,那么请确认您的 Spigot 版本是否高于 1.7 #5版本,如您的 Spigot 版本低于该版本,则您不应启用ip_forward项

如果您正在使用 Sponge(SpongeVanilla,SpongeForge) 及其分支服务端

前往server.properties将server-ip项设置为 BungeeCord 所在的 IP 地址(如果 BungeeCord 和 下游服务端位于同一个网络环境,那么可以使用127.0.0.1),然后将network-compression-threshold项设置为-1(此项将交由 BungeeCord 管理)
如果您正在使用 SpongeForge,那么请开启 BungeeCord 中的forge_support以接收 Forge 数据包
如果您启用了 BungeeCord 的ip_forward,那么请前往config/sponge/global.conf,将modules.bungeecord和bungeecord.ip-forwarding设置为true。
如果您正在使用 VanillaFabric(或所谓carpet服务端):

前往server.properties将server-ip项设置为 BungeeCord 所在的 IP 地址(如果 BungeeCord 和 下游服务端位于同一个网络环境,那么可以使用127.0.0.1),然后将network-compression-threshold项设置为-1(此项将交由 BungeeCord 管理)
如果您启用了 BungeeCord 的ip_forward,那么您需要安装 FabricProxy 模组以支持ip_forward。
如果您完成了以上的所有配置,那么恭喜您,您的 Waterfall 已经部署完毕,可以进行跨服工作了。