aboutsummaryrefslogtreecommitdiffstats
path: root/bukkit
diff options
context:
space:
mode:
authorLMBishop <13875753+LMBishop@users.noreply.github.com>2022-06-16 16:20:57 +0100
committerLMBishop <13875753+LMBishop@users.noreply.github.com>2022-06-16 16:20:57 +0100
commit252239ebe580e6789210a4fad3761c3e410f7979 (patch)
tree305bfc885e800601b3ba8c7411c6383a4657ba0b /bukkit
parent86f2d427a1f1a445d7af828e3ee881efa8a1de25 (diff)
Use computeIfAbsent exclsively on async thread (closes #404)
Diffstat (limited to 'bukkit')
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/listener/PlayerJoinListener.java26
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/CommandUtils.java30
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) {