|
2 | 2 |
|
3 | 3 | import cc.carm.plugin.timereward.Main; |
4 | 4 | import cc.carm.plugin.timereward.TimeRewardAPI; |
5 | | -import org.bukkit.Bukkit; |
6 | 5 | import org.bukkit.entity.Player; |
7 | 6 | import org.bukkit.event.EventHandler; |
8 | 7 | import org.bukkit.event.Listener; |
9 | 8 | import org.bukkit.event.player.PlayerJoinEvent; |
10 | 9 | import org.bukkit.event.player.PlayerQuitEvent; |
| 10 | +import org.jetbrains.annotations.Nullable; |
11 | 11 |
|
12 | 12 | public class UserListener implements Listener { |
13 | 13 |
|
14 | 14 | @EventHandler |
15 | 15 | 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 | + }); |
25 | 31 | }); |
26 | 32 | } |
27 | 33 |
|
|
0 commit comments