From ca0e4bbd6b4281da83716f668b637fcea2ba0cdd Mon Sep 17 00:00:00 2001 From: carm Date: Sun, 20 Apr 2025 02:20:21 +0800 Subject: [PATCH] =?UTF-8?q?fix(sync):=20=E6=B7=BB=E5=8A=A0=E9=83=A8?= =?UTF-8?q?=E5=88=86=E5=BB=B6=E8=BF=9F=E4=BB=A5=E4=BF=9D=E9=9A=9C=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E5=AE=8C=E6=88=90=E5=90=8C=E6=AD=A5=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- pom.xml | 2 +- .../timereward/listener/UserListener.java | 26 ++++++++++++------- 3 files changed, 18 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index ea3e248..c0bf760 100644 --- a/README.md +++ b/README.md @@ -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. [![](https://resources.jetbrains.com/storage/products/company/brand/logos/jb_beam.svg)](https://www.jetbrains.com/?from=https://github.com/CarmJos/UserPrefix) diff --git a/pom.xml b/pom.xml index 013dee4..416dc98 100644 --- a/pom.xml +++ b/pom.xml @@ -18,7 +18,7 @@ cc.carm.plugin timereward - 3.1.2 + 3.1.3 TimeReward 在线时长自动领奖插件,通过指令发放奖励,基于EasyPlugin实现。 diff --git a/src/main/java/cc/carm/plugin/timereward/listener/UserListener.java b/src/main/java/cc/carm/plugin/timereward/listener/UserListener.java index 727da0c..0b0709a 100644 --- a/src/main/java/cc/carm/plugin/timereward/listener/UserListener.java +++ b/src/main/java/cc/carm/plugin/timereward/listener/UserListener.java @@ -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; + }); }); }