服务器传送器

服务器传送器

用于创建跨服务器传送玩家的简单插件

实用

跨服务器传送插件

一款 Hytale 插件,利用游戏原生的传送器和传送门系统,实现无缝的跨服务器传送。

功能特性

跨服务器传送

  • 使用游戏内传送器,在多个 Hytale 服务器之间传输玩家
  • 兼容 Hytale 原生传送器方块和传送门系统
  • 玩家在目标服务器上自动生成于指定位置

简洁命令界面

  • 简短易记的命令
  • 支持列出、创建和移除传送点与生成位置

持久化存储

  • 跨服务器传送数据存储在 crossserver_warps.json 文件中
  • 服务器重启后数据不丢失
  • 与 Hytale 的 warps.json 分离存储,避免冲突

原生集成

  • 使用 Hytale 内置的传送器方块
  • 通过普通传送器界面配置目标位置
  • 无需自定义方块或复杂设置

命令

跨服务器传送点

注册一个跨服务器传送点

/csw <传送点名称> <目标服务器> <传送器ID>

移除一个跨服务器传送点

/delcsw <传送点名称>

列出所有跨服务器传送点

/listcsw

传送器生成位置

设置当前坐标为生成位置

/settp <传送器ID>

移除一个生成位置

/deltp <传送器ID>

列出所有生成位置

/listtp

工作原理

步骤 1:注册跨服务器传送点

源服务器上,创建一个将重定向玩家的传送点:

/csw hubWarp localhost:25565 spawn1

这将创建一个名为 hubWarp 的传送点,将玩家传输到 localhost:25565,并在传送器 ID 为 spawn1 的位置生成。

步骤 2:设置生成位置

目标服务器上,站在你希望玩家出现的位置,然后运行:

/settp spawn1

步骤 3:配置传送器

在游戏中放置一个传送器方块,右键点击进行配置,然后从列表中选择 hubWarp 传送点。

步骤 4:使用传送器

当玩家走过配置好的传送器时,他们将:

  1. 被传输到目标服务器
  2. 在注册的传送器位置生成

技术细节

基于位置的传送点匹配

当前实现较为粗糙,因为无法在玩家穿过传送门时获取其目的地的传送点名称(正在解决此问题)

  • 每个跨服务器传送点都会被分配唯一的坐标(例如 10000, 100, 10000)
  • 系统拦截传送事件并匹配目的地坐标
  • 如果在跨服务器注册表中找到匹配项,则触发传输

ECS 系统集成

  • CrossServerTeleportInterceptor - 拦截传送组件添加的 RefChangeSystem
  • 修改传送目的地以防止不必要的移动
  • 调用 PlayerRef.referToServer() 以启动跨服务器传输

数据存储

插件将跨服务器传送数据存储在 universe/crossserver_warps.json 文件中:

{
  "warps": {
    "hubwarp": {
      "targetServer": "localhost:25565",
      "teleporterId": "spawn1"
    }
  }
}
  1. 将 jar 文件复制到你的 Hytale 服务器的 mods/ 文件夹中

  2. 重启服务器

  3. 使用上述命令配置跨服务器传送点

使用场景

服务器网络 连接多个游戏服务器(大厅到小游戏到生存模式)

基于实例的内容 将玩家传输到专用于地下城/突袭的服务器

负载均衡 将玩家分布到多个服务器上

区域性服务器 连接不同地理位置的服务器

安全考量

重要提示: 本插件目前正在开发中,没有内置安全功能。大部分功能正在开发中。

  • 任何服务器都可以将玩家发送到任何其他服务器
  • 服务器之间没有身份验证
  • 推荐数据未加密或验证
  • 命令没有基于权限的控制