服务器重定向
此模组提供了一种轻量级方式,让服务器无需使用代理服务器即可将玩家转移到另一个服务器地址。
服务器重定向支持 Forge、Fabric、Bukkit/Spigot、SpongeVanilla/SpongeForge、Bungeecord/Waterfall 和 Velocity。
使用服务器重定向,服务器管理员可以避免由代理服务器(Bungeecord、Waterfall 和 Velocity)引起的模组兼容性问题。 特别是,此模组可与 Waterfall 和 Forge 1.13+ 服务器及客户端结合使用,提供一种在服务器之间转移玩家的方法(目前,1.13+ Forge 服务器需要处于"在线"模式,因为它们尚未包含 IP 转发功能...)。
此模组为可选模组,因此可以添加到模组包中,玩家即使没有此模组仍可加入服务器。同样,没有此模组的客户端也可以加入安装了此模组的服务器。
命令
- /redirect <目标> <服务器地址>:将指定的目标玩家重定向到指定地址
- /fallback <目标> <服务器地址>:为指定的目标玩家设置备用服务器地址
- /ifplayercanredirect <目标> <命令...>:对每个拥有服务器重定向模组的目标玩家执行指定命令
- /ifplayercannotredirect <目标> <命令...>:对每个未拥有服务器重定向模组的目标玩家执行指定命令
命令来源可以是任何能够运行命令的对象,如命令方块、玩家或控制台。 将 /redirect 替换为 /fallback,可使指定的目标玩家在被迫断开与服务器的连接时,连接到指定的服务器地址。
<目标> 参数可以是以下之一:
- 玩家名称/UUID:服务器上的指定玩家
- 目标选择器:目标选择器。Bungeecord 和 Velocity 上不可用目标选择器。
- r=N:距离命令发送者 N 格内的所有玩家,若由控制台执行则为距离主世界出生点 N 格内的所有玩家。仅限插件版本。
- s=<服务器名称>:指定服务器名称中的所有玩家。仅限 Bungeecord 和 Velocity。
- *:服务器上的所有玩家。
<命令...> 参数可包含以下占位符:
- %PlayerName:此占位符将被替换为玩家名称
- %PlayerId:此占位符将被替换为玩家 UUID
注意:若在目标玩家刚加入服务器时运行 /ifplayercanredirect 和 /ifplayercannotredirect,可能无法按预期工作。这些命令依赖于客户端向服务器发送数据包,告知其已安装此模组。客户端发送此数据包并经由服务器处理需要一定时间。建议在玩家加入服务器后至少延迟 20 刻再执行此命令!
示例:
- /redirect KaiNoMood myawesomemcserver.net:25667:名为 KaiNoMood 的玩家将连接到 myawesomemcserver.net:25667
- /redirect a54a7884-9ea4-4d54-ac35-1623d70ffbe1 myawesomemcserver.net:25667:具有指定 UUID 的玩家将连接到 myawesomemcserver.net:25667
- /redirect * myawesomemcserver.net:25667:服务器上的所有玩家将连接到 myawesomemcserver.net:25667
- /redirect @a[m=creative] myawesomemcserver.net:25667:所有创造模式的玩家将连接到 myawesomemcserver.net:25667
- /redirect r=10 myawesomemcserver.net:25667:距离命令发送者 10 格内的所有玩家将连接到 myawesomemcserver.net:25667。此功能仅适用于基于 Bukkit 和 Sponge 的服务器。
- /redirect s=lobby myawesomemcserver.net:25667:"lobby"服务器中的所有玩家将连接到 myawesomemcserver.net:25667。此功能仅适用于 Bungeecord 和 Velocity 代理服务器。
- /ifplayercanredirect * say %PlayerName 在线且正在使用服务器重定向!太棒了!:将对服务器上每个拥有服务器重定向模组的玩家执行指定命令。
- /ifplayercannotredirect @a[distance=..5] tell %PlayerName 您似乎未安装服务器重定向模组!请务必安装它!:将对命令源周围 5 格内所有未安装服务器重定向模组的玩家执行指定命令。
将 /redirect 替换为 /fallback 可为目标玩家设置备用地址。有关 fallback 命令的更多信息,请阅读下文。
常见问题解答
此模组如何重定向玩家
- 通过运行 /redirect 命令,服务器会向指定玩家发送包含指定服务器地址的"转移"数据包。
- 所有收到该数据包且安装了 ServerRedirect 模组的玩家将从服务器断开连接,并自动直接连接到指定的服务器地址。
任何玩家可通过"直接连接"按钮访问的服务器地址均可使用。
"转移"数据包不会影响未安装此模组的玩家:他们将保持连接到当前服务器。
此行为类似于"Minecraft:基岩版"中存在的转移数据包功能,该功能由 Mojang 默认包含在该客户端中。遗憾的是,"Minecraft:Java 版"完全缺少此功能。
redirect 和 fallback 命令均不应由玩家执行。它们旨在由控制台、命令方块和其他插件执行。推荐使用命令别名和"服务器选择器"图形界面(参见 BossShop 或 VirtualChest)。
fallback 命令的用途
fallback 命令告诉客户端,当他们被强制断开与服务器的连接时(例如服务器崩溃),应连接到哪个服务器地址。
服务器管理员希望通过服务器为每位加入的玩家自动运行 fallback 命令来使用此功能。如果服务器因任何原因关闭,玩家将自动直接连接到 fallback 命令中指定的备用服务器地址。
fallback 功能的另一用途是:当您想将玩家重定向到某服务器,但他们可能因某些原因被拒绝(例如服务器离线)时。首先,将玩家的备用地址设置为一个您确定他们能够访问的服务器地址,然后使用 redirect 命令将玩家重定向到他们可能被拒绝的服务器地址。如果玩家无法加入被重定向的服务器,他们将自动加入备用服务器。
使用此模组而非 Bungeecord、Waterfall 或 Velocity 等代理的原因
Forge 模组并不总是预期玩家从一个服务器移动到另一个服务器,当代理将玩家转移到不同服务器时,可能导致故障或崩溃。Forge 模组通常预期在连接到另一个服务器之前先从服务器断开连接。此外,Forge 1.13+ 不支持代理服务器切换。此模组通过正确地将玩家从服务器断开连接,然后连接到另一个服务器来解决此问题。这样,模组可以正确处理玩家从一个服务器切换到另一个服务器的情况。
如果服务器管理员希望使用代理所能提供的所有其他功能(目前在 Forge 1.13+ 服务器上除外),也可以结合使用代理和服务器重定向。尽管如此,仍建议考虑使用跨服务器插件和模组来替代代理。
拥有此模组的玩家可以加入没有此模组的服务器
此模组存在或缺失的任何组合都允许玩家连接服务器。拥有此模组的玩家也可以连接原版服务器,而拥有原版 Minecraft 的玩家也可以连接安装了此模组的服务器。
此模组可添加到模组包中
欢迎将此模组添加到公共和私人模组包中。无需请求许可。如果您将服务器重定向添加到您的公共模组包中,欢迎在下方评论中告知大家!虽然此模组不应与其他模组产生任何冲突,但如有冲突欢迎 在此报告。
许可证和项目改进
本项目采用 MIT 许可证。欢迎 fork 本项目和/或在 Issues 页面 提出新功能建议!如果您找不到适用于您 Minecraft 版本的服务器重定向正确版本,也欢迎在那里提问!
如果您想请我吃披萨,点击这里!我非常感激!:)
选择礼物
使用社区积分,为喜欢的作品送上一份支持
打赏记录
感谢每一位送出礼物的社区成员


