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://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;
+ });
});
}