diff options
Diffstat (limited to 'common/src/main/java/com/leonardobishop')
12 files changed, 101 insertions, 53 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 04597b6e..d658c447 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 @@ -91,17 +91,11 @@ public final class QuestProgressFile { final List<Quest> quests = new ArrayList<>(); for (final QuestProgress questProgress : this.questProgressMap.values()) { - final boolean matches = filter.matches(questProgress); - if (!matches) { - continue; - } + final Quest quest = this.getQuestFromProgress(filter, questProgress); - final Quest quest = this.plugin.getQuestManager().getQuestById(questProgress.getQuestId()); - if (quest == null) { - continue; + if (quest != null) { + quests.add(quest); } - - quests.add(quest); } return quests; @@ -119,22 +113,35 @@ public final class QuestProgressFile { int count = 0; for (final QuestProgress questProgress : this.questProgressMap.values()) { - final boolean matches = filter.matches(questProgress); - if (!matches) { - continue; - } + final Quest quest = this.getQuestFromProgress(filter, questProgress); - final Quest quest = this.plugin.getQuestManager().getQuestById(questProgress.getQuestId()); - if (quest == null) { - continue; + if (quest != null) { + count++; } - - count++; } return count; } + private @Nullable Quest getQuestFromProgress(final @NotNull QuestProgressFilter filter, final QuestProgress questProgress) { + final boolean matchesProgress = filter.matchesProgress(questProgress); + if (!matchesProgress) { + return null; + } + + final Quest quest = this.plugin.getQuestManager().getQuestById(questProgress.getQuestId()); + if (quest == null) { + return null; + } + + final boolean matchesQuest = filter.matchesQuest(quest); + if (!matchesQuest) { + return null; + } + + return quest; + } + /** * Gets all the quest progress that it has ever encountered. * @@ -436,28 +443,28 @@ public final class QuestProgressFile { @Override @Contract(pure = true) public boolean matches(final @NotNull QuestProgress questProgress) { - return QuestProgressFilter.ALL.matches(questProgress); + return QuestProgressFilter.ALL.matchesProgress(questProgress); } }, COMPLETED("completed") { @Override @Contract(pure = true) public boolean matches(final @NotNull QuestProgress questProgress) { - return QuestProgressFilter.COMPLETED.matches(questProgress); + return QuestProgressFilter.COMPLETED.matchesProgress(questProgress); } }, COMPLETED_BEFORE("completedBefore") { @Override @Contract(pure = true) public boolean matches(final @NotNull QuestProgress questProgress) { - return QuestProgressFilter.COMPLETED_BEFORE.matches(questProgress); + return QuestProgressFilter.COMPLETED_BEFORE.matchesProgress(questProgress); } }, STARTED("started") { @Override @Contract(pure = true) public boolean matches(final @NotNull QuestProgress questProgress) { - return QuestProgressFilter.STARTED.matches(questProgress); + return QuestProgressFilter.STARTED.matchesProgress(questProgress); } }; diff --git a/common/src/main/java/com/leonardobishop/quests/common/player/questprogressfile/filters/AllQuestProgressFilter.java b/common/src/main/java/com/leonardobishop/quests/common/player/questprogressfile/filters/AllQuestProgressFilter.java index 0e85d33e..e989fdc4 100644 --- a/common/src/main/java/com/leonardobishop/quests/common/player/questprogressfile/filters/AllQuestProgressFilter.java +++ b/common/src/main/java/com/leonardobishop/quests/common/player/questprogressfile/filters/AllQuestProgressFilter.java @@ -1,15 +1,4 @@ package com.leonardobishop.quests.common.player.questprogressfile.filters; -import com.leonardobishop.quests.common.player.questprogressfile.QuestProgress; -import org.jetbrains.annotations.NotNull; - public final class AllQuestProgressFilter implements QuestProgressFilter { - - AllQuestProgressFilter() { - } - - @Override - public boolean matches(final @NotNull QuestProgress questProgress) { - return true; - } } diff --git a/common/src/main/java/com/leonardobishop/quests/common/player/questprogressfile/filters/ArrayQuestProgressFilter.java b/common/src/main/java/com/leonardobishop/quests/common/player/questprogressfile/filters/ArrayQuestProgressFilter.java index ee565949..d17a6a24 100644 --- a/common/src/main/java/com/leonardobishop/quests/common/player/questprogressfile/filters/ArrayQuestProgressFilter.java +++ b/common/src/main/java/com/leonardobishop/quests/common/player/questprogressfile/filters/ArrayQuestProgressFilter.java @@ -6,7 +6,7 @@ public abstract class ArrayQuestProgressFilter implements QuestProgressFilter { protected final QuestProgressFilter[] filters; - ArrayQuestProgressFilter(final @NotNull QuestProgressFilter @NotNull ... filters) { + public ArrayQuestProgressFilter(final @NotNull QuestProgressFilter @NotNull ... filters) { this.filters = filters; } } diff --git a/common/src/main/java/com/leonardobishop/quests/common/player/questprogressfile/filters/CompletedBeforeQuestProgressFilter.java b/common/src/main/java/com/leonardobishop/quests/common/player/questprogressfile/filters/CompletedBeforeQuestProgressFilter.java index 6383b9c4..ad6a7108 100644 --- a/common/src/main/java/com/leonardobishop/quests/common/player/questprogressfile/filters/CompletedBeforeQuestProgressFilter.java +++ b/common/src/main/java/com/leonardobishop/quests/common/player/questprogressfile/filters/CompletedBeforeQuestProgressFilter.java @@ -5,11 +5,8 @@ import org.jetbrains.annotations.NotNull; public final class CompletedBeforeQuestProgressFilter implements QuestProgressFilter { - CompletedBeforeQuestProgressFilter() { - } - @Override - public boolean matches(final @NotNull QuestProgress questProgress) { + public boolean matchesProgress(final @NotNull QuestProgress questProgress) { return questProgress.isCompletedBefore(); } } diff --git a/common/src/main/java/com/leonardobishop/quests/common/player/questprogressfile/filters/CompletedQuestProgressFilter.java b/common/src/main/java/com/leonardobishop/quests/common/player/questprogressfile/filters/CompletedQuestProgressFilter.java index 6287440f..36ec534a 100644 --- a/common/src/main/java/com/leonardobishop/quests/common/player/questprogressfile/filters/CompletedQuestProgressFilter.java +++ b/common/src/main/java/com/leonardobishop/quests/common/player/questprogressfile/filters/CompletedQuestProgressFilter.java @@ -5,11 +5,8 @@ import org.jetbrains.annotations.NotNull; public final class CompletedQuestProgressFilter implements QuestProgressFilter { - CompletedQuestProgressFilter() { - } - @Override - public boolean matches(final @NotNull QuestProgress questProgress) { + public boolean matchesProgress(final @NotNull QuestProgress questProgress) { return questProgress.isCompleted(); } } diff --git a/common/src/main/java/com/leonardobishop/quests/common/player/questprogressfile/filters/ConjunctionQuestProgressFilter.java b/common/src/main/java/com/leonardobishop/quests/common/player/questprogressfile/filters/ConjunctionQuestProgressFilter.java index c2e904c7..07b741e4 100644 --- a/common/src/main/java/com/leonardobishop/quests/common/player/questprogressfile/filters/ConjunctionQuestProgressFilter.java +++ b/common/src/main/java/com/leonardobishop/quests/common/player/questprogressfile/filters/ConjunctionQuestProgressFilter.java @@ -5,14 +5,14 @@ import org.jetbrains.annotations.NotNull; public final class ConjunctionQuestProgressFilter extends ArrayQuestProgressFilter { - ConjunctionQuestProgressFilter(final @NotNull QuestProgressFilter @NotNull ... filters) { + public ConjunctionQuestProgressFilter(final @NotNull QuestProgressFilter @NotNull ... filters) { super(filters); } @Override - public boolean matches(final @NotNull QuestProgress questProgress) { + public boolean matchesProgress(final @NotNull QuestProgress questProgress) { for (final QuestProgressFilter filter : this.filters) { - if (!filter.matches(questProgress)) { + if (!filter.matchesProgress(questProgress)) { return false; } } diff --git a/common/src/main/java/com/leonardobishop/quests/common/player/questprogressfile/filters/DisjunctionQuestProgressFilter.java b/common/src/main/java/com/leonardobishop/quests/common/player/questprogressfile/filters/DisjunctionQuestProgressFilter.java index 2dd68540..da1771f4 100644 --- a/common/src/main/java/com/leonardobishop/quests/common/player/questprogressfile/filters/DisjunctionQuestProgressFilter.java +++ b/common/src/main/java/com/leonardobishop/quests/common/player/questprogressfile/filters/DisjunctionQuestProgressFilter.java @@ -5,14 +5,14 @@ import org.jetbrains.annotations.NotNull; public final class DisjunctionQuestProgressFilter extends ArrayQuestProgressFilter { - DisjunctionQuestProgressFilter(final @NotNull QuestProgressFilter @NotNull ... filters) { + public DisjunctionQuestProgressFilter(final @NotNull QuestProgressFilter @NotNull ... filters) { super(filters); } @Override - public boolean matches(final @NotNull QuestProgress questProgress) { + public boolean matchesProgress(final @NotNull QuestProgress questProgress) { for (final QuestProgressFilter filter : this.filters) { - if (filter.matches(questProgress)) { + if (filter.matchesProgress(questProgress)) { return true; } } diff --git a/common/src/main/java/com/leonardobishop/quests/common/player/questprogressfile/filters/DoesCountTowardsCompletedQuestProgressFilter.java b/common/src/main/java/com/leonardobishop/quests/common/player/questprogressfile/filters/DoesCountTowardsCompletedQuestProgressFilter.java new file mode 100644 index 00000000..4a13e86d --- /dev/null +++ b/common/src/main/java/com/leonardobishop/quests/common/player/questprogressfile/filters/DoesCountTowardsCompletedQuestProgressFilter.java @@ -0,0 +1,12 @@ +package com.leonardobishop.quests.common.player.questprogressfile.filters; + +import com.leonardobishop.quests.common.quest.Quest; +import org.jetbrains.annotations.NotNull; + +public final class DoesCountTowardsCompletedQuestProgressFilter implements QuestProgressFilter { + + @Override + public boolean matchesQuest(final @NotNull Quest quest) { + return quest.doesCountTowardsCompleted(); + } +} diff --git a/common/src/main/java/com/leonardobishop/quests/common/player/questprogressfile/filters/DoesCountTowardsLimitQuestProgressFilter.java b/common/src/main/java/com/leonardobishop/quests/common/player/questprogressfile/filters/DoesCountTowardsLimitQuestProgressFilter.java new file mode 100644 index 00000000..872998d5 --- /dev/null +++ b/common/src/main/java/com/leonardobishop/quests/common/player/questprogressfile/filters/DoesCountTowardsLimitQuestProgressFilter.java @@ -0,0 +1,12 @@ +package com.leonardobishop.quests.common.player.questprogressfile.filters; + +import com.leonardobishop.quests.common.quest.Quest; +import org.jetbrains.annotations.NotNull; + +public final class DoesCountTowardsLimitQuestProgressFilter implements QuestProgressFilter { + + @Override + public boolean matchesQuest(final @NotNull Quest quest) { + return quest.doesCountTowardsLimit(); + } +} diff --git a/common/src/main/java/com/leonardobishop/quests/common/player/questprogressfile/filters/NegationQuestProgressFilter.java b/common/src/main/java/com/leonardobishop/quests/common/player/questprogressfile/filters/NegationQuestProgressFilter.java new file mode 100644 index 00000000..b2530cb8 --- /dev/null +++ b/common/src/main/java/com/leonardobishop/quests/common/player/questprogressfile/filters/NegationQuestProgressFilter.java @@ -0,0 +1,24 @@ +package com.leonardobishop.quests.common.player.questprogressfile.filters; + +import com.leonardobishop.quests.common.player.questprogressfile.QuestProgress; +import com.leonardobishop.quests.common.quest.Quest; +import org.jetbrains.annotations.NotNull; + +public final class NegationQuestProgressFilter implements QuestProgressFilter { + + private final QuestProgressFilter filter; + + public NegationQuestProgressFilter(final @NotNull QuestProgressFilter filter) { + this.filter = filter; + } + + @Override + public boolean matchesQuest(final @NotNull Quest quest) { + return !this.filter.matchesQuest(quest); + } + + @Override + public boolean matchesProgress(final @NotNull QuestProgress questProgress) { + return !this.filter.matchesProgress(questProgress); + } +} 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 fad751ff..41af049c 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 @@ -1,16 +1,29 @@ package com.leonardobishop.quests.common.player.questprogressfile.filters; import com.leonardobishop.quests.common.player.questprogressfile.QuestProgress; +import com.leonardobishop.quests.common.quest.Quest; import org.jetbrains.annotations.Contract; import org.jetbrains.annotations.NotNull; public interface QuestProgressFilter { + // QuestProgress filters QuestProgressFilter ALL = new AllQuestProgressFilter(); QuestProgressFilter COMPLETED = new CompletedQuestProgressFilter(); QuestProgressFilter COMPLETED_BEFORE = new CompletedBeforeQuestProgressFilter(); QuestProgressFilter STARTED = new StartedQuestProgressFilter(); + // Quest filters + QuestProgressFilter DOES_COUNT_TOWARDS_COMPLETED = new DoesCountTowardsCompletedQuestProgressFilter(); + QuestProgressFilter DOES_COUNT_TOWARDS_LIMIT = new DoesCountTowardsLimitQuestProgressFilter(); + + @Contract(pure = true) + default boolean matchesQuest(final @NotNull Quest quest) { + return true; + } + @Contract(pure = true) - boolean matches(final @NotNull QuestProgress questProgress); + default boolean matchesProgress(final @NotNull QuestProgress questProgress) { + return true; + } } diff --git a/common/src/main/java/com/leonardobishop/quests/common/player/questprogressfile/filters/StartedQuestProgressFilter.java b/common/src/main/java/com/leonardobishop/quests/common/player/questprogressfile/filters/StartedQuestProgressFilter.java index 2a48f9fa..6b5cab10 100644 --- a/common/src/main/java/com/leonardobishop/quests/common/player/questprogressfile/filters/StartedQuestProgressFilter.java +++ b/common/src/main/java/com/leonardobishop/quests/common/player/questprogressfile/filters/StartedQuestProgressFilter.java @@ -5,11 +5,8 @@ import org.jetbrains.annotations.NotNull; public final class StartedQuestProgressFilter implements QuestProgressFilter { - StartedQuestProgressFilter() { - } - @Override - public boolean matches(final @NotNull QuestProgress questProgress) { + public boolean matchesProgress(final @NotNull QuestProgress questProgress) { return questProgress.isStarted(); } } |
