diff options
| -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); } } - } |
