aboutsummaryrefslogtreecommitdiffstats
path: root/common/src
diff options
context:
space:
mode:
Diffstat (limited to 'common/src')
-rw-r--r--common/src/main/java/com/leonardobishop/quests/common/player/questprogressfile/QuestProgressFile.java15
-rw-r--r--common/src/main/java/com/leonardobishop/quests/common/player/questprogressfile/filters/QuestProgressFilter.java4
2 files changed, 19 insertions, 0 deletions
diff --git a/common/src/main/java/com/leonardobishop/quests/common/player/questprogressfile/QuestProgressFile.java b/common/src/main/java/com/leonardobishop/quests/common/player/questprogressfile/QuestProgressFile.java
index 4464a8af..e4b6add0 100644
--- a/common/src/main/java/com/leonardobishop/quests/common/player/questprogressfile/QuestProgressFile.java
+++ b/common/src/main/java/com/leonardobishop/quests/common/player/questprogressfile/QuestProgressFile.java
@@ -18,6 +18,7 @@ import java.util.Map;
import java.util.Set;
import java.util.UUID;
import java.util.concurrent.TimeUnit;
+import java.util.function.Consumer;
/**
* Represents underlying quest progress for a player.
@@ -106,6 +107,20 @@ public final class QuestProgressFile {
}
/**
+ * Passes all {@link Quest} a player has encountered (not to be confused with a collection of quest progress) to specified consumer.
+ */
+ @Contract(pure = true)
+ public void getAllQuestsFromProgressConsumer(final QuestProgressFilter filter, final Consumer<Quest> consumer) {
+ for (final QuestProgress questProgress : this.questProgressMap.values()) {
+ final Quest quest = this.getQuestFromProgress(filter, questProgress);
+
+ if (quest != null) {
+ consumer.accept(quest);
+ }
+ }
+ }
+
+ /**
* Returns count of all {@link Quest} a player has encountered. It is clearly equivalent to collection size of
* {@link QuestProgressFile#getAllQuestsFromProgress(QuestProgressFilter)}, however it does not utilise a list
* for counting quests so its performance is undeniably better.
diff --git a/common/src/main/java/com/leonardobishop/quests/common/player/questprogressfile/filters/QuestProgressFilter.java b/common/src/main/java/com/leonardobishop/quests/common/player/questprogressfile/filters/QuestProgressFilter.java
index 41af049c..d31625b8 100644
--- a/common/src/main/java/com/leonardobishop/quests/common/player/questprogressfile/filters/QuestProgressFilter.java
+++ b/common/src/main/java/com/leonardobishop/quests/common/player/questprogressfile/filters/QuestProgressFilter.java
@@ -17,6 +17,10 @@ public interface QuestProgressFilter {
QuestProgressFilter DOES_COUNT_TOWARDS_COMPLETED = new DoesCountTowardsCompletedQuestProgressFilter();
QuestProgressFilter DOES_COUNT_TOWARDS_LIMIT = new DoesCountTowardsLimitQuestProgressFilter();
+ // Counting
+ QuestProgressFilter COMPLETED_COUNT = new ConjunctionQuestProgressFilter(QuestProgressFilter.COMPLETED, QuestProgressFilter.DOES_COUNT_TOWARDS_COMPLETED);
+ QuestProgressFilter COMPLETED_BEFORE_COUNT = new ConjunctionQuestProgressFilter(QuestProgressFilter.COMPLETED_BEFORE, QuestProgressFilter.DOES_COUNT_TOWARDS_COMPLETED);
+
@Contract(pure = true)
default boolean matchesQuest(final @NotNull Quest quest) {
return true;