1
mirror of https://github.com/carm-outsource/TimeReward.git synced 2026-06-04 15:28:16 +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
+1 -1
View File
@@ -107,7 +107,7 @@
若您觉得本插件做的不错,您可以捐赠支持我,感谢您成为开源项目的支持者! 若您觉得本插件做的不错,您可以捐赠支持我,感谢您成为开源项目的支持者!
万分感谢 [egg_拿]() 赞助本项目的开发与维护! 万分感谢 [egg_拿]() 与 [ayoiz](https://github.com/ayoi2) 赞助本项目的开发与维护!
Many thanks to Jetbrains for kindly providing a license for me to work on this and other open-source projects. Many thanks to Jetbrains for kindly providing a license for me to work on this and other open-source projects.
[![](https://resources.jetbrains.com/storage/products/company/brand/logos/jb_beam.svg)](https://www.jetbrains.com/?from=https://github.com/CarmJos/UserPrefix) [![](https://resources.jetbrains.com/storage/products/company/brand/logos/jb_beam.svg)](https://www.jetbrains.com/?from=https://github.com/CarmJos/UserPrefix)
+1 -1
View File
@@ -18,7 +18,7 @@
<groupId>cc.carm.plugin</groupId> <groupId>cc.carm.plugin</groupId>
<artifactId>timereward</artifactId> <artifactId>timereward</artifactId>
<version>3.1.2</version> <version>3.1.3</version>
<name>TimeReward</name> <name>TimeReward</name>
<description>在线时长自动领奖插件,通过指令发放奖励,基于EasyPlugin实现。</description> <description>在线时长自动领奖插件,通过指令发放奖励,基于EasyPlugin实现。</description>
@@ -2,26 +2,32 @@ package cc.carm.plugin.timereward.listener;
import cc.carm.plugin.timereward.Main; import cc.carm.plugin.timereward.Main;
import cc.carm.plugin.timereward.TimeRewardAPI; import cc.carm.plugin.timereward.TimeRewardAPI;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener; import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerQuitEvent; import org.bukkit.event.player.PlayerQuitEvent;
import org.jetbrains.annotations.Nullable;
public class UserListener implements Listener { public class UserListener implements Listener {
@EventHandler @EventHandler
public void onJoin(PlayerJoinEvent event) { public void onJoin(PlayerJoinEvent event) {
TimeRewardAPI.getUserManager().load(event.getPlayer().getUniqueId(), true).thenAccept(data -> { @Nullable Player player = event.getPlayer();
Player player = Bukkit.getPlayer(data.getUserUUID()); // Delayed load to avoid async error
if (player == null || !player.isOnline()) { Main.getInstance().getScheduler().runLater(20L, () -> {
TimeRewardAPI.getUserManager().unload(data.getUserUUID()); if (player == null || !player.isOnline()) return;
} // 不在线自动卸载 TimeRewardAPI.getUserManager()
}).exceptionally(ex -> { .load(event.getPlayer().getUniqueId(), true)
Main.severe("加载用户在线时长数据失败: " + event.getPlayer().getName()); .thenAccept(data -> {
ex.printStackTrace(); if (!player.isOnline()) { // 不在线自动卸载
return null; TimeRewardAPI.getUserManager().unload(data.getUserUUID(), false);
}
}).exceptionally(ex -> {
Main.severe("加载用户在线时长数据失败: " + event.getPlayer().getName());
ex.printStackTrace();
return null;
});
}); });
} }