diff options
| author | Krakenied <krakenied1@gmail.com> | 2025-06-05 02:51:12 +0200 |
|---|---|---|
| committer | Krakenied <46192742+Krakenied@users.noreply.github.com> | 2025-07-29 00:06:46 +0200 |
| commit | 50c639f9abe01f751271d9c58c0bd185d32cd781 (patch) | |
| tree | ca905730f6dc9b6d8cec607d2ee0dcd5cb041ce8 /common/src/main | |
| parent | 3efb11c01162744150b788f790a629305108f709 (diff) | |
PlaceholderAPI hook cleanup
Diffstat (limited to 'common/src/main')
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; |
