aboutsummaryrefslogtreecommitdiffstats
path: root/bukkit/src
diff options
context:
space:
mode:
authorKrakenied <Krakenied1@gmail.com>2023-07-09 11:01:33 +0200
committerKrakenied <Krakenied1@gmail.com>2023-08-09 02:21:39 +0200
commitd8c036247cef5edd82e83b26e40a8edb66b07d94 (patch)
treeb55c3bda17c130bc360d29a3ff3ac72280f19488 /bukkit/src
parent86a365d4984ae8d5131d59eb993c471e44509dfb (diff)
Alternative task constraints implementation
Diffstat (limited to 'bukkit/src')
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/TaskUtils.java16
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/constraint/TaskConstraint.java15
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/constraint/TaskConstraintSet.java22
3 files changed, 45 insertions, 8 deletions
diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/TaskUtils.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/TaskUtils.java
index 44f104e9..c9b8a320 100644
--- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/TaskUtils.java
+++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/TaskUtils.java
@@ -5,6 +5,8 @@ import com.leonardobishop.quests.bukkit.item.ParsedQuestItem;
import com.leonardobishop.quests.bukkit.item.QuestItem;
import com.leonardobishop.quests.bukkit.tasktype.BukkitTaskType;
import com.leonardobishop.quests.bukkit.util.chat.Chat;
+import com.leonardobishop.quests.bukkit.util.constraint.TaskConstraint;
+import com.leonardobishop.quests.bukkit.util.constraint.TaskConstraintSet;
import com.leonardobishop.quests.common.config.ConfigProblem;
import com.leonardobishop.quests.common.config.ConfigProblemDescriptions;
import com.leonardobishop.quests.common.player.QPlayer;
@@ -27,7 +29,6 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.List;
import java.util.UUID;
@@ -140,16 +141,19 @@ public class TaskUtils {
return progress;
}
- public static List<PendingTask> getApplicableTasks(Player player, QPlayer qPlayer, TaskType type, TaskConstraint... constraints) {
+ public static List<PendingTask> getApplicableTasks(Player player, QPlayer qPlayer, TaskType type) {
+ return getApplicableTasks(player, qPlayer, type, TaskConstraintSet.NONE);
+ }
+
+ public static List<PendingTask> getApplicableTasks(Player player, QPlayer qPlayer, TaskType type, TaskConstraintSet constraintSet) {
List<PendingTask> tasks = new ArrayList<>();
- List<TaskConstraint> taskConstraints = Arrays.asList(constraints);
for (Quest quest : type.getRegisteredQuests()) {
if (qPlayer.hasStartedQuest(quest)) {
QuestProgress questProgress = qPlayer.getQuestProgressFile().getQuestProgress(quest);
for (Task task : quest.getTasksOfType(type.getType())) {
- if (taskConstraints.contains(TaskConstraint.WORLD)) {
+ if (constraintSet.contains(TaskConstraint.WORLD)) {
if (!TaskUtils.validateWorld(player, task)) {
continue;
}
@@ -171,10 +175,6 @@ public class TaskUtils {
public record PendingTask(Quest quest, Task task, QuestProgress questProgress, TaskProgress taskProgress) { }
- public enum TaskConstraint {
- WORLD
- }
-
public static boolean matchBlock(@NotNull BukkitTaskType type, @NotNull PendingTask pendingTask, @NotNull Block block, @NotNull UUID player) {
Task task = pendingTask.task;
diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/constraint/TaskConstraint.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/constraint/TaskConstraint.java
new file mode 100644
index 00000000..24647de4
--- /dev/null
+++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/constraint/TaskConstraint.java
@@ -0,0 +1,15 @@
+package com.leonardobishop.quests.bukkit.util.constraint;
+
+public enum TaskConstraint {
+ WORLD(0x00000001);
+
+ private final int value;
+
+ TaskConstraint(final int value) {
+ this.value = value;
+ }
+
+ public int getValue() {
+ return this.value;
+ }
+}
diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/constraint/TaskConstraintSet.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/constraint/TaskConstraintSet.java
new file mode 100644
index 00000000..47ac7aca
--- /dev/null
+++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/constraint/TaskConstraintSet.java
@@ -0,0 +1,22 @@
+package com.leonardobishop.quests.bukkit.util.constraint;
+
+import org.jetbrains.annotations.NotNull;
+
+public final class TaskConstraintSet {
+
+ public static final TaskConstraintSet ALL = new TaskConstraintSet(TaskConstraint.values());
+ public static final TaskConstraintSet NONE = new TaskConstraintSet();
+ private final int rawValue;
+
+ public TaskConstraintSet(final @NotNull TaskConstraint... constraints) {
+ int rawValue = 0;
+ for (final TaskConstraint constraint : constraints) {
+ rawValue |= constraint.getValue();
+ }
+ this.rawValue = rawValue;
+ }
+
+ public boolean contains(final @NotNull TaskConstraint constraint) {
+ return (this.rawValue & constraint.getValue()) != 0;
+ }
+}