Skip to content

排除问题

本章节包含了一系列经常会遇到的问题与相应的解决方法。

常见问题

数据库包含重复的 UUID

该问题常出现在离线服务器上。我们不为此类服务器提供支持,我们唯一能给予你的建议是:

  • 确保每个子服的 paper.yml 下的 bungee_online_mode 设置项正确;
  • 确保你的登录插件对每个子服的玩家都有独立有效的 ID。

不能为高于服务器版本的 Minecraft 客户端设置数据

在你尝试将新版本的 Minecraft 用户数据迁移到旧版本,或是你的服务器使用了与客户端不匹配的版本时,这种情况经常出现。

玩家数据同步出错

这可能是你的 Spigot 服务器和 Redis 服务器时间不同所导致的。HuskSync 有自带的方法来纠正这一问题。 尝试连续增加配置文件中 network_latency_milliseconds 项的值来解决这一问题。

死亡不掉落与数据同步的问题

使用了死亡不掉落(玩家死亡后不会掉落背包物品)的服务器,可能会出现此类数据同步的问题。见死亡不掉落章节来确认该问题出现的原因,并找到相应的解决方法。

通过 Snappy(轻量的 Linux 发行版)压缩数据时出现问题

一些 Linux 的轻量化的发行版,例如 Alpine Linux(在 Pterodactyl 上被使用)可能缺少 Snappy 数据压缩所需要的前置。这可以通过将配置文本中的 compress_data 项修改为 false 来解决。注意,在修改该设置之后你需要重启你的数据库。或者,为你的发行版找到压缩数据的前置!

Pterodactyl 上的 Redis 连接出现问题

Pterodactyl 内置的防火墙可阻止 Redis 服务器在各子服之间的通信。请为每个服务器添加信任,使其能在子服之间通信。使用 egg 安装 Redis 可能比后端的内部服务更加方便。

Pterodactyl 上的 MySQL 连接出现问题

若连接至面板的 MySQL 服务器数量大于一个,你可能需要在配置字段中加入 useSSL=true 的字样。

服务器重启后玩家数据同步出错

有时候你使用的重启方式可能会引起这个问题。请检查你的服务器是否以如下方式重启:

  • /restart(这个奇葩的 Spigot 命令用的是相当古旧的 bash 脚本)
  • 任何重启插件,如 UltimateAutoRestart(这些插件基本就是调用了 API 来重启,而它所使用的重启方法与上一条无异) 大多数情况下这些重启方法都与 HuskSync 兼容,因为这些方法重启服务器的逻辑相当奇怪且难以预测,使得 HuskSync 很难在此之前执行自己的关闭逻辑。若要安全重启你的服务器,请使用:
  • Pterodactyl 执行的定时任务。这会执行关机命令(并在虚拟容器完全关闭时再次重启)。
  • 发送停止命令 / 关机命令的 cronjob 定时任务,监听服务完全终止后才会发送启动命令
  • 若要手动重启,只需执行命令 /stop 并使用命令行启动服务器,这个方式非常安全。

不建议让插件帮你重启[1]。插件只能在它被启用时控制服务器,并且必须依赖脚本才可重启服务器,而脚本重启是不安全的。


  1. 译者注:诸如使用 CommandTimer 执行 /stop 命令等的重启不算在内,因为严格意义上讲它符合作者所述建议行为的第三条。 ↩︎