跳到正文

Server Redirect

作者:KaiKikuchi

这个模组为服务器提供了一种轻量级的方式,无需代理服务器即可将玩家转移到其他服务器地址。

收藏

介绍

介绍由机器翻译自 Modrinth 原页面,仅供参考。

服务器重定向

此模组提供了一种轻量的方式,让服务器无需使用代理服务器即可将玩家转移到另一个服务器地址。

Server Redirect 支持 Forge、Fabric、Bukkit/Spigot、SpongeVanilla/SpongeForge、Bungeecord/Waterfall 和 Velocity。

使用 Server Redirect,服务器管理员可以避免代理服务器(Bungeecord、Waterfall 和 Velocity)导致的模组兼容性问题。
特别是,此模组可以与 Waterfall 和 Forge 1.13+ 服务器及客户端配合使用,以便在服务器之间转移玩家(目前,Forge 1.13+ 服务器需要处于“在线”状态,因为它们尚未加入 IP 转发功能……)。

此模组为可选模组,因此可以将它添加到整合包中,玩家即使没有安装此模组仍然可以加入服务器。同样,客户端没有安装此模组,也可以加入安装了此模组的服务器。

命令

  • /redirect <Target> <Server Address>:将指定的目标玩家转移到指定地址
  • /fallback <Target> <Server Address>:为指定的目标玩家设置备用服务器地址
  • /ifplayercanredirect <Target> <Command…>:为每位安装了 Server Redirect 的目标玩家运行指定命令
  • /ifplayercannotredirect <Target> <Command…>:为每位未安装 Server Redirect 的目标玩家运行指定命令

任何能够运行命令的来源都可以执行这些命令,例如命令方块、玩家或控制台。
将 /redirect 替换为 /fallback,即可让指定的目标玩家在被强制断开服务器连接时,连接到指定的服务器地址。

<Target> 参数可以是以下任意一种:
  • 玩家名称/UUID:服务器上的指定玩家
  • 目标选择器:一种目标选择器。Bungeecord 和 Velocity 不支持目标选择器。
  • r=N:命令发送者周围 N 格范围内的所有玩家;如果由控制台运行,则以主世界出生点为中心。仅限插件版本。
  • s=<ServerName>:指定 ServerName 中的所有玩家。仅限 Bungeecord 和 Velocity。
  • *:服务器上的所有玩家。
<Command…> 参数可以包含以下占位符:
  • %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:距离命令发送者 6 格以内的所有玩家将连接到 myawesomemcserver.net:25667。仅适用于基于 Bukkit 和 Sponge 的服务端。
  • /redirect s=lobby myawesomemcserver.net:25667:位于“lobby”服务器的所有玩家将连接到 myawesomemcserver.net:25667。仅适用于 Bungeecord 和 Velocity 代理服务器。
  • /ifplayercanredirect * say %PlayerName is online and using Server Redirect! Yay!:将为服务器上每个安装了 Server Redirect 的玩家执行指定命令。
  • /ifplayercannotredirect @a[distance=..5] tell %PlayerName It does not seem you have Server Redirect installed! Make sure to install it!:将为命令源 5 格以内所有未安装 Server Redirect 的玩家执行指定命令。

将 /redirect 替换为 /fallback 即可为目标玩家设置回退地址。有关 fallback 命令的更多信息,请阅读下文。

常见问题

此模组如何重定向玩家

  • 通过运行 /redirect 命令,服务器会向指定玩家发送一个包含指定服务器地址的“transfer”数据包。
  • 所有收到该数据包且安装了 ServerRedirect 模组的玩家将与服务器断开连接,并自动直接连接到指定的服务器地址。

任何玩家能通过“直接连接”按钮访问的服务器地址均可使用。
“transfer”数据包不会影响未安装该模组的玩家:他们只会保持与当前服务器的连接。
此行为类似于“Minecraft:基岩版”中的 transfer 数据包,该功能由 Mojang 默认包含在该客户端中。遗憾的是,“Minecraft:Java 版”完全缺少此功能。
redirect 和 fallback 命令均不应由玩家运行。它们旨在由控制台、命令方块和其他插件运行。建议使用命令别名和“服务器选择器”GUI(参见 BossShop 或 VirtualChest)。

fallback 命令的用途

fallback 命令会告诉客户端,在它们被强制断开与服务器的连接时(例如服务器崩溃),应该连接到哪个服务器地址。

服务器管理员希望由服务器为每个加入服务器的玩家自动运行 fallback 命令。如果服务器因任何原因关闭,玩家将自动直接连接到 fallback 命令中指定的回退服务器地址。

fallback 功能的另一个用途是:当你想要将玩家重定向到某个服务器,但他们可能因某些原因被拒绝时(例如服务器离线)。首先,将玩家的回退地址设置为一个你确信他们能够访问的服务器地址,然后使用 redirect 命令将玩家重定向到他们可能被拒绝的服务器地址。如果玩家无法加入被重定向到的服务器,他们将自动加入回退服务器。

使用此模组而非 Bungeecord、Waterfall 或 Velocity 等代理的原因

Forge 模组并不总是考虑到玩家会从一个服务器转移到另一个服务器,因此当代理将玩家转移到其他服务器时,可能会导致故障或崩溃。Forge 模组通常要求先与服务器断开连接,再连接到另一个服务器。此外,Forge 1.13+ 不支持通过代理切换服务器。本模组通过先正确断开玩家与服务器的连接,再将其连接到另一台服务器来解决此问题。这样,模组就能正确处理玩家在不同服务器之间切换的情况。

服务器管理员也可以组合使用代理和 Server Redirect,以使用代理提供的其他所有功能(目前 Forge 1.13+ 服务器除外)。不过,建议考虑用跨服务器插件和模组替代代理。

安装此模组的玩家可以加入未安装此模组的服务器

无论玩家和服务器是否安装此模组,玩家都可以连接到服务器。安装此模组的玩家也能连接到原版服务器,而使用原版 Minecraft 的玩家也能连接到安装了此模组的服务器。

此模组可以加入整合包

欢迎将此模组加入公开或私人整合包,无需征求许可。如果你将 Server Redirect 加入公开整合包,也欢迎在下方评论中告诉大家!虽然此模组应该不会与其他模组冲突,但如果遇到冲突,欢迎在此报告。

许可证与项目改进

本项目采用 MIT 许可证。欢迎分叉本项目,和/或在Issues 页面提出新功能建议!如果找不到适用于你的 Minecraft 版本的 Server Redirect,也欢迎在那里提出。

如果你想请我吃披萨,点击此处!我非常感谢!:)

常见问题

Server Redirect 支持哪些 Minecraft 版本?

Server Redirect 支持 Minecraft Java 版 1.7.10–1.21.4,共 30 个版本,可用的加载器:Bukkit / Fabric / Forge / Spigot / Sponge / Velocity。下载时注意选择和你游戏版本一致的文件。

Server Redirect 怎么安装?

先用 PCL2 或 HMCL 启动器安装对应版本的 Bukkit / Fabric / Forge / Spigot / Sponge / Velocity,再把下载的 .jar 文件放进游戏目录的 mods 文件夹,重新启动游戏即可。开启了版本隔离的,mods 文件夹在 versions/版本名 下面。运行环境:客户端 / 服务端。

评论

登录后评论和评分