我有几个Spigot在bungeecord服务器上运行的实例。我有一个插件可以在每台服务器上进行自定义配置文件管理。这个配置文件管理插件读取和写入Mongo数据库。所有的代码工作得很好,我不在这里代码。Mongo数据库配置文件在bungeecord播放器传输上同步
但是,我的问题是这样的。当玩家从一台服务器转移到另一台服务器时,在配置文件再次加载到目标服务器上导致加载旧数据之前,数据不会同步(写入数据库)。由于这些人的统计和经济没有被正确地反映出来。现在,如果他们登录,切换到迷你游戏服务器,玩游戏,然后赚取硬币,然后他们退出服务器(注销),然后统计数据将在下次登录时正确反映。
配置文件管理器加载配置文件内容PlayerJoinEvent和数据写入(保存)在PlayerQuitEvent和PlayerKickEvent。
解决此问题的最佳方法是什么?有人可以请指点我正确的方向吗?
EDIT:electroniccat在官方Spigot IRC上表示,播放器在与之前的服务器断开连接之前开始连接到目标服务器。既然这确实有道理,那么解决这个问题的最好方法是什么?
向我们显示您的代码。 –
根据您的编辑,我认为您可以在玩家登录时更新统计数据,然后在进行所需更新时将其锁定到位(不应超过几ms) – Kerooker