1
mirror of https://github.com/carm-outsource/TimeReward.git synced 2026-06-05 01:08:10 +08:00

fix(sync): 添加部分延迟以保障数据完成同步。

This commit is contained in:
2025-04-20 02:20:21 +08:00
parent f6fcda1f94
commit ca0e4bbd6b
3 changed files with 18 additions and 12 deletions
@@ -2,26 +2,32 @@ package cc.carm.plugin.timereward.listener;
import cc.carm.plugin.timereward.Main;
import cc.carm.plugin.timereward.TimeRewardAPI;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerQuitEvent;
import org.jetbrains.annotations.Nullable;
public class UserListener implements Listener {
@EventHandler
public void onJoin(PlayerJoinEvent event) {
TimeRewardAPI.getUserManager().load(event.getPlayer().getUniqueId(), true).thenAccept(data -> {
Player player = Bukkit.getPlayer(data.getUserUUID());
if (player == null || !player.isOnline()) {
TimeRewardAPI.getUserManager().unload(data.getUserUUID());
} // 不在线自动卸载
}).exceptionally(ex -> {
Main.severe("加载用户在线时长数据失败: " + event.getPlayer().getName());
ex.printStackTrace();
return null;
@Nullable Player player = event.getPlayer();
// Delayed load to avoid async error
Main.getInstance().getScheduler().runLater(20L, () -> {
if (player == null || !player.isOnline()) return;
TimeRewardAPI.getUserManager()
.load(event.getPlayer().getUniqueId(), true)
.thenAccept(data -> {
if (!player.isOnline()) { // 不在线自动卸载
TimeRewardAPI.getUserManager().unload(data.getUserUUID(), false);
}
}).exceptionally(ex -> {
Main.severe("加载用户在线时长数据失败: " + event.getPlayer().getName());
ex.printStackTrace();
return null;
});
});
}