服务器重定向

服务器重定向

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

服务器重定向

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

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

使用 Server Redirect,服务器管理员可以避免由代理服务器(Bungeecord、Waterfall 和 Velocity)引起的模组兼容性问题。 特别是,此模组可以与 Waterfall 和 Forge 1.13+ 服务器及客户端结合使用,以提供在服务器之间转移玩家的方式(目前,1.13+ 的 Forge 服务器需要保持 "在线" 模式,因为它们尚未包含 IP 转发功能...)。

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

命令

  • /redirect <目标> <服务器地址>:将指定的目标玩家重定向到指定的地址
  • /fallback <目标> <服务器地址>:为指定的目标玩家设置备用服务器地址
  • /ifplayercanredirect <目标> <命令...>:为每个安装了 Server Redirect 的目标玩家执行指定的命令
  • /ifplayercannotredirect <目标> <命令...>:为每个未安装 Server Redirect 的目标玩家执行指定的命令

命令源可以是任何能执行命令的事物,例如命令方块、玩家或控制台。 将 /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:距离命令发送者 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 命令,服务器将向指定的玩家发送一个包含指定服务器地址的 "转移" 数据包。
  • 所有收到该数据包且安装了 ServerRedirect 模组的玩家都将断开与服务器的连接,并自动直接连接到指定的服务器地址。

任何玩家可以使用 "直接连接" 按钮访问的服务器地址都可以使用。 "转移" 数据包不会影响未安装该模组的玩家:他们只会简单地停留在当前服务器上。 这类似于 "Minecraft: Bedrock Edition" 中的转移数据包,该功能是 Mojang 在该客户端中默认包含的。遗憾的是,"Minecraft: Java Edition" 完全没有此功能。 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 许可证。欢迎分叉此项目和/或在问题页面上建议新功能!如果你找不到适合你 Minecraft 版本的 Server Redirect,欢迎在那里提问!

如果你想请我吃披萨,点击这里!我非常感激!:)