aboutsummaryrefslogtreecommitdiffstats
path: root/common/src/main
diff options
context:
space:
mode:
authorKrakenied <krakenied1@gmail.com>2025-02-02 20:04:36 +0100
committerKrakenied <46192742+Krakenied@users.noreply.github.com>2025-05-13 20:34:15 +0200
commit31c7e2d50ab5be2b3014900297f458dec2fbd6e1 (patch)
treef7ba24fe6098737cd2e4afb0a50d2b13068b6076 /common/src/main
parent3965b739b37597b7146d772c6549db300d18687a (diff)
Deduplicate some QPF methods code
Refactor progress filters a bit
Diffstat (limited to 'common/src/main')
-rw-r--r--common/src/main/java/com/leonardobishop/quests/common/player/questprogressfile/QuestProgressFile.java51
-rw-r--r--common/src/main/java/com/leonardobishop/quests/common/player/questprogressfile/filters/AllQuestProgressFilter.java11
-rw-r--r--common/src/main/java/com/leonardobishop/quests/common/player/questprogressfile/filters/ArrayQuestProgressFilter.java2
-rw-r--r--common/src/main/java/com/leonardobishop/quests/common/player/questprogressfile/filters/CompletedBeforeQuestProgressFilter.java5
-rw-r--r--common/src/main/java/com/leonardobishop/quests/common/player/questprogressfile/filters/CompletedQuestProgressFilter.java5
-rw-r--r--common/src/main/java/com/leonardobishop/quests/common/player/questprogressfile/filters/ConjunctionQuestProgressFilter.java6
-rw-r--r--common/src/main/java/com/leonardobishop/quests/common/player/questprogressfile/filters/DisjunctionQuestProgressFilter.java6
-rw-r--r--common/src/main/java/com/leonardobishop/quests/common/player/questprogressfile/filters/DoesCountTowardsCompletedQuestProgressFilter.java12
-rw-r--r--common/src/main/java/com/leonardobishop/quests/common/player/questprogressfile/filters/DoesCountTowardsLimitQuestProgressFilter.java12
-rw-r--r--common/src/main/java/com/leonardobishop/quests/common/player/questprogressfile/filters/NegationQuestProgressFilter.java24
-rw-r--r--common/src/main/java/com/leonardobishop/quests/common/player/questprogressfile/filters/QuestProgressFilter.java15
-rw-r--r--common/src/main/java/com/leonardobishop/quests/common/player/questprogressfile/filters/StartedQuestProgressFilter.java5
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();
}
}