Skip to content

Commit ca0e4bb

Browse files
committed
fix(sync): 添加部分延迟以保障数据完成同步。
1 parent f6fcda1 commit ca0e4bb

3 files changed

Lines changed: 18 additions & 12 deletions

File tree

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@
107107

108108
若您觉得本插件做的不错,您可以捐赠支持我,感谢您成为开源项目的支持者!
109109

110-
万分感谢 [egg_拿]() 赞助本项目的开发与维护!
110+
万分感谢 [egg_拿]() [ayoiz](https://github.com/ayoi2) 赞助本项目的开发与维护!
111111

112112
Many thanks to Jetbrains for kindly providing a license for me to work on this and other open-source projects.
113113
[![](https://resources.jetbrains.com/storage/products/company/brand/logos/jb_beam.svg)](https://www.jetbrains.com/?from=https://github.com/CarmJos/UserPrefix)

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818

1919
<groupId>cc.carm.plugin</groupId>
2020
<artifactId>timereward</artifactId>
21-
<version>3.1.2</version>
21+
<version>3.1.3</version>
2222

2323
<name>TimeReward</name>
2424
<description>在线时长自动领奖插件,通过指令发放奖励,基于EasyPlugin实现。</description>

src/main/java/cc/carm/plugin/timereward/listener/UserListener.java

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,26 +2,32 @@
22

33
import cc.carm.plugin.timereward.Main;
44
import cc.carm.plugin.timereward.TimeRewardAPI;
5-
import org.bukkit.Bukkit;
65
import org.bukkit.entity.Player;
76
import org.bukkit.event.EventHandler;
87
import org.bukkit.event.Listener;
98
import org.bukkit.event.player.PlayerJoinEvent;
109
import org.bukkit.event.player.PlayerQuitEvent;
10+
import org.jetbrains.annotations.Nullable;
1111

1212
public class UserListener implements Listener {
1313

1414
@EventHandler
1515
public void onJoin(PlayerJoinEvent event) {
16-
TimeRewardAPI.getUserManager().load(event.getPlayer().getUniqueId(), true).thenAccept(data -> {
17-
Player player = Bukkit.getPlayer(data.getUserUUID());
18-
if (player == null || !player.isOnline()) {
19-
TimeRewardAPI.getUserManager().unload(data.getUserUUID());
20-
} // 不在线自动卸载
21-
}).exceptionally(ex -> {
22-
Main.severe("加载用户在线时长数据失败: " + event.getPlayer().getName());
23-
ex.printStackTrace();
24-
return null;
16+
@Nullable Player player = event.getPlayer();
17+
// Delayed load to avoid async error
18+
Main.getInstance().getScheduler().runLater(20L, () -> {
19+
if (player == null || !player.isOnline()) return;
20+
TimeRewardAPI.getUserManager()
21+
.load(event.getPlayer().getUniqueId(), true)
22+
.thenAccept(data -> {
23+
if (!player.isOnline()) { // 不在线自动卸载
24+
TimeRewardAPI.getUserManager().unload(data.getUserUUID(), false);
25+
}
26+
}).exceptionally(ex -> {
27+
Main.severe("加载用户在线时长数据失败: " + event.getPlayer().getName());
28+
ex.printStackTrace();
29+
return null;
30+
});
2531
});
2632
}
2733

0 commit comments

Comments
 (0)