summaryrefslogtreecommitdiffstats
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/config/ConfigProblemDescriptions.java3
-rw-r--r--common/src/main/java/com/leonardobishop/quests/common/quest/Task.java12
-rw-r--r--common/src/main/java/com/leonardobishop/quests/common/tasktype/TaskType.java16
3 files changed, 30 insertions, 1 deletions
diff --git a/common/src/main/java/com/leonardobishop/quests/common/config/ConfigProblemDescriptions.java b/common/src/main/java/com/leonardobishop/quests/common/config/ConfigProblemDescriptions.java
index c1903a35..028669ac 100644
--- a/common/src/main/java/com/leonardobishop/quests/common/config/ConfigProblemDescriptions.java
+++ b/common/src/main/java/com/leonardobishop/quests/common/config/ConfigProblemDescriptions.java
@@ -93,7 +93,8 @@ public enum ConfigProblemDescriptions {
UNKNOWN_REQUIREMENT("Quest requirement '%s' does not exist",
"This may be the result of a cascading error<br>" +
"if '%s' failed to load, or a mis-typed ID."
- );
+ ),
+ NOT_ACCEPTED_VALUE("Value '%s' is not in the list of accepted values for task %s: %s", null);
private final String description;
private final String extendedDescription;
diff --git a/common/src/main/java/com/leonardobishop/quests/common/quest/Task.java b/common/src/main/java/com/leonardobishop/quests/common/quest/Task.java
index 6e27aef6..b92ed59e 100644
--- a/common/src/main/java/com/leonardobishop/quests/common/quest/Task.java
+++ b/common/src/main/java/com/leonardobishop/quests/common/quest/Task.java
@@ -34,6 +34,18 @@ public class Task {
}
/**
+ * Check if a config value is set for this task
+ *
+ * @param key key of config value to check
+ * @return whether it exists
+ */
+ public boolean hasConfigKey(@NotNull String key) {
+ Objects.requireNonNull(key, "key cannot be null");
+
+ return configValues.containsKey(key);
+ }
+
+ /**
* Get a specific configuration value for this task
*
* @param key key of config value to get
diff --git a/common/src/main/java/com/leonardobishop/quests/common/tasktype/TaskType.java b/common/src/main/java/com/leonardobishop/quests/common/tasktype/TaskType.java
index 48e7c9c8..781d78f2 100644
--- a/common/src/main/java/com/leonardobishop/quests/common/tasktype/TaskType.java
+++ b/common/src/main/java/com/leonardobishop/quests/common/tasktype/TaskType.java
@@ -17,6 +17,7 @@ import java.util.*;
public abstract class TaskType {
private final List<Quest> quests = new ArrayList<>();
+ private final List<ConfigValidator> configValidators = new ArrayList<>();
private final String type;
private String author;
private String description;
@@ -110,4 +111,19 @@ public abstract class TaskType {
// not implemented here
return Collections.emptyList();
}
+
+ public void addConfigValidator(@NotNull ConfigValidator validator) {
+ Objects.requireNonNull(validator, "validator cannot be null");
+
+ configValidators.add(validator);
+ }
+
+ public List<ConfigValidator> getConfigValidators() {
+ return configValidators;
+ }
+
+ @FunctionalInterface
+ public interface ConfigValidator {
+ void validateConfig(@NotNull HashMap<String, Object> taskConfig, @NotNull List<ConfigProblem> problems);
+ }
}