diff options
Diffstat (limited to 'common')
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); + } } |
