aboutsummaryrefslogtreecommitdiffstats
path: root/bukkit
diff options
context:
space:
mode:
Diffstat (limited to 'bukkit')
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/questcontroller/NormalQuestController.java37
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);
}
}
-
}