diff options
| author | LMBishop <13875753+LMBishop@users.noreply.github.com> | 2022-06-16 16:20:57 +0100 |
|---|---|---|
| committer | LMBishop <13875753+LMBishop@users.noreply.github.com> | 2022-06-16 16:20:57 +0100 |
| commit | 252239ebe580e6789210a4fad3761c3e410f7979 (patch) | |
| tree | 305bfc885e800601b3ba8c7411c6383a4657ba0b /bukkit/src/main | |
| parent | 86f2d427a1f1a445d7af828e3ee881efa8a1de25 (diff) | |
Use computeIfAbsent exclsively on async thread (closes #404)
Diffstat (limited to 'bukkit/src/main')
| -rw-r--r-- | bukkit/src/main/java/com/leonardobishop/quests/bukkit/listener/PlayerJoinListener.java | 26 | ||||
| -rw-r--r-- | bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/CommandUtils.java | 30 |
2 files changed, 27 insertions, 29 deletions
diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/listener/PlayerJoinListener.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/listener/PlayerJoinListener.java index 2dff4913..bdce5260 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/listener/PlayerJoinListener.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/listener/PlayerJoinListener.java @@ -33,24 +33,24 @@ public class PlayerJoinListener implements Listener { } final Player player = event.getPlayer(); - plugin.getServer().getScheduler().runTaskLaterAsynchronously(plugin, () -> { + plugin.getServer().getScheduler().runTaskLater(plugin, () -> { if (!player.isOnline()) return; - plugin.getPlayerManager().loadPlayer(player.getUniqueId()); - plugin.getServer().getScheduler().runTask(plugin, () -> { - QPlayer qPlayer = plugin.getPlayerManager().getPlayer(player.getUniqueId()); + plugin.getPlayerManager().loadPlayer(player.getUniqueId()).thenAccept(qPlayer -> { if (qPlayer == null) return; - // run a full check to check for any missed quest completions - plugin.getQuestCompleter().queueFullCheck(qPlayer.getQuestProgressFile()); + plugin.getScheduler().doSync(() -> { + // run a full check to check for any missed quest completions + plugin.getQuestCompleter().queueFullCheck(qPlayer.getQuestProgressFile()); - // track first quest - if (plugin.getConfig().getBoolean("options.allow-quest-track") && plugin.getConfig().getBoolean("options.quest-autotrack")) { - for (Quest quest : plugin.getQuestManager().getQuests().values()) { - if (qPlayer.hasStartedQuest(quest)) { - qPlayer.trackQuest(quest); - break; + // track first quest + if (plugin.getConfig().getBoolean("options.allow-quest-track") && plugin.getConfig().getBoolean("options.quest-autotrack")) { + for (Quest quest : plugin.getQuestManager().getQuests().values()) { + if (qPlayer.hasStartedQuest(quest)) { + qPlayer.trackQuest(quest); + break; + } } } - } + }); }); }, plugin.getQuestsConfig().getInt("options.storage.synchronisation.delay-loading", 0)); } diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/CommandUtils.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/CommandUtils.java index ca14e6ac..89c5418c 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/CommandUtils.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/CommandUtils.java @@ -12,6 +12,7 @@ import org.bukkit.OfflinePlayer; import org.bukkit.command.CommandSender; import java.util.*; +import java.util.concurrent.ExecutionException; import java.util.function.Consumer; public class CommandUtils { @@ -104,8 +105,9 @@ public class CommandUtils { QPlayer qPlayer = plugin.getPlayerManager().getPlayer(uuid); if (qPlayer == null) { Messages.COMMAND_QUEST_ADMIN_LOADDATA.send(sender, "{player}", username); - plugin.getPlayerManager().loadPlayer(uuid); - qPlayer = plugin.getPlayerManager().getPlayer(uuid); + try { + qPlayer = plugin.getPlayerManager().loadPlayer(uuid).get(); + } catch (InterruptedException | ExecutionException ignored) {} } if (qPlayer == null) { Messages.COMMAND_QUEST_ADMIN_NODATA.send(sender, "{player}", username); @@ -134,21 +136,17 @@ public class CommandUtils { } } - plugin.getScheduler().doAsync(() -> { - if (plugin.getPlayerManager().getPlayer(uuid) == null) { - Messages.COMMAND_QUEST_ADMIN_LOADDATA.send(sender, "{player}", username); - plugin.getPlayerManager().loadPlayer(uuid); - } - - final QPlayer qPlayer = plugin.getPlayerManager().getPlayer(uuid); - - if (qPlayer == null) { - Messages.COMMAND_QUEST_ADMIN_NODATA.send(sender, "{player}", username); - return; - } + if (plugin.getPlayerManager().getPlayer(uuid) == null) { + Messages.COMMAND_QUEST_ADMIN_LOADDATA.send(sender, "{player}", username); + plugin.getPlayerManager().loadPlayer(uuid).thenAccept((qPlayer -> { + if (qPlayer == null) { + Messages.COMMAND_QUEST_ADMIN_NODATA.send(sender, "{player}", username); + return; + } - plugin.getScheduler().doSync(() -> callback.accept(qPlayer)); - }); + plugin.getScheduler().doSync(() -> callback.accept(qPlayer)); + })); + } } public static void doSafeSave(QPlayer qPlayer, QuestProgressFile questProgressFile, BukkitQuestsPlugin plugin) { |
