diff options
| author | Krakenied <Krakenied1@gmail.com> | 2024-07-06 23:07:03 +0200 |
|---|---|---|
| committer | Krakenied <46192742+Krakenied@users.noreply.github.com> | 2024-08-28 11:37:11 +0200 |
| commit | 033ae8feea3774d5bd89493d697c02a9620bd060 (patch) | |
| tree | e28a98d294ce70f73821e0a5f3657c7e49b9fc95 /bukkit/src/main/java/com | |
| parent | 04f320ec4fdfcd8c595a1a251e9723be58fdf019 (diff) | |
Rewrite trackNextQuest so autostart Quests are tracked properly
Closes https://github.com/LMBishop/Quests/issues/570
Diffstat (limited to 'bukkit/src/main/java/com')
| -rw-r--r-- | bukkit/src/main/java/com/leonardobishop/quests/bukkit/questcontroller/NormalQuestController.java | 37 |
1 files changed, 26 insertions, 11 deletions
diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/questcontroller/NormalQuestController.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/questcontroller/NormalQuestController.java index 6f6a63c8..60aca725 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/questcontroller/NormalQuestController.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/questcontroller/NormalQuestController.java @@ -418,19 +418,34 @@ public class NormalQuestController implements QuestController { return startedQuests; } - private void trackNextQuest(QPlayer qPlayer, Quest previousQuest) { - if (config.getBoolean("options.quest-autotrack") - && (previousQuest == null || !(previousQuest.isRepeatable() && !previousQuest.isCooldownEnabled()))) { - Quest nextQuest; - if (qPlayer.getQuestProgressFile().getStartedQuests().size() > 0) { - nextQuest = qPlayer.getQuestProgressFile().getStartedQuests().get(0); - qPlayer.trackQuest(nextQuest); + private void trackNextQuest(final @NotNull QPlayer qPlayer, final @Nullable Quest previousQuest) { + final boolean autotrack = this.config.getBoolean("options.quest-autotrack"); + + if (!autotrack) { + qPlayer.trackQuest(null); + return; + } + + if (previousQuest == null || !previousQuest.isRepeatable() || previousQuest.isCooldownEnabled()) { + final List<Quest> startedQuests = qPlayer.getQuestProgressFile().getStartedQuests(); + final boolean autostart = this.config.getBoolean("options.quest-autostart"); + + final Quest nextQuest; + if (!startedQuests.isEmpty()) { + nextQuest = startedQuests.getFirst(); + } else if (autostart) { + final List<Quest> effectiveStartedQuests = qPlayer.getEffectiveStartedQuests(1); + + if (!effectiveStartedQuests.isEmpty()) { + nextQuest = effectiveStartedQuests.getFirst(); + } else { + nextQuest = null; + } } else { - qPlayer.trackQuest(null); + nextQuest = null; } - } else if (!config.getBoolean("options.quest-autotrack")) { - qPlayer.trackQuest(null); + + qPlayer.trackQuest(nextQuest); } } - } |
