aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/BukkitQuestsPlugin.java2
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/config/BukkitQuestsLoader.java11
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/BreedingTaskType.java7
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/BrewingTaskType.java7
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/BucketInteractionTaskType.java35
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/BuildingCertainTaskType.java74
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/CommandTaskType.java7
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/ConsumeTaskType.java16
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/CraftingTaskType.java17
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/DealDamageTaskType.java10
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/DistancefromTaskType.java25
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/EnchantingTaskType.java7
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/ExpEarnTaskType.java7
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/FarmingCertainTaskType.java63
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/FarmingTaskType.java7
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/FishingCertainTaskType.java28
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/FishingTaskType.java7
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/InventoryTaskType.java24
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/MilkingTaskType.java7
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/MiningCertainTaskType.java80
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/MobkillingCertainTaskType.java5
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/MobkillingTaskType.java4
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/PermissionTaskType.java2
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/PlayerkillingTaskType.java3
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/PlaytimeTaskType.java3
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/PositionTaskType.java10
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/ShearingTaskType.java7
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/SmeltingCertainTaskType.java16
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/TamingCertainTaskType.java98
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/TamingTaskType.java44
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/WalkingTaskType.java18
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/ASkyBlockLevelTaskType.java7
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/BentoBoxLevelTaskType.java7
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/CitizensDeliverTaskType.java47
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/CitizensInteractTaskType.java18
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/EssentialsBalanceTaskType.java3
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/EssentialsMoneyEarnTaskType.java7
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/FabledSkyblockLevelTaskType.java7
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/IridiumSkyblockValueTaskType.java7
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/MythicMobsKillingTaskType.java16
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/NuVotifierVoteTaskType.java7
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/PlaceholderAPIEvaluateTaskType.java75
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/ShopGUIPlusBuyCertainTaskType.java5
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/ShopGUIPlusSellCertainTaskType.java17
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/SuperiorSkyblockLevelType.java7
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/SuperiorSkyblockWorthType.java7
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/VotingPluginVoteType.java7
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/uSkyBlockLevelTaskType.java7
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/TaskUtils.java267
-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
52 files changed, 836 insertions, 364 deletions
diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/BukkitQuestsPlugin.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/BukkitQuestsPlugin.java
index 5d809235..37735054 100644
--- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/BukkitQuestsPlugin.java
+++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/BukkitQuestsPlugin.java
@@ -304,7 +304,7 @@ public class BukkitQuestsPlugin extends JavaPlugin implements Quests {
taskTypeManager.registerTaskType(new ConsumeTaskType(this));
taskTypeManager.registerTaskType(new WalkingTaskType(this));
taskTypeManager.registerTaskType(new TamingTaskType(this));
- taskTypeManager.registerTaskType(new TamingCertainTaskType(this));
+ taskTypeManager.registerTaskType(new TamingTaskType(this));
taskTypeManager.registerTaskType(new MilkingTaskType(this));
taskTypeManager.registerTaskType(new ShearingTaskType(this));
taskTypeManager.registerTaskType(new PositionTaskType(this));
diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/config/BukkitQuestsLoader.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/config/BukkitQuestsLoader.java
index d4a7786b..ba23d9c8 100644
--- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/config/BukkitQuestsLoader.java
+++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/config/BukkitQuestsLoader.java
@@ -206,7 +206,16 @@ public class BukkitQuestsLoader implements QuestsLoader {
configValues.put(key, config.get(taskRoot + "." + key));
}
- problems.addAll(t.validateConfig(taskRoot, configValues));
+ List<ConfigProblem> taskProblems = new ArrayList<>();
+ for (TaskType.ConfigValidator validator : t.getConfigValidators()) {
+ validator.validateConfig(configValues, taskProblems);
+ }
+
+ // pre-pend task root to locations
+ for (ConfigProblem problem : taskProblems) {
+ problems.add(new ConfigProblem(problem.getType(), problem.getDescription(),
+ problem.getExtendedDescription(), taskRoot + "." + problem.getLocation()));
+ }
} else {
problems.add(new ConfigProblem(ConfigProblem.ConfigProblemType.WARNING,
ConfigProblemDescriptions.UNKNOWN_TASK_TYPE.getDescription(taskType),
diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/BreedingTaskType.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/BreedingTaskType.java
index 644bfd7b..3a91ffb1 100644
--- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/BreedingTaskType.java
+++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/BreedingTaskType.java
@@ -27,13 +27,16 @@ public final class BreedingTaskType extends BukkitTaskType {
public BreedingTaskType(BukkitQuestsPlugin plugin) {
super("breeding", TaskUtils.TASK_ATTRIBUTION_STRING, "Breed a set amount of animals.");
this.plugin = plugin;
+
+ super.addConfigValidator(TaskUtils.useRequiredConfigValidator(this, "amount"));
+ super.addConfigValidator(TaskUtils.useIntegerConfigValidator(this, "amount"));
}
@Override
public @NotNull List<ConfigProblem> validateConfig(@NotNull String root, @NotNull HashMap<String, Object> config) {
ArrayList<ConfigProblem> problems = new ArrayList<>();
- if (TaskUtils.configValidateExists(root + ".amount", config.get("amount"), problems, "amount", super.getType()))
- TaskUtils.configValidateInt(root + ".amount", config.get("amount"), problems, false, true, "amount");
+// if (TaskUtils.configValidateExists(root + ".amount", config.get("amount"), problems, "amount", super.getType()))
+// TaskUtils.configValidateInt(root + ".amount", config.get("amount"), problems, false, true, "amount");
return problems;
}
diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/BrewingTaskType.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/BrewingTaskType.java
index e7259a90..03550421 100644
--- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/BrewingTaskType.java
+++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/BrewingTaskType.java
@@ -32,13 +32,16 @@ public final class BrewingTaskType extends BukkitTaskType {
public BrewingTaskType(BukkitQuestsPlugin plugin) {
super("brewing", TaskUtils.TASK_ATTRIBUTION_STRING, "Brew a potion.");
this.plugin = plugin;
+
+ super.addConfigValidator(TaskUtils.useRequiredConfigValidator(this, "amount"));
+ super.addConfigValidator(TaskUtils.useIntegerConfigValidator(this, "amount"));
}
@Override
public @NotNull List<ConfigProblem> validateConfig(@NotNull String root, @NotNull HashMap<String, Object> config) {
ArrayList<ConfigProblem> problems = new ArrayList<>();
- if (TaskUtils.configValidateExists(root + ".amount", config.get("amount"), problems, "amount", super.getType()))
- TaskUtils.configValidateInt(root + ".amount", config.get("amount"), problems, false, true, "amount");
+// if (TaskUtils.configValidateExists(root + ".amount", config.get("amount"), problems, "amount", super.getType()))
+// TaskUtils.configValidateInt(root + ".amount", config.get("amount"), problems, false, true, "amount");
return problems;
}
diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/BucketInteractionTaskType.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/BucketInteractionTaskType.java
index e709f5d7..05b2ccd6 100644
--- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/BucketInteractionTaskType.java
+++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/BucketInteractionTaskType.java
@@ -21,26 +21,31 @@ public abstract class BucketInteractionTaskType extends BukkitTaskType {
public BucketInteractionTaskType(@NotNull String type, String author, String description) {
super(type, author, description);
+
+ super.addConfigValidator(TaskUtils.useRequiredConfigValidator(this, "amount"));
+ super.addConfigValidator(TaskUtils.useIntegerConfigValidator(this, "amount"));
+ super.addConfigValidator(TaskUtils.useRequiredConfigValidator(this, "bucket"));
+ super.addConfigValidator(TaskUtils.useMaterialListConfigValidator(this, "bucket"));
}
@Override
public @NotNull List<ConfigProblem> validateConfig(@NotNull String root, @NotNull HashMap<String, Object> config) {
ArrayList<ConfigProblem> problems = new ArrayList<>();
- if (config.get("bucket") == null) {
- TaskUtils.configValidateExists(root + ".bucket", config.get("bucket"), problems, "bucket", super.getType());
- } else {
- String configBlock = config.get("bucket").toString();
-
- String[] split = configBlock.split(":");
- if (Material.getMaterial(String.valueOf(split[0])) == null) {
- problems.add(new ConfigProblem(ConfigProblem.ConfigProblemType.WARNING,
- ConfigProblemDescriptions.UNKNOWN_MATERIAL.getDescription(configBlock),
- ConfigProblemDescriptions.UNKNOWN_MATERIAL.getExtendedDescription(configBlock),
- root + ".bucket"));
- }
- }
- if (TaskUtils.configValidateExists(root + ".amount", config.get("amount"), problems, "amount", super.getType()))
- TaskUtils.configValidateInt(root + ".amount", config.get("amount"), problems, false, true, "amount");
+// if (config.get("bucket") == null) {
+// TaskUtils.configValidateExists(root + ".bucket", config.get("bucket"), problems, "bucket", super.getType());
+// } else {
+// String configBlock = config.get("bucket").toString();
+//
+// String[] split = configBlock.split(":");
+// if (Material.getMaterial(String.valueOf(split[0])) == null) {
+// problems.add(new ConfigProblem(ConfigProblem.ConfigProblemType.WARNING,
+// ConfigProblemDescriptions.UNKNOWN_MATERIAL.getDescription(configBlock),
+// ConfigProblemDescriptions.UNKNOWN_MATERIAL.getExtendedDescription(configBlock),
+// root + ".bucket"));
+// }
+// }
+// if (TaskUtils.configValidateExists(root + ".amount", config.get("amount"), problems, "amount", super.getType()))
+// TaskUtils.configValidateInt(root + ".amount", config.get("amount"), problems, false, true, "amount");
return problems;
}
diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/BuildingCertainTaskType.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/BuildingCertainTaskType.java
index 82b70bec..9fab306c 100644
--- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/BuildingCertainTaskType.java
+++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/BuildingCertainTaskType.java
@@ -30,44 +30,52 @@ public final class BuildingCertainTaskType extends BukkitTaskType {
public BuildingCertainTaskType(BukkitQuestsPlugin plugin) {
super("blockplacecertain", TaskUtils.TASK_ATTRIBUTION_STRING, "Place a set amount of a specific block.");
this.plugin = plugin;
+
+ super.addConfigValidator(TaskUtils.useRequiredConfigValidator(this, "amount"));
+ super.addConfigValidator(TaskUtils.useIntegerConfigValidator(this, "amount"));
+ super.addConfigValidator(TaskUtils.useRequiredConfigValidator(this, "block", "blocks"));
+ super.addConfigValidator(TaskUtils.useMaterialListConfigValidator(this, "block", "blocks"));
+ super.addConfigValidator(TaskUtils.useIntegerConfigValidator(this, "data"));
+ super.addConfigValidator(TaskUtils.useBooleanConfigValidator(this, "reverse-if-broken"));
+ super.addConfigValidator(TaskUtils.useBooleanConfigValidator(this, "use-similar-blocks"));
}
@Override
public @NotNull List<ConfigProblem> validateConfig(@NotNull String root, @NotNull HashMap<String, Object> config) {
ArrayList<ConfigProblem> problems = new ArrayList<>();
- if (TaskUtils.configValidateExists(root + ".amount", config.get("amount"), problems, "amount", super.getType()))
- TaskUtils.configValidateInt(root + ".amount", config.get("amount"), problems, false, true, "amount");
- if (config.get("block") == null && config.get("blocks") == null) {
- TaskUtils.configValidateExists(root + ".block", config.get("block"), problems, "block", super.getType());
- } else {
- Object configBlock;
- String source;
- if (config.containsKey("block")) {
- source = "block";
- } else {
- source = "blocks";
- }
- configBlock = config.get(source);
- List<String> checkBlocks = new ArrayList<>();
- if (configBlock instanceof List) {
- checkBlocks.addAll((List) configBlock);
- } else {
- checkBlocks.add(String.valueOf(configBlock));
- }
-
- for (String materialName : checkBlocks) {
- String[] split = materialName.split(":");
- if (Material.getMaterial(String.valueOf(split[0])) == null) {
- problems.add(new ConfigProblem(ConfigProblem.ConfigProblemType.WARNING,
- ConfigProblemDescriptions.UNKNOWN_MATERIAL.getDescription(materialName),
- ConfigProblemDescriptions.UNKNOWN_MATERIAL.getExtendedDescription(materialName),
- root + "." + source));
- }
- }
- }
- TaskUtils.configValidateBoolean(root + ".reverse-if-broken", config.get("reverse-if-broken"), problems, true,"reverse-if-broken");
- TaskUtils.configValidateBoolean(root + ".use-similar-blocks", config.get("use-similar-blocks"), problems, true,"use-similar-blocks");
- TaskUtils.configValidateInt(root + ".data", config.get("data"), problems, true,true, "data");
+// if (TaskUtils.configValidateExists(root + ".amount", config.get("amount"), problems, "amount", super.getType()))
+// TaskUtils.configValidateInt(root + ".amount", config.get("amount"), problems, false, true, "amount");
+// if (config.get("block") == null && config.get("blocks") == null) {
+// TaskUtils.configValidateExists(root + ".block", config.get("block"), problems, "block", super.getType());
+// } else {
+// Object configBlock;
+// String source;
+// if (config.containsKey("block")) {
+// source = "block";
+// } else {
+// source = "blocks";
+// }
+// configBlock = config.get(source);
+// List<String> checkBlocks = new ArrayList<>();
+// if (configBlock instanceof List) {
+// checkBlocks.addAll((List) configBlock);
+// } else {
+// checkBlocks.add(String.valueOf(configBlock));
+// }
+//
+// for (String materialName : checkBlocks) {
+// String[] split = materialName.split(":");
+// if (Material.getMaterial(String.valueOf(split[0])) == null) {
+// problems.add(new ConfigProblem(ConfigProblem.ConfigProblemType.WARNING,
+// ConfigProblemDescriptions.UNKNOWN_MATERIAL.getDescription(materialName),
+// ConfigProblemDescriptions.UNKNOWN_MATERIAL.getExtendedDescription(materialName),
+// root + "." + source));
+// }
+// }
+// }
+// TaskUtils.configValidateBoolean(root + ".reverse-if-broken", config.get("reverse-if-broken"), problems, true,"reverse-if-broken");
+// TaskUtils.configValidateBoolean(root + ".use-similar-blocks", config.get("use-similar-blocks"), problems, true,"use-similar-blocks");
+// TaskUtils.configValidateInt(root + ".data", config.get("data"), problems, true,true, "data");
return problems;
}
diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/CommandTaskType.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/CommandTaskType.java
index bc8789f5..19ac6af7 100644
--- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/CommandTaskType.java
+++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/CommandTaskType.java
@@ -26,13 +26,16 @@ public final class CommandTaskType extends BukkitTaskType {
public CommandTaskType(BukkitQuestsPlugin plugin) {
super("command", TaskUtils.TASK_ATTRIBUTION_STRING, "Execute a certain command.");
this.plugin = plugin;
+
+ super.addConfigValidator(TaskUtils.useRequiredConfigValidator(this, "command"));
+ super.addConfigValidator(TaskUtils.useBooleanConfigValidator(this, "ignore-case"));
}
@Override
public @NotNull List<ConfigProblem> validateConfig(@NotNull String root, @NotNull HashMap<String, Object> config) {
ArrayList<ConfigProblem> problems = new ArrayList<>();
- TaskUtils.configValidateExists(root + ".command", config.get("command"), problems, "command", super.getType());
- TaskUtils.configValidateBoolean(root + ".ignore-case", config.get("ignore-case"), problems, true, "ignore-case", super.getType());
+// TaskUtils.configValidateExists(root + ".command", config.get("command"), problems, "command", super.getType());
+// TaskUtils.configValidateBoolean(root + ".ignore-case", config.get("ignore-case"), problems, true, "ignore-case", super.getType());
return problems;
}
diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/ConsumeTaskType.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/ConsumeTaskType.java
index c3c13fb6..eb5aa5d0 100644
--- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/ConsumeTaskType.java
+++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/ConsumeTaskType.java
@@ -29,16 +29,22 @@ public final class ConsumeTaskType extends BukkitTaskType {
public ConsumeTaskType(BukkitQuestsPlugin plugin) {
super("consume", TaskUtils.TASK_ATTRIBUTION_STRING, "Consume a specific item.");
this.plugin = plugin;
+
+ super.addConfigValidator(TaskUtils.useRequiredConfigValidator(this, "amount"));
+ super.addConfigValidator(TaskUtils.useIntegerConfigValidator(this, "amount"));
+ super.addConfigValidator(TaskUtils.useRequiredConfigValidator(this, "item"));
+ super.addConfigValidator(TaskUtils.useItemStackConfigValidator(this, "item"));
+ super.addConfigValidator(TaskUtils.useIntegerConfigValidator(this, "data"));
}
@Override
public @NotNull List<ConfigProblem> validateConfig(@NotNull String root, @NotNull HashMap<String, Object> config) {
ArrayList<ConfigProblem> problems = new ArrayList<>();
- if (TaskUtils.configValidateExists(root + ".item", config.get("item"), problems, "item", super.getType()))
- TaskUtils.configValidateItemStack(root + ".item", config.get("item"), problems, false, "item");
- if (TaskUtils.configValidateExists(root + ".amount", config.get("amount"), problems, "amount", super.getType()))
- TaskUtils.configValidateInt(root + ".amount", config.get("amount"), problems, false, true, "amount");
- TaskUtils.configValidateInt(root + ".data", config.get("data"), problems, true, false, "data");
+// if (TaskUtils.configValidateExists(root + ".item", config.get("item"), problems, "item", super.getType()))
+// TaskUtils.configValidateItemStack(root + ".item", config.get("item"), problems, false, "item");
+// if (TaskUtils.configValidateExists(root + ".amount", config.get("amount"), problems, "amount", super.getType()))
+// TaskUtils.configValidateInt(root + ".amount", config.get("amount"), problems, false, true, "amount");
+// TaskUtils.configValidateInt(root + ".data", config.get("data"), problems, true, false, "data");
return problems;
}
diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/CraftingTaskType.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/CraftingTaskType.java
index e1981d78..8c773db1 100644
--- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/CraftingTaskType.java
+++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/CraftingTaskType.java
@@ -37,16 +37,23 @@ public final class CraftingTaskType extends BukkitTaskType {
public CraftingTaskType(BukkitQuestsPlugin plugin) {
super("crafting", TaskUtils.TASK_ATTRIBUTION_STRING, "Craft a specific item.");
this.plugin = plugin;
+
+ super.addConfigValidator(TaskUtils.useRequiredConfigValidator(this, "amount"));
+ super.addConfigValidator(TaskUtils.useIntegerConfigValidator(this, "amount"));
+ super.addConfigValidator(TaskUtils.useRequiredConfigValidator(this, "item"));
+ super.addConfigValidator(TaskUtils.useItemStackConfigValidator(this, "item"));
+ super.addConfigValidator(TaskUtils.useIntegerConfigValidator(this, "data"));
+
}
@Override
public @NotNull List<ConfigProblem> validateConfig(@NotNull String root, @NotNull HashMap<String, Object> config) {
ArrayList<ConfigProblem> problems = new ArrayList<>();
- if (TaskUtils.configValidateExists(root + ".item", config.get("item"), problems, "item", super.getType()))
- TaskUtils.configValidateItemStack(root + ".item", config.get("item"), problems, false, "item");
- if (TaskUtils.configValidateExists(root + ".amount", config.get("amount"), problems, "amount", super.getType()))
- TaskUtils.configValidateInt(root + ".amount", config.get("amount"), problems, false, true, "amount");
- TaskUtils.configValidateInt(root + ".data", config.get("data"), problems, true, false, "data");
+// if (TaskUtils.configValidateExists(root + ".item", config.get("item"), problems, "item", super.getType()))
+// TaskUtils.configValidateItemStack(root + ".item", config.get("item"), problems, false, "item");
+// if (TaskUtils.configValidateExists(root + ".amount", config.get("amount"), problems, "amount", super.getType()))
+// TaskUtils.configValidateInt(root + ".amount", config.get("amount"), problems, false, true, "amount");
+// TaskUtils.configValidateInt(root + ".data", config.get("data"), problems, true, false, "data");
return problems;
}
diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/DealDamageTaskType.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/DealDamageTaskType.java
index 537e9fad..4d2b7e89 100644
--- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/DealDamageTaskType.java
+++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/DealDamageTaskType.java
@@ -28,14 +28,18 @@ public final class DealDamageTaskType extends BukkitTaskType {
public DealDamageTaskType(BukkitQuestsPlugin plugin) {
super("dealdamage", TaskUtils.TASK_ATTRIBUTION_STRING, "Deal a certain amount of damage.");
this.plugin = plugin;
+
+ super.addConfigValidator(TaskUtils.useRequiredConfigValidator(this, "amount"));
+ super.addConfigValidator(TaskUtils.useIntegerConfigValidator(this, "amount"));
+ super.addConfigValidator(TaskUtils.useBooleanConfigValidator(this, "allow-only-creatures"));
}
@Override
public @NotNull List<ConfigProblem> validateConfig(@NotNull String root, @NotNull HashMap<String, Object> config) {
ArrayList<ConfigProblem> problems = new ArrayList<>();
- if (TaskUtils.configValidateExists(root + ".amount", config.get("amount"), problems, "amount", super.getType()))
- TaskUtils.configValidateInt(root + ".amount", config.get("amount"), problems, false, true, "amount");
- TaskUtils.configValidateBoolean(root + ".allow-only-creatures", config.get("allow-only-creatures"), problems, true, "allow-only-creatures");
+// if (TaskUtils.configValidateExists(root + ".amount", config.get("amount"), problems, "amount", super.getType()))
+// TaskUtils.configValidateInt(root + ".amount", config.get("amount"), problems, false, true, "amount");
+// TaskUtils.configValidateBoolean(root + ".allow-only-creatures", config.get("allow-only-creatures"), problems, true, "allow-only-creatures");
return problems;
}
diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/DistancefromTaskType.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/DistancefromTaskType.java
index ae66a90d..15f35a66 100644
--- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/DistancefromTaskType.java
+++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/DistancefromTaskType.java
@@ -29,19 +29,28 @@ public final class DistancefromTaskType extends BukkitTaskType {
public DistancefromTaskType(BukkitQuestsPlugin plugin) {
super("distancefrom", TaskUtils.TASK_ATTRIBUTION_STRING, "Distance yourself from a set of co-ordinates.");
this.plugin = plugin;
+
+ super.addConfigValidator(TaskUtils.useRequiredConfigValidator(this, "x"));
+ super.addConfigValidator(TaskUtils.useRequiredConfigValidator(this, "y"));
+ super.addConfigValidator(TaskUtils.useRequiredConfigValidator(this, "z"));
+ super.addConfigValidator(TaskUtils.useRequiredConfigValidator(this, "distance"));
+ super.addConfigValidator(TaskUtils.useIntegerConfigValidator(this, "x"));
+ super.addConfigValidator(TaskUtils.useIntegerConfigValidator(this, "y"));
+ super.addConfigValidator(TaskUtils.useIntegerConfigValidator(this, "z"));
+ super.addConfigValidator(TaskUtils.useIntegerConfigValidator(this, "distance"));
}
@Override
public @NotNull List<ConfigProblem> validateConfig(@NotNull String root, @NotNull HashMap<String, Object> config) {
ArrayList<ConfigProblem> problems = new ArrayList<>();
- if (TaskUtils.configValidateExists(root + ".x", config.get("x"), problems, "x", super.getType()))
- TaskUtils.configValidateInt(root + ".x", config.get("x"), problems, false, false, "x");
- if (TaskUtils.configValidateExists(root + ".y", config.get("y"), problems, "y", super.getType()))
- TaskUtils.configValidateInt(root + ".y", config.get("y"), problems, false, false, "y");
- if (TaskUtils.configValidateExists(root + ".z", config.get("z"), problems, "z", super.getType()))
- TaskUtils.configValidateInt(root + ".z", config.get("z"), problems, false, false, "z");
- if (TaskUtils.configValidateExists(root + ".distance", config.get("distance"), problems, "distance", super.getType()))
- TaskUtils.configValidateInt(root + ".distance", config.get("distance"), problems, false, true, "distance");
+// if (TaskUtils.configValidateExists(root + ".x", config.get("x"), problems, "x", super.getType()))
+// TaskUtils.configValidateInt(root + ".x", config.get("x"), problems, false, false, "x");
+// if (TaskUtils.configValidateExists(root + ".y", config.get("y"), problems, "y", super.getType()))
+// TaskUtils.configValidateInt(root + ".y", config.get("y"), problems, false, false, "y");
+// if (TaskUtils.configValidateExists(root + ".z", config.get("z"), problems, "z", super.getType()))
+// TaskUtils.configValidateInt(root + ".z", config.get("z"), problems, false, false, "z");
+// if (TaskUtils.configValidateExists(root + ".distance", config.get("distance"), problems, "distance", super.getType()))
+// TaskUtils.configValidateInt(root + ".distance", config.get("distance"), problems, false, true, "distance");
return problems;
}
diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/EnchantingTaskType.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/EnchantingTaskType.java
index 06ddd019..975fe0b2 100644
--- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/EnchantingTaskType.java
+++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/EnchantingTaskType.java
@@ -26,13 +26,16 @@ public final class EnchantingTaskType extends BukkitTaskType {
public EnchantingTaskType(BukkitQuestsPlugin plugin) {
super("enchanting", TaskUtils.TASK_ATTRIBUTION_STRING, "Enchant a certain amount of items.");
this.plugin = plugin;
+
+ super.addConfigValidator(TaskUtils.useRequiredConfigValidator(this, "amount"));
+ super.addConfigValidator(TaskUtils.useIntegerConfigValidator(this, "amount"));
}
@Override
public @NotNull List<ConfigProblem> validateConfig(@NotNull String root, @NotNull HashMap<String, Object> config) {
ArrayList<ConfigProblem> problems = new ArrayList<>();
- if (TaskUtils.configValidateExists(root + ".amount", config.get("amount"), problems, "amount", super.getType()))
- TaskUtils.configValidateInt(root + ".amount", config.get("amount"), problems, false, true, "amount");
+// if (TaskUtils.configValidateExists(root + ".amount", config.get("amount"), problems, "amount", super.getType()))
+// TaskUtils.configValidateInt(root + ".amount", config.get("amount"), problems, false, true, "amount");
return problems;
}
diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/ExpEarnTaskType.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/ExpEarnTaskType.java
index 33983ef3..63867b26 100644
--- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/ExpEarnTaskType.java
+++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/ExpEarnTaskType.java
@@ -26,13 +26,16 @@ public final class ExpEarnTaskType extends BukkitTaskType {
public ExpEarnTaskType(BukkitQuestsPlugin plugin) {
super("expearn", TaskUtils.TASK_ATTRIBUTION_STRING, "Earn a set amount of exp.");
this.plugin = plugin;
+
+ super.addConfigValidator(TaskUtils.useRequiredConfigValidator(this, "amount"));
+ super.addConfigValidator(TaskUtils.useIntegerConfigValidator(this, "amount"));
}
@Override
public @NotNull List<ConfigProblem> validateConfig(@NotNull String root, @NotNull HashMap<String, Object> config) {
ArrayList<ConfigProblem> problems = new ArrayList<>();
- if (TaskUtils.configValidateExists(root + ".amount", config.get("amount"), problems, "amount", super.getType()))
- TaskUtils.configValidateInt(root + ".amount", config.get("amount"), problems, false, true, "amount");
+// if (TaskUtils.configValidateExists(root + ".amount", config.get("amount"), problems, "amount", super.getType()))
+// TaskUtils.configValidateInt(root + ".amount", config.get("amount"), problems, false, true, "amount");
return problems;
}
diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/FarmingCertainTaskType.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/FarmingCertainTaskType.java
index 042c81a3..282dc1ba 100644
--- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/FarmingCertainTaskType.java
+++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/FarmingCertainTaskType.java
@@ -36,40 +36,45 @@ public final class FarmingCertainTaskType extends BukkitTaskType {
Class.forName("org.bukkit.event.player.PlayerHarvestBlockEvent");
plugin.getServer().getPluginManager().registerEvents(new FarmingCertainTaskType.HarvestBlockListener(), plugin);
} catch (ClassNotFoundException ignored) { } // server version cannot support event
+
+ super.addConfigValidator(TaskUtils.useRequiredConfigValidator(this, "amount"));
+ super.addConfigValidator(TaskUtils.useIntegerConfigValidator(this, "amount"));
+ super.addConfigValidator(TaskUtils.useRequiredConfigValidator(this, "block", "blocks"));
+ super.addConfigValidator(TaskUtils.useMaterialListConfigValidator(this, "block", "blocks"));
}
@Override
public @NotNull List<ConfigProblem> validateConfig(@NotNull String root, @NotNull HashMap<String, Object> config) {
ArrayList<ConfigProblem> problems = new ArrayList<>();
- if (TaskUtils.configValidateExists(root + ".amount", config.get("amount"), problems, "amount", super.getType()))
- TaskUtils.configValidateInt(root + ".amount", config.get("amount"), problems, false, true, "amount");
- if (config.get("block") == null && config.get("blocks") == null) {
- TaskUtils.configValidateExists(root + ".block", config.get("block"), problems, "block", super.getType());
- } else {
- Object configBlock;
- String source;
- if (config.containsKey("block")) {
- source = "block";
- } else {
- source = "blocks";
- }
- configBlock = config.get(source);
- List<String> checkBlocks = new ArrayList<>();
- if (configBlock instanceof List) {
- checkBlocks.addAll((List) configBlock);
- } else {
- checkBlocks.add(String.valueOf(configBlock));
- }
-
- for (String materialName : checkBlocks) {
- if (Material.getMaterial(String.valueOf(materialName)) == null) {
- problems.add(new ConfigProblem(ConfigProblem.ConfigProblemType.WARNING,
- ConfigProblemDescriptions.UNKNOWN_MATERIAL.getDescription(materialName),
- ConfigProblemDescriptions.UNKNOWN_MATERIAL.getExtendedDescription(materialName),
- root + "." + source));
- }
- }
- }
+// if (TaskUtils.configValidateExists(root + ".amount", config.get("amount"), problems, "amount", super.getType()))
+// TaskUtils.configValidateInt(root + ".amount", config.get("amount"), problems, false, true, "amount");
+// if (config.get("block") == null && config.get("blocks") == null) {
+// TaskUtils.configValidateExists(root + ".block", config.get("block"), problems, "block", super.getType());
+// } else {
+// Object configBlock;
+// String source;
+// if (config.containsKey("block")) {
+// source = "block";
+// } else {
+// source = "blocks";
+// }
+// configBlock = config.get(source);
+// List<String> checkBlocks = new ArrayList<>();
+// if (configBlock instanceof List) {
+// checkBlocks.addAll((List) configBlock);
+// } else {
+// checkBlocks.add(String.valueOf(configBlock));
+// }
+//
+// for (String materialName : checkBlocks) {
+// if (Material.getMaterial(String.valueOf(materialName)) == null) {
+// problems.add(new ConfigProblem(ConfigProblem.ConfigProblemType.WARNING,
+// ConfigProblemDescriptions.UNKNOWN_MATERIAL.getDescription(materialName),
+// ConfigProblemDescriptions.UNKNOWN_MATERIAL.getExtendedDescription(materialName),
+// root + "." + source));
+// }
+// }
+// }
return problems;
}
diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/FarmingTaskType.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/FarmingTaskType.java
index 1e5454bf..9b852439 100644
--- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/FarmingTaskType.java
+++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/FarmingTaskType.java
@@ -30,6 +30,9 @@ public final class FarmingTaskType extends BukkitTaskType {
super("farming", TaskUtils.TASK_ATTRIBUTION_STRING, "Break or harvest a set amount of any crop.");
this.plugin = plugin;
+ super.addConfigValidator(TaskUtils.useRequiredConfigValidator(this, "amount"));
+ super.addConfigValidator(TaskUtils.useIntegerConfigValidator(this, "amount"));
+
try {
Class.forName("org.bukkit.event.player.PlayerHarvestBlockEvent");
plugin.getServer().getPluginManager().registerEvents(new FarmingTaskType.HarvestBlockListener(), plugin);
@@ -39,8 +42,8 @@ public final class FarmingTaskType extends BukkitTaskType {
@Override
public @NotNull List<ConfigProblem> validateConfig(@NotNull String root, @NotNull HashMap<String, Object> config) {
ArrayList<ConfigProblem> problems = new ArrayList<>();
- if (TaskUtils.configValidateExists(root + ".amount", config.get("amount"), problems, "amount", super.getType()))
- TaskUtils.configValidateInt(root + ".amount", config.get("amount"), problems, false, true, "amount");
+// if (TaskUtils.configValidateExists(root + ".amount", config.get("amount"), problems, "amount", super.getType()))
+// TaskUtils.configValidateInt(root + ".amount", config.get("amount"), problems, false, true, "amount");
return problems;
}
diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/FishingCertainTaskType.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/FishingCertainTaskType.java
index 44bde9f5..6c53899c 100644
--- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/FishingCertainTaskType.java
+++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/FishingCertainTaskType.java
@@ -34,6 +34,12 @@ public final class FishingCertainTaskType extends BukkitTaskType {
public FishingCertainTaskType(BukkitQuestsPlugin plugin) {
super("fishingcertain", TaskUtils.TASK_ATTRIBUTION_STRING, "Catch a set amount of a specific item from the sea.");
this.plugin = plugin;
+
+ super.addConfigValidator(TaskUtils.useRequiredConfigValidator(this, "amount"));
+ super.addConfigValidator(TaskUtils.useIntegerConfigValidator(this, "amount"));
+ super.addConfigValidator(TaskUtils.useRequiredConfigValidator(this, "item"));
+ super.addConfigValidator(TaskUtils.useItemStackConfigValidator(this, "item"));
+ super.addConfigValidator(TaskUtils.useIntegerConfigValidator(this, "data"));
}
@Override
@@ -44,17 +50,17 @@ public final class FishingCertainTaskType extends BukkitTaskType {
@Override
public @NotNull List<ConfigProblem> validateConfig(@NotNull String root, @NotNull HashMap<String, Object> config) {
ArrayList<ConfigProblem> problems = new ArrayList<>();
- if (TaskUtils.configValidateExists(root + ".item", config.get("item"), problems, "item", super.getType())) {
- if (Material.getMaterial(String.valueOf(config.get("item"))) == null) {
- problems.add(new ConfigProblem(ConfigProblem.ConfigProblemType.WARNING,
- ConfigProblemDescriptions.UNKNOWN_MATERIAL.getDescription(String.valueOf(config.get("item"))),
- ConfigProblemDescriptions.UNKNOWN_MATERIAL.getExtendedDescription(String.valueOf(config.get("item"))),
- root + ".item.item"));
- }
- }
- if (TaskUtils.configValidateExists(root + ".amount", config.get("amount"), problems, "amount", super.getType()))
- TaskUtils.configValidateInt(root + ".amount", config.get("amount"), problems, false, true, "amount");
- TaskUtils.configValidateInt(root + ".data", config.get("data"), problems, true, false, "data");
+// if (TaskUtils.configValidateExists(root + ".item", config.get("item"), problems, "item", super.getType())) {
+// if (Material.getMaterial(String.valueOf(config.get("item"))) == null) {
+// problems.add(new ConfigProblem(ConfigProblem.ConfigProblemType.WARNING,
+// ConfigProblemDescriptions.UNKNOWN_MATERIAL.getDescription(String.valueOf(config.get("item"))),
+// ConfigProblemDescriptions.UNKNOWN_MATERIAL.getExtendedDescription(String.valueOf(config.get("item"))),
+// root + ".item.item"));
+// }
+// }
+// if (TaskUtils.configValidateExists(root + ".amount", config.get("amount"), problems, "amount", super.getType()))
+// TaskUtils.configValidateInt(root + ".amount", config.get("amount"), problems, false, true, "amount");
+// TaskUtils.configValidateInt(root + ".data", config.get("data"), problems, true, false, "data");
return problems;
}
diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/FishingTaskType.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/FishingTaskType.java
index 040b5260..b2e7f861 100644
--- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/FishingTaskType.java
+++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/FishingTaskType.java
@@ -26,13 +26,16 @@ public final class FishingTaskType extends BukkitTaskType {
public FishingTaskType(BukkitQuestsPlugin plugin) {
super("fishing", TaskUtils.TASK_ATTRIBUTION_STRING, "Catch a set amount of items from the sea.");
this.plugin = plugin;
+
+ super.addConfigValidator(TaskUtils.useRequiredConfigValidator(this, "amount"));
+ super.addConfigValidator(TaskUtils.useIntegerConfigValidator(this, "amount"));
}
@Override
public @NotNull List<ConfigProblem> validateConfig(@NotNull String root, @NotNull HashMap<String, Object> config) {
ArrayList<ConfigProblem> problems = new ArrayList<>();
- if (TaskUtils.configValidateExists(root + ".amount", config.get("amount"), problems, "amount", super.getType()))
- TaskUtils.configValidateInt(root + ".amount", config.get("amount"), problems, false, true, "amount");
+// if (TaskUtils.configValidateExists(root + ".amount", config.get("amount"), problems, "amount", super.getType()))
+// TaskUtils.configValidateInt(root + ".amount", config.get("amount"), problems, false, true, "amount");
return problems;
}
diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/InventoryTaskType.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/InventoryTaskType.java
index 898133ec..9fd9d38d 100644
--- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/InventoryTaskType.java
+++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/InventoryTaskType.java
@@ -44,19 +44,27 @@ public final class InventoryTaskType extends BukkitTaskType {
Class.forName("org.bukkit.event.player.PlayerBucketEntityEvent");
plugin.getServer().getPluginManager().registerEvents(new BucketEntityListener(), plugin);
} catch (ClassNotFoundException ignored) { } // server version cannot support event
+
+ super.addConfigValidator(TaskUtils.useRequiredConfigValidator(this, "amount"));
+ super.addConfigValidator(TaskUtils.useIntegerConfigValidator(this, "amount"));
+ super.addConfigValidator(TaskUtils.useRequiredConfigValidator(this, "item"));
+ super.addConfigValidator(TaskUtils.useItemStackConfigValidator(this, "item"));
+ super.addConfigValidator(TaskUtils.useIntegerConfigValidator(this, "data"));
+ super.addConfigValidator(TaskUtils.useBooleanConfigValidator(this, "remove-items-when-complete"));
+ super.addConfigValidator(TaskUtils.useBooleanConfigValidator(this, "allow-partial-completion"));
}
@Override
public @NotNull List<ConfigProblem> validateConfig(@NotNull String root, @NotNull HashMap<String, Object> config) {
ArrayList<ConfigProblem> problems = new ArrayList<>();
- if (TaskUtils.configValidateExists(root + ".item", config.get("item"), problems, "item", super.getType()))
- TaskUtils.configValidateItemStack(root + ".item", config.get("item"), problems, false, "item");
- if (TaskUtils.configValidateExists(root + ".amount", config.get("amount"), problems, "amount", super.getType()))
- TaskUtils.configValidateInt(root + ".amount", config.get("amount"), problems, false, true, "amount");
- TaskUtils.configValidateInt(root + ".data", config.get("data"), problems, true, false, "data");
- TaskUtils.configValidateBoolean(root + ".remove-items-when-complete", config.get("remove-items-when-complete"), problems, true, "remove-items-when-complete", super.getType());
- TaskUtils.configValidateBoolean(root + ".update-progress", config.get("update-progress"), problems, true, "update-progress", super.getType());
- TaskUtils.configValidateBoolean(root + ".allow-partial-completion", config.get("allow-partial-completion"), problems, true, "allow-partial-completion", super.getType());
+// if (TaskUtils.configValidateExists(root + ".item", config.get("item"), problems, "item", super.getType()))
+// TaskUtils.configValidateItemStack(root + ".item", config.get("item"), problems, false, "item");
+// if (TaskUtils.configValidateExists(root + ".amount", config.get("amount"), problems, "amount", super.getType()))
+// TaskUtils.configValidateInt(root + ".amount", config.get("amount"), problems, false, true, "amount");
+// TaskUtils.configValidateInt(root + ".data", config.get("data"), problems, true, false, "data");
+// TaskUtils.configValidateBoolean(root + ".remove-items-when-complete", config.get("remove-items-when-complete"), problems, true, "remove-items-when-complete", super.getType());
+// TaskUtils.configValidateBoolean(root + ".update-progress", config.get("update-progress"), problems, true, "update-progress", super.getType());
+// TaskUtils.configValidateBoolean(root + ".allow-partial-completion", config.get("allow-partial-completion"), problems, true, "allow-partial-completion", super.getType());
return problems;
}
diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/MilkingTaskType.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/MilkingTaskType.java
index 811f528a..e9bb4b60 100644
--- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/MilkingTaskType.java
+++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/MilkingTaskType.java
@@ -29,13 +29,16 @@ public final class MilkingTaskType extends BukkitTaskType {
public MilkingTaskType(BukkitQuestsPlugin plugin) {
super("milking", TaskUtils.TASK_ATTRIBUTION_STRING, "Milk a set amount of cows.");
this.plugin = plugin;
+
+ super.addConfigValidator(TaskUtils.useRequiredConfigValidator(this, "amount"));
+ super.addConfigValidator(TaskUtils.useIntegerConfigValidator(this, "amount"));
}
@Override
public @NotNull List<ConfigProblem> validateConfig(@NotNull String root, @NotNull HashMap<String, Object> config) {
ArrayList<ConfigProblem> problems = new ArrayList<>();
- if (TaskUtils.configValidateExists(root + ".amount", config.get("amount"), problems, "amount", super.getType()))
- TaskUtils.configValidateInt(root + ".amount", config.get("amount"), problems, false, true, "amount");
+// if (TaskUtils.configValidateExists(root + ".amount", config.get("amount"), problems, "amount", super.getType()))
+// TaskUtils.configValidateInt(root + ".amount", config.get("amount"), problems, false, true, "amount");
return problems;
}
diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/MiningCertainTaskType.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/MiningCertainTaskType.java
index bfb746d7..65089acd 100644
--- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/MiningCertainTaskType.java
+++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/MiningCertainTaskType.java
@@ -30,46 +30,56 @@ public final class MiningCertainTaskType extends BukkitTaskType {
public MiningCertainTaskType(BukkitQuestsPlugin plugin) {
super("blockbreakcertain", TaskUtils.TASK_ATTRIBUTION_STRING, "Break a set amount of a specific block.");
this.plugin = plugin;
+
+ super.addConfigValidator(TaskUtils.useRequiredConfigValidator(this, "amount"));
+ super.addConfigValidator(TaskUtils.useIntegerConfigValidator(this, "amount"));
+ super.addConfigValidator(TaskUtils.useRequiredConfigValidator(this, "block", "blocks"));
+ super.addConfigValidator(TaskUtils.useMaterialListConfigValidator(this, "block", "blocks"));
+ super.addConfigValidator(TaskUtils.useIntegerConfigValidator(this, "data"));
+ super.addConfigValidator(TaskUtils.useBooleanConfigValidator(this, "check-coreprotect"));
+ super.addConfigValidator(TaskUtils.useIntegerConfigValidator(this, "check-coreprotect-time"));
+ super.addConfigValidator(TaskUtils.useBooleanConfigValidator(this, "reverse-if-placed"));
+ super.addConfigValidator(TaskUtils.useBooleanConfigValidator(this, "use-similar-blocks"));
}
@Override
public @NotNull List<ConfigProblem> validateConfig(@NotNull String root, @NotNull HashMap<String, Object> config) {
ArrayList<ConfigProblem> problems = new ArrayList<>();
- if (TaskUtils.configValidateExists(root + ".amount", config.get("amount"), problems, "amount", super.getType()))
- TaskUtils.configValidateInt(root + ".amount", config.get("amount"), problems, false, true, "amount");
- if (config.get("block") == null && config.get("blocks") == null) {
- TaskUtils.configValidateExists(root + ".block", config.get("block"), problems, "block", super.getType());
- } else {
- Object configBlock;
- String source;
- if (config.containsKey("block")) {
- source = "block";
- } else {
- source = "blocks";
- }
- configBlock = config.get(source);
- List<String> checkBlocks = new ArrayList<>();
- if (configBlock instanceof List) {
- checkBlocks.addAll((List) configBlock);
- } else {
- checkBlocks.add(String.valueOf(configBlock));
- }
-
- for (String materialName : checkBlocks) {
- String[] split = materialName.split(":");
- if (Material.getMaterial(String.valueOf(split[0])) == null) {
- problems.add(new ConfigProblem(ConfigProblem.ConfigProblemType.WARNING,
- ConfigProblemDescriptions.UNKNOWN_MATERIAL.getDescription(materialName),
- ConfigProblemDescriptions.UNKNOWN_MATERIAL.getExtendedDescription(materialName),
- root + "." + source));
- }
- }
- }
- TaskUtils.configValidateBoolean(root + ".reverse-if-placed", config.get("reverse-if-placed"), problems, true,"reverse-if-placed");
- TaskUtils.configValidateBoolean(root + ".check-coreprotect", config.get("check-coreprotect"), problems, true,"check-coreprotect");
- TaskUtils.configValidateInt(root + ".check-coreprotect-time", config.get("check-coreprotect-time"), problems, true,true, "check-coreprotect-time");
- TaskUtils.configValidateBoolean(root + ".use-similar-blocks", config.get("use-similar-blocks"), problems, true,"use-similar-blocks");
- TaskUtils.configValidateInt(root + ".data", config.get("data"), problems, true,true, "data");
+// if (TaskUtils.configValidateExists(root + ".amount", config.get("amount"), problems, "amount", super.getType()))
+// TaskUtils.configValidateInt(root + ".amount", config.get("amount"), problems, false, true, "amount");
+// if (config.get("block") == null && config.get("blocks") == null) {
+// TaskUtils.configValidateExists(root + ".block", config.get("block"), problems, "block", super.getType());
+// } else {
+// Object configBlock;
+// String source;
+// if (config.containsKey("block")) {
+// source = "block";
+// } else {
+// source = "blocks";
+// }
+// configBlock = config.get(source);
+// List<String> checkBlocks = new ArrayList<>();
+// if (configBlock instanceof List) {
+// checkBlocks.addAll((List) configBlock);
+// } else {
+// checkBlocks.add(String.valueOf(configBlock));
+// }
+//
+// for (String materialName : checkBlocks) {
+// String[] split = materialName.split(":");
+// if (Material.getMaterial(String.valueOf(split[0])) == null) {
+// problems.add(new ConfigProblem(ConfigProblem.ConfigProblemType.WARNING,
+// ConfigProblemDescriptions.UNKNOWN_MATERIAL.getDescription(materialName),
+// ConfigProblemDescriptions.UNKNOWN_MATERIAL.getExtendedDescription(materialName),
+// root + "." + source));
+// }
+// }
+// }
+// TaskUtils.configValidateBoolean(root + ".reverse-if-placed", config.get("reverse-if-placed"), problems, true,"reverse-if-placed");
+// TaskUtils.configValidateBoolean(root + ".check-coreprotect", config.get("check-coreprotect"), problems, true,"check-coreprotect");
+// TaskUtils.configValidateInt(root + ".check-coreprotect-time", config.get("check-coreprotect-time"), problems, true,true, "check-coreprotect-time");
+// TaskUtils.configValidateBoolean(root + ".use-similar-blocks", config.get("use-similar-blocks"), problems, true,"use-similar-blocks");
+// TaskUtils.configValidateInt(root + ".data", config.get("data"), problems, true,true, "data");
return problems;
}
diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/MobkillingCertainTaskType.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/MobkillingCertainTaskType.java
index 74abe2d9..3284859f 100644
--- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/MobkillingCertainTaskType.java
+++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/MobkillingCertainTaskType.java
@@ -30,6 +30,11 @@ public final class MobkillingCertainTaskType extends BukkitTaskType {
public MobkillingCertainTaskType(BukkitQuestsPlugin plugin) {
super("mobkillingcertain", TaskUtils.TASK_ATTRIBUTION_STRING, "Kill a set amount of a specific entity type.");
this.plugin = plugin;
+
+ super.addConfigValidator(TaskUtils.useRequiredConfigValidator(this, "amount"));
+ super.addConfigValidator(TaskUtils.useIntegerConfigValidator(this, "amount"));
+ super.addConfigValidator(TaskUtils.useEntityListConfigValidator(this, "mob", "mobs"));
+ super.addConfigValidator(TaskUtils.useBooleanConfigValidator(this, "hostile"));
}
@Override
diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/MobkillingTaskType.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/MobkillingTaskType.java
index 9beac354..90a55f65 100644
--- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/MobkillingTaskType.java
+++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/MobkillingTaskType.java
@@ -29,6 +29,10 @@ public final class MobkillingTaskType extends BukkitTaskType {
public MobkillingTaskType(BukkitQuestsPlugin plugin) {
super("mobkilling", TaskUtils.TASK_ATTRIBUTION_STRING, "Kill a set amount of entities.");
this.plugin = plugin;
+
+ super.addConfigValidator(TaskUtils.useRequiredConfigValidator(this, "amount"));
+ super.addConfigValidator(TaskUtils.useIntegerConfigValidator(this, "amount"));
+ super.addConfigValidator(TaskUtils.useBooleanConfigValidator(this, "hostile"));
}
@Override
diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/PermissionTaskType.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/PermissionTaskType.java
index 2e86db85..ebe98d7d 100644
--- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/PermissionTaskType.java
+++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/PermissionTaskType.java
@@ -21,6 +21,8 @@ public final class PermissionTaskType extends BukkitTaskType {
public PermissionTaskType(BukkitQuestsPlugin plugin) {
super("permission", TaskUtils.TASK_ATTRIBUTION_STRING, "Test if a player has a permission");
this.plugin = plugin;
+
+ super.addConfigValidator(TaskUtils.useRequiredConfigValidator(this, "permission"));
}
@Override
diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/PlayerkillingTaskType.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/PlayerkillingTaskType.java
index 38fe8b6b..58467a34 100644
--- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/PlayerkillingTaskType.java
+++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/PlayerkillingTaskType.java
@@ -27,6 +27,9 @@ public final class PlayerkillingTaskType extends BukkitTaskType {
public PlayerkillingTaskType(BukkitQuestsPlugin plugin) {
super("playerkilling", TaskUtils.TASK_ATTRIBUTION_STRING, "Kill a set amount of players.");
this.plugin = plugin;
+
+ super.addConfigValidator(TaskUtils.useRequiredConfigValidator(this, "amount"));
+ super.addConfigValidator(TaskUtils.useIntegerConfigValidator(this, "amount"));
}
@Override
diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/PlaytimeTaskType.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/PlaytimeTaskType.java
index ebb92cb8..3a12c090 100644
--- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/PlaytimeTaskType.java
+++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/PlaytimeTaskType.java
@@ -27,6 +27,9 @@ public final class PlaytimeTaskType extends BukkitTaskType {
public PlaytimeTaskType(BukkitQuestsPlugin plugin) {
super("playtime", TaskUtils.TASK_ATTRIBUTION_STRING, "Track the amount of playing time a user has been on");
this.plugin = plugin;
+
+ super.addConfigValidator(TaskUtils.useRequiredConfigValidator(this, "minutes"));
+ super.addConfigValidator(TaskUtils.useIntegerConfigValidator(this, "minutes"));
}
@Override
diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/PositionTaskType.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/PositionTaskType.java
index 666e8159..e58142a1 100644
--- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/PositionTaskType.java
+++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/PositionTaskType.java
@@ -29,6 +29,16 @@ public final class PositionTaskType extends BukkitTaskType {
public PositionTaskType(BukkitQuestsPlugin plugin) {
super("position", TaskUtils.TASK_ATTRIBUTION_STRING, "Reach a set of co-ordinates.");
this.plugin = plugin;
+
+ super.addConfigValidator(TaskUtils.useRequiredConfigValidator(this, "x"));
+ super.addConfigValidator(TaskUtils.useRequiredConfigValidator(this, "y"));
+ super.addConfigValidator(TaskUtils.useRequiredConfigValidator(this, "z"));
+ super.addConfigValidator(TaskUtils.useRequiredConfigValidator(this, "distance"));
+ super.addConfigValidator(TaskUtils.useIntegerConfigValidator(this, "x"));
+ super.addConfigValidator(TaskUtils.useIntegerConfigValidator(this, "y"));
+ super.addConfigValidator(TaskUtils.useIntegerConfigValidator(this, "z"));
+ super.addConfigValidator(TaskUtils.useIntegerConfigValidator(this, "distance"));
+ super.addConfigValidator(TaskUtils.useIntegerConfigValidator(this, "distance-padding"));
}
@Override
diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/ShearingTaskType.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/ShearingTaskType.java
index ccee2b35..4d02e336 100644
--- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/ShearingTaskType.java
+++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/ShearingTaskType.java
@@ -27,13 +27,16 @@ public final class ShearingTaskType extends BukkitTaskType {
public ShearingTaskType(BukkitQuestsPlugin plugin) {
super("shearing", TaskUtils.TASK_ATTRIBUTION_STRING, "Shear a set amount of sheep.");
this.plugin = plugin;
+
+ super.addConfigValidator(TaskUtils.useRequiredConfigValidator(this, "amount"));
+ super.addConfigValidator(TaskUtils.useIntegerConfigValidator(this, "amount"));
}
@Override
public @NotNull List<ConfigProblem> validateConfig(@NotNull String root, @NotNull HashMap<String, Object> config) {
ArrayList<ConfigProblem> problems = new ArrayList<>();
- if (TaskUtils.configValidateExists(root + ".amount", config.get("amount"), problems, "amount", super.getType()))
- TaskUtils.configValidateInt(root + ".amount", config.get("amount"), problems, false, true, "amount");
+// if (TaskUtils.configValidateExists(root + ".amount", config.get("amount"), problems, "amount", super.getType()))
+// TaskUtils.configValidateInt(root + ".amount", config.get("amount"), problems, false, true, "amount");
return problems;
}
diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/SmeltingCertainTaskType.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/SmeltingCertainTaskType.java
index f737bd89..5f8ad8dd 100644
--- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/SmeltingCertainTaskType.java
+++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/SmeltingCertainTaskType.java
@@ -37,16 +37,22 @@ public final class SmeltingCertainTaskType extends BukkitTaskType {
public SmeltingCertainTaskType(BukkitQuestsPlugin plugin) {
super("smeltingcertain", TaskUtils.TASK_ATTRIBUTION_STRING, "Smelt or cook a set amount of certain item.");
this.plugin = plugin;
+
+ super.addConfigValidator(TaskUtils.useRequiredConfigValidator(this, "item"));
+ super.addConfigValidator(TaskUtils.useItemStackConfigValidator(this, "item"));
+ super.addConfigValidator(TaskUtils.useRequiredConfigValidator(this, "amount"));
+ super.addConfigValidator(TaskUtils.useIntegerConfigValidator(this, "amount"));
+ super.addConfigValidator(TaskUtils.useIntegerConfigValidator(this, "data"));
}
@Override
public @NotNull List<ConfigProblem> validateConfig(@NotNull String root, @NotNull HashMap<String, Object> config) {
ArrayList<ConfigProblem> problems = new ArrayList<>();
- if (TaskUtils.configValidateExists(root + ".item", config.get("item"), problems, "item", super.getType()))
- TaskUtils.configValidateItemStack(root + ".item", config.get("item"), problems, false, "item");
- if (TaskUtils.configValidateExists(root + ".amount", config.get("amount"), problems, "amount", super.getType()))
- TaskUtils.configValidateInt(root + ".amount", config.get("amount"), problems, false, true, "amount");
- TaskUtils.configValidateInt(root + ".data", config.get("data"), problems, true, false, "data");
+// if (TaskUtils.configValidateExists(root + ".item", config.get("item"), problems, "item", super.getType()))
+// TaskUtils.configValidateItemStack(root + ".item", config.get("item"), problems, false, "item");
+// if (TaskUtils.configValidateExists(root + ".amount", config.get("amount"), problems, "amount", super.getType()))
+// TaskUtils.configValidateInt(root + ".amount", config.get("amount"), problems, false, true, "amount");
+// TaskUtils.configValidateInt(root + ".data", config.get("data"), problems, true, false, "data");
return problems;
}
diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/TamingCertainTaskType.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/TamingCertainTaskType.java
deleted file mode 100644
index 24a7128b..00000000
--- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/TamingCertainTaskType.java
+++ /dev/null
@@ -1,98 +0,0 @@
-package com.leonardobishop.quests.bukkit.tasktype.type;
-
-import com.leonardobishop.quests.bukkit.BukkitQuestsPlugin;
-import com.leonardobishop.quests.bukkit.tasktype.BukkitTaskType;
-import com.leonardobishop.quests.bukkit.util.TaskUtils;
-import com.leonardobishop.quests.common.config.ConfigProblem;
-import com.leonardobishop.quests.common.config.ConfigProblemDescriptions;
-import com.leonardobishop.quests.common.player.QPlayer;
-import com.leonardobishop.quests.common.player.questprogressfile.QuestProgress;
-import com.leonardobishop.quests.common.player.questprogressfile.TaskProgress;
-import com.leonardobishop.quests.common.quest.Quest;
-import com.leonardobishop.quests.common.quest.Task;
-import org.bukkit.entity.EntityType;
-import org.bukkit.entity.Player;
-import org.bukkit.event.EventHandler;
-import org.bukkit.event.EventPriority;
-import org.bukkit.event.entity.EntityTameEvent;
-import org.jetbrains.annotations.NotNull;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-
-public final class TamingCertainTaskType extends BukkitTaskType {
-
- private final BukkitQuestsPlugin plugin;
-
- public TamingCertainTaskType(BukkitQuestsPlugin plugin) {
- super("tamingcertain", TaskUtils.TASK_ATTRIBUTION_STRING, "Tame a set amount of certain animals.");
- this.plugin = plugin;
- }
-
- @Override
- public @NotNull List<ConfigProblem> validateConfig(@NotNull String root, @NotNull HashMap<String, Object> config) {
- ArrayList<ConfigProblem> problems = new ArrayList<>();
- if (TaskUtils.configValidateExists(root + ".amount", config.get("amount"), problems, "amount", super.getType()))
- TaskUtils.configValidateInt(root + ".amount", config.get("amount"), problems, false, true, "amount");
- if (TaskUtils.configValidateExists(root + ".mob", config.get("mob"), problems, "mob", super.getType())) {
- try {
- EntityType.valueOf(String.valueOf(config.get("mob")));
- } catch (IllegalArgumentException ex) {
- problems.add(new ConfigProblem(ConfigProblem.ConfigProblemType.WARNING,
- ConfigProblemDescriptions.UNKNOWN_ENTITY_TYPE.getDescription(String.valueOf(config.get("mob"))),
- ConfigProblemDescriptions.UNKNOWN_ENTITY_TYPE.getExtendedDescription(String.valueOf(config.get("mob"))),
- root + ".mob"));
- }
- }
- return problems;
- }
-
- @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
- public void onEntityTame(EntityTameEvent event) {
- if (!(event.getOwner() instanceof Player)) {
- return;
- }
-
- Player player = (Player) event.getOwner();
-
- if (player.hasMetadata("NPC")) return;
-
- QPlayer qPlayer = plugin.getPlayerManager().getPlayer(player.getUniqueId());
- if (qPlayer == null) {
- return;
- }
-
- for (TaskUtils.PendingTask pendingTask : TaskUtils.getApplicableTasks(player.getPlayer(), qPlayer, this, TaskUtils.TaskConstraint.WORLD)) {
- Quest quest = pendingTask.quest();
- Task task = pendingTask.task();
- TaskProgress taskProgress = pendingTask.taskProgress();
-
- super.debug("Played tamed entity", quest.getId(), task.getId(), player.getUniqueId());
-
- EntityType entityType;
- try {
- entityType = EntityType.valueOf((String) task.getConfigValue("mob"));
- } catch (IllegalArgumentException ex) {
- super.debug("Invalid entity in configuration, continuing...", quest.getId(), task.getId(), player.getUniqueId());
- continue;
- }
-
- if (event.getEntity().getType() != entityType) {
- super.debug("Tamed entity is not the correct type, continuing...", quest.getId(), task.getId(), player.getUniqueId());
- continue;
- }
-
- int progress = TaskUtils.incrementIntegerTaskProgress(taskProgress);
- super.debug("Incrementing task progress (now " + progress + ")", quest.getId(), task.getId(), player.getUniqueId());
-
- int amount = (int) task.getConfigValue("amount");
-
- if (progress >= amount) {
- super.debug("Marking task as complete", quest.getId(), task.getId(), player.getUniqueId());
- taskProgress.setCompleted(true);
- }
- }
- }
-
-}
diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/TamingTaskType.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/TamingTaskType.java
index 976c875c..8b9c2f66 100644
--- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/TamingTaskType.java
+++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/TamingTaskType.java
@@ -4,11 +4,12 @@ import com.leonardobishop.quests.bukkit.BukkitQuestsPlugin;
import com.leonardobishop.quests.bukkit.tasktype.BukkitTaskType;
import com.leonardobishop.quests.bukkit.util.TaskUtils;
import com.leonardobishop.quests.common.config.ConfigProblem;
+import com.leonardobishop.quests.common.config.ConfigProblemDescriptions;
import com.leonardobishop.quests.common.player.QPlayer;
-import com.leonardobishop.quests.common.player.questprogressfile.QuestProgress;
import com.leonardobishop.quests.common.player.questprogressfile.TaskProgress;
import com.leonardobishop.quests.common.quest.Quest;
import com.leonardobishop.quests.common.quest.Task;
+import org.bukkit.entity.EntityType;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
@@ -24,7 +25,7 @@ public final class TamingTaskType extends BukkitTaskType {
private final BukkitQuestsPlugin plugin;
public TamingTaskType(BukkitQuestsPlugin plugin) {
- super("taming", TaskUtils.TASK_ATTRIBUTION_STRING, "Tame a set amount of any animals.");
+ super("taming", TaskUtils.TASK_ATTRIBUTION_STRING, "Tame a set amount of certain animals.");
this.plugin = plugin;
}
@@ -33,6 +34,16 @@ public final class TamingTaskType extends BukkitTaskType {
ArrayList<ConfigProblem> problems = new ArrayList<>();
if (TaskUtils.configValidateExists(root + ".amount", config.get("amount"), problems, "amount", super.getType()))
TaskUtils.configValidateInt(root + ".amount", config.get("amount"), problems, false, true, "amount");
+ if (TaskUtils.configValidateExists(root + ".mob", config.get("mob"), problems, "mob", super.getType())) {
+ try {
+ EntityType.valueOf(String.valueOf(config.get("mob")));
+ } catch (IllegalArgumentException ex) {
+ problems.add(new ConfigProblem(ConfigProblem.ConfigProblemType.WARNING,
+ ConfigProblemDescriptions.UNKNOWN_ENTITY_TYPE.getDescription(String.valueOf(config.get("mob"))),
+ ConfigProblemDescriptions.UNKNOWN_ENTITY_TYPE.getExtendedDescription(String.valueOf(config.get("mob"))),
+ root + ".mob"));
+ }
+ }
return problems;
}
@@ -56,19 +67,30 @@ public final class TamingTaskType extends BukkitTaskType {
Task task = pendingTask.task();
TaskProgress taskProgress = pendingTask.taskProgress();
- int tamesNeeded = (int) task.getConfigValue("amount");
+ super.debug("Played tamed entity", quest.getId(), task.getId(), player.getUniqueId());
- int progress;
- if (taskProgress.getProgress() == null) {
- progress = 0;
- } else {
- progress = (int) taskProgress.getProgress();
+ if (task.hasConfigKey("mob")) {
+ EntityType entityType;
+ try {
+ entityType = EntityType.valueOf((String) task.getConfigValue("mob"));
+ } catch (IllegalArgumentException ex) {
+ super.debug("Invalid entity in configuration, continuing...", quest.getId(), task.getId(), player.getUniqueId());
+ continue;
+ }
+
+ if (event.getEntity().getType() != entityType) {
+ super.debug("Tamed entity is not the correct type, continuing...", quest.getId(), task.getId(), player.getUniqueId());
+ continue;
+ }
}
- progress += 1;
- taskProgress.setProgress(progress);
+ int progress = TaskUtils.incrementIntegerTaskProgress(taskProgress);
+ super.debug("Incrementing task progress (now " + progress + ")", quest.getId(), task.getId(), player.getUniqueId());
+
+ int amount = (int) task.getConfigValue("amount");
- if (progress >= tamesNeeded) {
+ if (progress >= amount) {
+ super.debug("Marking task as complete", quest.getId(), task.getId(), player.getUniqueId());
taskProgress.setCompleted(true);
}
}
diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/WalkingTaskType.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/WalkingTaskType.java
index e2c47496..491ebd09 100644
--- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/WalkingTaskType.java
+++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/WalkingTaskType.java
@@ -5,7 +5,6 @@ import com.leonardobishop.quests.bukkit.tasktype.BukkitTaskType;
import com.leonardobishop.quests.bukkit.util.TaskUtils;
import com.leonardobishop.quests.common.config.ConfigProblem;
import com.leonardobishop.quests.common.player.QPlayer;
-import com.leonardobishop.quests.common.player.questprogressfile.QuestProgress;
import com.leonardobishop.quests.common.player.questprogressfile.TaskProgress;
import com.leonardobishop.quests.common.quest.Quest;
import com.leonardobishop.quests.common.quest.Task;
@@ -17,6 +16,7 @@ import org.bukkit.event.player.PlayerMoveEvent;
import org.jetbrains.annotations.NotNull;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
@@ -27,6 +27,22 @@ public final class WalkingTaskType extends BukkitTaskType {
public WalkingTaskType(BukkitQuestsPlugin plugin) {
super("walking", TaskUtils.TASK_ATTRIBUTION_STRING, "Walk a set distance.");
this.plugin = plugin;
+
+ super.addConfigValidator(TaskUtils.useRequiredConfigValidator(this, "distance"));
+ super.addConfigValidator(TaskUtils.useIntegerConfigValidator(this, "distance"));
+ super.addConfigValidator(TaskUtils.useAcceptedValuesConfigValidator(this, Arrays.asList(
+ "boat",
+ "horse",
+ "pig",
+ "minecart",
+ "strider",
+ "sneaking",
+ "walking",
+ "running",
+ "swimming",
+ "flying",
+ "elytra"
+ ), "mode"));
}
@Override
diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/ASkyBlockLevelTaskType.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/ASkyBlockLevelTaskType.java
index 9520a29d..5bffedcb 100644
--- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/ASkyBlockLevelTaskType.java
+++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/ASkyBlockLevelTaskType.java
@@ -27,13 +27,16 @@ public final class ASkyBlockLevelTaskType extends BukkitTaskType {
public ASkyBlockLevelTaskType(BukkitQuestsPlugin plugin) {
super("askyblock_level", TaskUtils.TASK_ATTRIBUTION_STRING, "Reach a certain island level for ASkyBlock.");
this.plugin = plugin;
+
+ super.addConfigValidator(TaskUtils.useRequiredConfigValidator(this, "level"));
+ super.addConfigValidator(TaskUtils.useIntegerConfigValidator(this, "level"));
}
@Override
public @NotNull List<ConfigProblem> validateConfig(@NotNull String root, @NotNull HashMap<String, Object> config) {
ArrayList<ConfigProblem> problems = new ArrayList<>();
- if (TaskUtils.configValidateExists(root + ".level", config.get("level"), problems, "level", super.getType()))
- TaskUtils.configValidateInt(root + ".level", config.get("level"), problems, false, false, "level");
+// if (TaskUtils.configValidateExists(root + ".level", config.get("level"), problems, "level", super.getType()))
+// TaskUtils.configValidateInt(root + ".level", config.get("level"), problems, false, false, "level");
return problems;
}
diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/BentoBoxLevelTaskType.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/BentoBoxLevelTaskType.java
index 580aea6e..a056e137 100644
--- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/BentoBoxLevelTaskType.java
+++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/BentoBoxLevelTaskType.java
@@ -30,13 +30,16 @@ public final class BentoBoxLevelTaskType extends BukkitTaskType {
public BentoBoxLevelTaskType(BukkitQuestsPlugin plugin) {
super("bentobox_level", TaskUtils.TASK_ATTRIBUTION_STRING, "Reach a certain island level in the level addon for BentoBox.");
this.plugin = plugin;
+
+ super.addConfigValidator(TaskUtils.useRequiredConfigValidator(this, "level"));
+ super.addConfigValidator(TaskUtils.useIntegerConfigValidator(this, "level"));
}
@Override
public @NotNull List<ConfigProblem> validateConfig(@NotNull String root, @NotNull HashMap<String, Object> config) {
ArrayList<ConfigProblem> problems = new ArrayList<>();
- if (TaskUtils.configValidateExists(root + ".level", config.get("level"), problems, "level", super.getType()))
- TaskUtils.configValidateInt(root + ".level", config.get("level"), problems, false, false, "level");
+// if (TaskUtils.configValidateExists(root + ".level", config.get("level"), problems, "level", super.getType()))
+// TaskUtils.configValidateInt(root + ".level", config.get("level"), problems, false, false, "level");
return problems;
}
diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/CitizensDeliverTaskType.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/CitizensDeliverTaskType.java
index 6bab1df8..176b5d9e 100644
--- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/CitizensDeliverTaskType.java
+++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/CitizensDeliverTaskType.java
@@ -37,22 +37,36 @@ public final class CitizensDeliverTaskType extends BukkitTaskType {
public CitizensDeliverTaskType(BukkitQuestsPlugin plugin) {
super("citizens_deliver", TaskUtils.TASK_ATTRIBUTION_STRING, "Deliver a set of items to a NPC.");
this.plugin = plugin;
+
+ super.addConfigValidator((config, problems) -> {
+ if (config.containsKey("npc-name") && config.containsKey("npc-id")) {
+ problems.add(new ConfigProblem(ConfigProblem.ConfigProblemType.WARNING,
+ "Both npc-name and npc-id is specified; npc-name will be ignored", null, "npc-name"));
+ }
+ });
+ super.addConfigValidator(TaskUtils.useRequiredConfigValidator(this, "amount"));
+ super.addConfigValidator(TaskUtils.useIntegerConfigValidator(this, "amount"));
+ super.addConfigValidator(TaskUtils.useRequiredConfigValidator(this, "item"));
+ super.addConfigValidator(TaskUtils.useItemStackConfigValidator(this, "item"));
+ super.addConfigValidator(TaskUtils.useIntegerConfigValidator(this, "data"));
+ super.addConfigValidator(TaskUtils.useBooleanConfigValidator(this, "remove-items-when-complete"));
+ super.addConfigValidator(TaskUtils.useBooleanConfigValidator(this, "allow-partial-completion"));
}
@Override
public @NotNull List<ConfigProblem> validateConfig(@NotNull String root, @NotNull HashMap<String, Object> config) {
ArrayList<ConfigProblem> problems = new ArrayList<>();
- if (TaskUtils.configValidateExists(root + ".item", config.get("item"), problems, "item", super.getType()))
- TaskUtils.configValidateItemStack(root + ".item", config.get("item"), problems, false, "item");
- if (TaskUtils.configValidateExists(root + ".amount", config.get("amount"), problems, "amount", super.getType()))
- TaskUtils.configValidateInt(root + ".amount", config.get("amount"), problems, false, true, "amount");
- if (!config.containsKey("npc-name")) {
- TaskUtils.configValidateExists(root + ".npc-id", config.get("npc-id"), problems, "npc-id", super.getType());
- } else {
- TaskUtils.configValidateExists(root + ".npc-name", config.get("npc-name"), problems, "npc-name", super.getType());
- }
- TaskUtils.configValidateBoolean(root + ".remove-items-when-complete", config.get("remove-items-when-complete"), problems, true, "remove-items-when-complete", super.getType());
- TaskUtils.configValidateBoolean(root + ".allow-partial-completion", config.get("allow-partial-completion"), problems, true, "allow-partial-completion", super.getType());
+// if (TaskUtils.configValidateExists(root + ".item", config.get("item"), problems, "item", super.getType()))
+// TaskUtils.configValidateItemStack(root + ".item", config.get("item"), problems, false, "item");
+// if (TaskUtils.configValidateExists(root + ".amount", config.get("amount"), problems, "amount", super.getType()))
+// TaskUtils.configValidateInt(root + ".amount", config.get("amount"), problems, false, true, "amount");
+// if (!config.containsKey("npc-name")) {
+// TaskUtils.configValidateExists(root + ".npc-id", config.get("npc-id"), problems, "npc-id", super.getType());
+// } else {
+// TaskUtils.configValidateExists(root + ".npc-name", config.get("npc-name"), problems, "npc-name", super.getType());
+// }
+// TaskUtils.configValidateBoolean(root + ".remove-items-when-complete", config.get("remove-items-when-complete"), problems, true, "remove-items-when-complete", super.getType());
+// TaskUtils.configValidateBoolean(root + ".allow-partial-completion", config.get("allow-partial-completion"), problems, true, "allow-partial-completion", super.getType());
return problems;
}
@@ -83,7 +97,12 @@ public final class CitizensDeliverTaskType extends BukkitTaskType {
super.debug("Player clicked NPC", quest.getId(), task.getId(), player.getUniqueId());
- if (task.getConfigValue("npc-name") != null) {
+ if (task.getConfigValue("npc-id") != null) {
+ if (!task.getConfigValue("npc-id").equals(npc.getId())) {
+ super.debug("NPC id ('" + npc.getId() + "') does not match required id, continuing...", quest.getId(), task.getId(), player.getUniqueId());
+ continue;
+ }
+ } else if (task.getConfigValue("npc-name") != null) {
String npcName = Chat.legacyStrip(Chat.legacyColor(npc.getName()));
super.debug("NPC name is required, current name = '" + npcName + "'", quest.getId(), task.getId(), player.getUniqueId());
if (!Chat.legacyStrip(Chat.legacyColor(String.valueOf(task.getConfigValue("npc-name"))))
@@ -91,11 +110,7 @@ public final class CitizensDeliverTaskType extends BukkitTaskType {
super.debug("NPC name does not match required name, continuing...", quest.getId(), task.getId(), player.getUniqueId());
continue;
}
- } else if (!task.getConfigValue("npc-id").equals(npc.getId())) {
- super.debug("NPC id ('" + npc.getId() + "') does not match required id, continuing...", quest.getId(), task.getId(), player.getUniqueId());
- continue;
}
-
int itemsNeeded = (int) task.getConfigValue("amount");
boolean remove = TaskUtils.getConfigBoolean(task, "remove-items-when-complete");
boolean allowPartial = TaskUtils.getConfigBoolean(task, "allow-partial-completion", true);
diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/CitizensInteractTaskType.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/CitizensInteractTaskType.java
index a5df0d23..5543cd20 100644
--- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/CitizensInteractTaskType.java
+++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/CitizensInteractTaskType.java
@@ -5,6 +5,7 @@ import com.leonardobishop.quests.bukkit.tasktype.BukkitTaskType;
import com.leonardobishop.quests.bukkit.util.TaskUtils;
import com.leonardobishop.quests.bukkit.util.chat.Chat;
import com.leonardobishop.quests.common.config.ConfigProblem;
+import com.leonardobishop.quests.common.config.ConfigProblemDescriptions;
import com.leonardobishop.quests.common.player.QPlayer;
import com.leonardobishop.quests.common.player.questprogressfile.QuestProgress;
import com.leonardobishop.quests.common.player.questprogressfile.TaskProgress;
@@ -27,6 +28,13 @@ public final class CitizensInteractTaskType extends BukkitTaskType {
public CitizensInteractTaskType(BukkitQuestsPlugin plugin) {
super("citizens_interact", TaskUtils.TASK_ATTRIBUTION_STRING, "Interact with an NPC to complete the quest.");
this.plugin = plugin;
+
+ super.addConfigValidator((config, problems) -> {
+ if (config.containsKey("npc-name") && config.containsKey("npc-id")) {
+ problems.add(new ConfigProblem(ConfigProblem.ConfigProblemType.WARNING,
+ "Both npc-name and npc-id is specified; npc-name will be ignored", null, "npc-name"));
+ }
+ });
}
@Override
@@ -56,7 +64,12 @@ public final class CitizensInteractTaskType extends BukkitTaskType {
super.debug("Player clicked NPC", quest.getId(), task.getId(), player.getUniqueId());
- if (task.getConfigValue("npc-name") != null) {
+ if (task.getConfigValue("npc-id") != null) {
+ if (!task.getConfigValue("npc-id").equals(event.getNPC().getId())) {
+ super.debug("NPC id ('" + event.getNPC().getId() + "') does not match required id, continuing...", quest.getId(), task.getId(), player.getUniqueId());
+ continue;
+ }
+ } else if (task.getConfigValue("npc-name") != null) {
String npcName = Chat.legacyStrip(Chat.legacyColor(event.getNPC().getName()));
super.debug("NPC name is required, current name = '" + npcName + "'", quest.getId(), task.getId(), player.getUniqueId());
if (!Chat.legacyStrip(Chat.legacyColor(String.valueOf(task.getConfigValue("npc-name"))))
@@ -64,9 +77,6 @@ public final class CitizensInteractTaskType extends BukkitTaskType {
super.debug("NPC name does not match required name, continuing...", quest.getId(), task.getId(), player.getUniqueId());
continue;
}
- } else if (!task.getConfigValue("npc-id").equals(event.getNPC().getId())) {
- super.debug("NPC id ('" + event.getNPC().getId() + "') does not match required id, continuing...", quest.getId(), task.getId(), player.getUniqueId());
- continue;
}
super.debug("Marking task as complete", quest.getId(), task.getId(), player.getUniqueId());
diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/EssentialsBalanceTaskType.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/EssentialsBalanceTaskType.java
index 9b259237..b422fe85 100644
--- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/EssentialsBalanceTaskType.java
+++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/EssentialsBalanceTaskType.java
@@ -31,6 +31,9 @@ public final class EssentialsBalanceTaskType extends BukkitTaskType {
public EssentialsBalanceTaskType(BukkitQuestsPlugin plugin) {
super("essentials_balance", TaskUtils.TASK_ATTRIBUTION_STRING, "Reach a set amount of money.");
this.plugin = plugin;
+
+ super.addConfigValidator(TaskUtils.useRequiredConfigValidator(this, "amount"));
+ super.addConfigValidator(TaskUtils.useIntegerConfigValidator(this, "amount"));
}
@Override
diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/EssentialsMoneyEarnTaskType.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/EssentialsMoneyEarnTaskType.java
index 8c884e15..483ddcad 100644
--- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/EssentialsMoneyEarnTaskType.java
+++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/EssentialsMoneyEarnTaskType.java
@@ -27,13 +27,16 @@ public final class EssentialsMoneyEarnTaskType extends BukkitTaskType {
public EssentialsMoneyEarnTaskType(BukkitQuestsPlugin plugin) {
super("essentials_moneyearn", TaskUtils.TASK_ATTRIBUTION_STRING, "Earn a set amount of money.");
this.plugin = plugin;
+
+ super.addConfigValidator(TaskUtils.useRequiredConfigValidator(this, "amount"));
+ super.addConfigValidator(TaskUtils.useIntegerConfigValidator(this, "amount"));
}
@Override
public @NotNull List<ConfigProblem> validateConfig(@NotNull String root, @NotNull HashMap<String, Object> config) {
ArrayList<ConfigProblem> problems = new ArrayList<>();
- if (TaskUtils.configValidateExists(root + ".amount", config.get("amount"), problems, "amount", super.getType()))
- TaskUtils.configValidateInt(root + ".amount", config.get("amount"), problems, false, false, "amount");
+// if (TaskUtils.configValidateExists(root + ".amount", config.get("amount"), problems, "amount", super.getType()))
+// TaskUtils.configValidateInt(root + ".amount", config.get("amount"), problems, false, false, "amount");
return problems;
}
diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/FabledSkyblockLevelTaskType.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/FabledSkyblockLevelTaskType.java
index 4a462024..be213eb0 100644
--- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/FabledSkyblockLevelTaskType.java
+++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/FabledSkyblockLevelTaskType.java
@@ -28,13 +28,16 @@ public final class FabledSkyblockLevelTaskType extends BukkitTaskType {
public FabledSkyblockLevelTaskType(BukkitQuestsPlugin plugin) {
super("fabledskyblock_level", TaskUtils.TASK_ATTRIBUTION_STRING, "Reach a certain island level for FabledSkyblock.");
this.plugin = plugin;
+
+ super.addConfigValidator(TaskUtils.useRequiredConfigValidator(this, "level"));
+ super.addConfigValidator(TaskUtils.useIntegerConfigValidator(this, "level"));
}
@Override
public @NotNull List<ConfigProblem> validateConfig(@NotNull String root, @NotNull HashMap<String, Object> config) {
ArrayList<ConfigProblem> problems = new ArrayList<>();
- if (TaskUtils.configValidateExists(root + ".level", config.get("level"), problems, "level", super.getType()))
- TaskUtils.configValidateInt(root + ".level", config.get("level"), problems, false, false, "level");
+// if (TaskUtils.configValidateExists(root + ".level", config.get("level"), problems, "level", super.getType()))
+// TaskUtils.configValidateInt(root + ".level", config.get("level"), problems, false, false, "level");
return problems;
}
diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/IridiumSkyblockValueTaskType.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/IridiumSkyblockValueTaskType.java
index 9272bda2..7e73a169 100644
--- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/IridiumSkyblockValueTaskType.java
+++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/IridiumSkyblockValueTaskType.java
@@ -30,13 +30,16 @@ public final class IridiumSkyblockValueTaskType extends BukkitTaskType {
public IridiumSkyblockValueTaskType(BukkitQuestsPlugin plugin) {
super("iridiumskyblock_value", TaskUtils.TASK_ATTRIBUTION_STRING, "Reach a certain island value for Iridium Skyblock.");
this.plugin = plugin;
+
+ super.addConfigValidator(TaskUtils.useRequiredConfigValidator(this, "value"));
+ super.addConfigValidator(TaskUtils.useIntegerConfigValidator(this, "value"));
}
@Override
public @NotNull List<ConfigProblem> validateConfig(@NotNull String root, @NotNull HashMap<String, Object> config) {
ArrayList<ConfigProblem> problems = new ArrayList<>();
- if (TaskUtils.configValidateExists(root + ".value", config.get("value"), problems, "value", super.getType()))
- TaskUtils.configValidateInt(root + ".value", config.get("value"), problems, false, false, "value");
+// if (TaskUtils.configValidateExists(root + ".value", config.get("value"), problems, "value", super.getType()))
+// TaskUtils.configValidateInt(root + ".value", config.get("value"), problems, false, false, "value");
return problems;
}
diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/MythicMobsKillingTaskType.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/MythicMobsKillingTaskType.java
index f13e51eb..de5154e1 100644
--- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/MythicMobsKillingTaskType.java
+++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/MythicMobsKillingTaskType.java
@@ -46,16 +46,22 @@ public final class MythicMobsKillingTaskType extends BukkitTaskType {
plugin.getLogger().severe("Failed to register event handler for MythicMobs task type!");
plugin.getLogger().severe("MythicMobs version detected: " + mythicMobsVersion);
+
+ super.addConfigValidator(TaskUtils.useRequiredConfigValidator(this, "name"));
+ super.addConfigValidator(TaskUtils.useRequiredConfigValidator(this, "amount"));
+ super.addConfigValidator(TaskUtils.useIntegerConfigValidator(this, "amount"));
+ super.addConfigValidator(TaskUtils.useIntegerConfigValidator(this, "level"));
+ super.addConfigValidator(TaskUtils.useIntegerConfigValidator(this, "min-level"));
}
@Override
public @NotNull List<ConfigProblem> validateConfig(@NotNull String root, @NotNull HashMap<String, Object> config) {
ArrayList<ConfigProblem> problems = new ArrayList<>();
- TaskUtils.configValidateExists(root + ".name", config.get("name"), problems, "name", super.getType());
- if (TaskUtils.configValidateExists(root + ".amount", config.get("amount"), problems, "amount", super.getType()))
- TaskUtils.configValidateInt(root + ".amount", config.get("amount"), problems, false, true, "amount");
- TaskUtils.configValidateInt(root + ".level", config.get("level"), problems, true, true, "level");
- TaskUtils.configValidateInt(root + ".min-level", config.get("min-level"), problems, true, true, "min-level");
+// TaskUtils.configValidateExists(root + ".name", config.get("name"), problems, "name", super.getType());
+// if (TaskUtils.configValidateExists(root + ".amount", config.get("amount"), problems, "amount", super.getType()))
+// TaskUtils.configValidateInt(root + ".amount", config.get("amount"), problems, false, true, "amount");
+// TaskUtils.configValidateInt(root + ".level", config.get("level"), problems, true, true, "level");
+// TaskUtils.configValidateInt(root + ".min-level", config.get("min-level"), problems, true, true, "min-level");
return problems;
}
diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/NuVotifierVoteTaskType.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/NuVotifierVoteTaskType.java
index 9eb11e4d..6d9a7bca 100644
--- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/NuVotifierVoteTaskType.java
+++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/NuVotifierVoteTaskType.java
@@ -27,13 +27,16 @@ public final class NuVotifierVoteTaskType extends BukkitTaskType {
public NuVotifierVoteTaskType(BukkitQuestsPlugin plugin) {
super("nuvotifier_vote", TaskUtils.TASK_ATTRIBUTION_STRING, "Vote a set amount of times.");
this.plugin = plugin;
+
+ super.addConfigValidator(TaskUtils.useRequiredConfigValidator(this, "amount"));
+ super.addConfigValidator(TaskUtils.useIntegerConfigValidator(this, "amount"));
}
@Override
public @NotNull List<ConfigProblem> validateConfig(@NotNull String root, @NotNull HashMap<String, Object> config) {
ArrayList<ConfigProblem> problems = new ArrayList<>();
- if (TaskUtils.configValidateExists(root + ".amount", config.get("amount"), problems, "amount", super.getType()))
- TaskUtils.configValidateInt(root + ".amount", config.get("amount"), problems, false, true, "amount");
+// if (TaskUtils.configValidateExists(root + ".amount", config.get("amount"), problems, "amount", super.getType()))
+// TaskUtils.configValidateInt(root + ".amount", config.get("amount"), problems, false, true, "amount");
return problems;
}
diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/PlaceholderAPIEvaluateTaskType.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/PlaceholderAPIEvaluateTaskType.java
index 344f2bf9..033def46 100644
--- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/PlaceholderAPIEvaluateTaskType.java
+++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/PlaceholderAPIEvaluateTaskType.java
@@ -17,6 +17,7 @@ import org.bukkit.scheduler.BukkitTask;
import org.jetbrains.annotations.NotNull;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
@@ -28,39 +29,63 @@ public final class PlaceholderAPIEvaluateTaskType extends BukkitTaskType {
public PlaceholderAPIEvaluateTaskType(BukkitQuestsPlugin plugin) {
super("placeholderapi_evaluate", TaskUtils.TASK_ATTRIBUTION_STRING, "Evaluate the result of a placeholder");
this.plugin = plugin;
- }
-
- @Override
- public @NotNull List<ConfigProblem> validateConfig(@NotNull String root, @NotNull HashMap<String, Object> config) {
- ArrayList<ConfigProblem> problems = new ArrayList<>();
- TaskUtils.configValidateExists(root + ".placeholder", config.get("placeholder"), problems, "placeholder", super.getType());
- boolean evalExists = TaskUtils.configValidateExists(root + ".evaluates", config.get("evaluates"), problems, "evaluates", super.getType());
- if (config.containsKey("operator")) {
- String operatorStr = (String) config.get("operator");
- Operator operator = null;
- try {
- operator = Operator.valueOf(operatorStr);
- } catch (IllegalArgumentException ex) {
- problems.add(new ConfigProblem(ConfigProblem.ConfigProblemType.WARNING,
- "Operator '" + operatorStr + "' does not exist",
- "Valid operators are:<br>" +
- "- GREATER_THAN<br>" +
- "- LESS_THAN<br>" +
- "- GREATER_THAN_OR_EQUAL_TO<br>" +
- "- LESS_THAN_OR_EQUAL_TO<br>",
- root + ".operator"));
- }
- if (operator != null && evalExists) {
+ super.addConfigValidator(TaskUtils.useRequiredConfigValidator(this, "placeholder"));
+ super.addConfigValidator(TaskUtils.useRequiredConfigValidator(this, "evaluates"));
+ super.addConfigValidator(TaskUtils.useAcceptedValuesConfigValidator(this, Arrays.asList(
+ "GREATER_THAN",
+ "GREATER_THAN_OR_EQUAL_TO",
+ "LESS_THAN",
+ "LESS_THAN_OR_EQUAL_TO"
+ ),"operator"));
+ super.addConfigValidator((config, problems) -> {
+ if (config.containsKey("operator")) {
String evalStr = String.valueOf(config.get("evaluates"));
try {
Double.parseDouble(evalStr);
} catch (IllegalArgumentException ex) {
problems.add(new ConfigProblem(ConfigProblem.ConfigProblemType.WARNING,
- "Numeric operator specified, but placeholder evaluation '" + evalStr + "' is not numeric", null, root + ".evaluates"));
+ "Numeric operator specified, but placeholder evaluation '" + evalStr + "' is not numeric",
+ "A numeric operator was specified, but<br>" +
+ "the evaluation '" + evalStr + "' is not numeric<br>" +
+ "and cannot be parsed.",
+ "evaluates"));
}
}
- }
+ });
+ }
+
+ @Override
+ public @NotNull List<ConfigProblem> validateConfig(@NotNull String root, @NotNull HashMap<String, Object> config) {
+ ArrayList<ConfigProblem> problems = new ArrayList<>();
+// TaskUtils.configValidateExists(root + ".placeholder", config.get("placeholder"), problems, "placeholder", super.getType());
+// boolean evalExists = TaskUtils.configValidateExists(root + ".evaluates", config.get("evaluates"), problems, "evaluates", super.getType());
+//
+// if (config.containsKey("operator")) {
+// String operatorStr = (String) config.get("operator");
+// Operator operator = null;
+// try {
+// operator = Operator.valueOf(operatorStr);
+// } catch (IllegalArgumentException ex) {
+// problems.add(new ConfigProblem(ConfigProblem.ConfigProblemType.WARNING,
+// "Operator '" + operatorStr + "' does not exist",
+// "Valid operators are:<br>" +
+// "- GREATER_THAN<br>" +
+// "- LESS_THAN<br>" +
+// "- GREATER_THAN_OR_EQUAL_TO<br>" +
+// "- LESS_THAN_OR_EQUAL_TO<br>",
+// root + ".operator"));
+// }
+// if (operator != null && evalExists) {
+// String evalStr = String.valueOf(config.get("evaluates"));
+// try {
+// Double.parseDouble(evalStr);
+// } catch (IllegalArgumentException ex) {
+// problems.add(new ConfigProblem(ConfigProblem.ConfigProblemType.WARNING,
+// "Numeric operator specified, but placeholder evaluation '" + evalStr + "' is not numeric", null, root + ".evaluates"));
+// }
+// }
+// }
return problems;
}
diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/ShopGUIPlusBuyCertainTaskType.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/ShopGUIPlusBuyCertainTaskType.java
index aaa1562d..33a1a8c1 100644
--- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/ShopGUIPlusBuyCertainTaskType.java
+++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/ShopGUIPlusBuyCertainTaskType.java
@@ -33,6 +33,11 @@ public final class ShopGUIPlusBuyCertainTaskType extends BukkitTaskType {
public ShopGUIPlusBuyCertainTaskType(BukkitQuestsPlugin plugin) {
super("shopguiplus_buycertain", TaskUtils.TASK_ATTRIBUTION_STRING, "Purchase a given item from a ShopGUI+ shop");
this.plugin = plugin;
+
+ super.addConfigValidator(TaskUtils.useRequiredConfigValidator(this, "amount"));
+ super.addConfigValidator(TaskUtils.useIntegerConfigValidator(this, "amount"));
+ super.addConfigValidator(TaskUtils.useRequiredConfigValidator(this, "shop-id"));
+ super.addConfigValidator(TaskUtils.useRequiredConfigValidator(this, "item-id"));
}
@Override
diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/ShopGUIPlusSellCertainTaskType.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/ShopGUIPlusSellCertainTaskType.java
index 0317277e..fe2d7c09 100644
--- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/ShopGUIPlusSellCertainTaskType.java
+++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/ShopGUIPlusSellCertainTaskType.java
@@ -33,17 +33,22 @@ public final class ShopGUIPlusSellCertainTaskType extends BukkitTaskType {
public ShopGUIPlusSellCertainTaskType(BukkitQuestsPlugin plugin) {
super("shopguiplus_sellcertain", TaskUtils.TASK_ATTRIBUTION_STRING, "Sell a given item to a ShopGUI+ shop");
this.plugin = plugin;
+
+ super.addConfigValidator(TaskUtils.useRequiredConfigValidator(this, "amount"));
+ super.addConfigValidator(TaskUtils.useIntegerConfigValidator(this, "amount"));
+ super.addConfigValidator(TaskUtils.useRequiredConfigValidator(this, "shop-id"));
+ super.addConfigValidator(TaskUtils.useRequiredConfigValidator(this, "item-id"));
}
@Override
public @NotNull List<ConfigProblem> validateConfig(@NotNull String root, @NotNull HashMap<String, Object> config) {
List<ConfigProblem> problems = new ArrayList<>();
- if (TaskUtils.configValidateExists(root + ".amount", config.get("amount"), problems, "amount", super.getType())) {
- TaskUtils.configValidateInt(root + ".amount", config.get("amount"), problems, false, true, "amount");
- }
-
- TaskUtils.configValidateExists(root + ".shop-id", config.get("shop-id"), problems, "shop-id", super.getType());
- TaskUtils.configValidateExists(root + ".item-id", config.get("item-id"), problems, "item-id", super.getType());
+// if (TaskUtils.configValidateExists(root + ".amount", config.get("amount"), problems, "amount", super.getType())) {
+// TaskUtils.configValidateInt(root + ".amount", config.get("amount"), problems, false, true, "amount");
+// }
+//
+// TaskUtils.configValidateExists(root + ".shop-id", config.get("shop-id"), problems, "shop-id", super.getType());
+// TaskUtils.configValidateExists(root + ".item-id", config.get("item-id"), problems, "item-id", super.getType());
return problems;
}
diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/SuperiorSkyblockLevelType.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/SuperiorSkyblockLevelType.java
index d652e2e6..e4e0c97b 100644
--- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/SuperiorSkyblockLevelType.java
+++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/SuperiorSkyblockLevelType.java
@@ -29,13 +29,16 @@ public final class SuperiorSkyblockLevelType extends BukkitTaskType {
public SuperiorSkyblockLevelType(BukkitQuestsPlugin plugin) {
super("superiorskyblock_level", TaskUtils.TASK_ATTRIBUTION_STRING, "Reach a certain island level for SuperiorSkyblock.");
this.plugin = plugin;
+
+ super.addConfigValidator(TaskUtils.useRequiredConfigValidator(this, "level"));
+ super.addConfigValidator(TaskUtils.useIntegerConfigValidator(this, "level"));
}
@Override
public @NotNull List<ConfigProblem> validateConfig(@NotNull String root, @NotNull HashMap<String, Object> config) {
ArrayList<ConfigProblem> problems = new ArrayList<>();
- if (TaskUtils.configValidateExists(root + ".level", config.get("level"), problems, "level", super.getType()))
- TaskUtils.configValidateNumber(root + ".level", config.get("level"), problems, false, false, "level");
+// if (TaskUtils.configValidateExists(root + ".level", config.get("level"), problems, "level", super.getType()))
+// TaskUtils.configValidateNumber(root + ".level", config.get("level"), problems, false, false, "level");
return problems;
}
diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/SuperiorSkyblockWorthType.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/SuperiorSkyblockWorthType.java
index cc04aada..6444daf2 100644
--- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/SuperiorSkyblockWorthType.java
+++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/SuperiorSkyblockWorthType.java
@@ -29,13 +29,16 @@ public final class SuperiorSkyblockWorthType extends BukkitTaskType {
public SuperiorSkyblockWorthType(BukkitQuestsPlugin plugin) {
super("superiorskyblock_worth", TaskUtils.TASK_ATTRIBUTION_STRING, "Reach a certain island worth for SuperiorSkyblock.");
this.plugin = plugin;
+
+ super.addConfigValidator(TaskUtils.useRequiredConfigValidator(this, "worth"));
+ super.addConfigValidator(TaskUtils.useIntegerConfigValidator(this, "worth"));
}
@Override
public @NotNull List<ConfigProblem> validateConfig(@NotNull String root, @NotNull HashMap<String, Object> config) {
ArrayList<ConfigProblem> problems = new ArrayList<>();
- if (TaskUtils.configValidateExists(root + ".worth", config.get("worth"), problems, "worth", super.getType()))
- TaskUtils.configValidateNumber(root + ".worth", config.get("worth"), problems, false, false, "worth");
+// if (TaskUtils.configValidateExists(root + ".worth", config.get("worth"), problems, "worth", super.getType()))
+// TaskUtils.configValidateNumber(root + ".worth", config.get("worth"), problems, false, false, "worth");
return problems;
}
diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/VotingPluginVoteType.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/VotingPluginVoteType.java
index 02f2fbcb..7d5a3576 100644
--- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/VotingPluginVoteType.java
+++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/VotingPluginVoteType.java
@@ -27,13 +27,16 @@ public final class VotingPluginVoteType extends BukkitTaskType {
public VotingPluginVoteType(BukkitQuestsPlugin plugin) {
super("votingplugin_vote", TaskUtils.TASK_ATTRIBUTION_STRING, "Vote a set amount of times.");
this.plugin = plugin;
+
+ super.addConfigValidator(TaskUtils.useRequiredConfigValidator(this, "amount"));
+ super.addConfigValidator(TaskUtils.useIntegerConfigValidator(this, "amount"));
}
@Override
public @NotNull List<ConfigProblem> validateConfig(@NotNull String root, @NotNull HashMap<String, Object> config) {
ArrayList<ConfigProblem> problems = new ArrayList<>();
- if (TaskUtils.configValidateExists(root + ".amount", config.get("amount"), problems, "amount", super.getType()))
- TaskUtils.configValidateInt(root + ".amount", config.get("amount"), problems, false, true, "amount");
+// if (TaskUtils.configValidateExists(root + ".amount", config.get("amount"), problems, "amount", super.getType()))
+// TaskUtils.configValidateInt(root + ".amount", config.get("amount"), problems, false, true, "amount");
return problems;
}
diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/uSkyBlockLevelTaskType.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/uSkyBlockLevelTaskType.java
index 02d54156..2d5dbc20 100644
--- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/uSkyBlockLevelTaskType.java
+++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/uSkyBlockLevelTaskType.java
@@ -27,13 +27,16 @@ public final class uSkyBlockLevelTaskType extends BukkitTaskType {
public uSkyBlockLevelTaskType(BukkitQuestsPlugin plugin) {
super("uskyblock_level", TaskUtils.TASK_ATTRIBUTION_STRING, "Reach a certain island level for uSkyBlock.");
this.plugin = plugin;
+
+ super.addConfigValidator(TaskUtils.useRequiredConfigValidator(this, "level"));
+ super.addConfigValidator(TaskUtils.useIntegerConfigValidator(this, "level"));
}
@Override
public @NotNull List<ConfigProblem> validateConfig(@NotNull String root, @NotNull HashMap<String, Object> config) {
ArrayList<ConfigProblem> problems = new ArrayList<>();
- if (TaskUtils.configValidateExists(root + ".level", config.get("level"), problems, "level", super.getType()))
- TaskUtils.configValidateInt(root + ".level", config.get("level"), problems, false, false, "level");
+// if (TaskUtils.configValidateExists(root + ".level", config.get("level"), problems, "level", super.getType()))
+// TaskUtils.configValidateInt(root + ".level", config.get("level"), problems, false, false, "level");
return problems;
}
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 a29233cb..0326b072 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
@@ -15,6 +15,7 @@ import com.leonardobishop.quests.common.tasktype.TaskType;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.configuration.ConfigurationSection;
+import org.bukkit.entity.EntityType;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
@@ -361,4 +362,270 @@ public class TaskUtils {
}
return true;
}
+
+ /**
+ * Returns a config validator which checks if at least one value in the given
+ * paths exist.
+ *
+ * @param paths a list of valid paths for task
+ * @return config validator
+ */
+ public static TaskType.ConfigValidator useRequiredConfigValidator(TaskType type, String... paths) {
+ return (config, problems) -> {
+ for (String path : paths) {
+ Object object = config.get(path);
+
+ if (object != null) {
+ return;
+ }
+ }
+ problems.add(new ConfigProblem(ConfigProblem.ConfigProblemType.ERROR,
+ ConfigProblemDescriptions.TASK_MISSING_FIELD.getDescription(paths[0], type.getType()),
+ ConfigProblemDescriptions.TASK_MISSING_FIELD.getExtendedDescription(paths[0], type.getType()),
+ paths[0]));
+ };
+ }
+
+ /**
+ * Returns a config validator which checks if at least one value in the given
+ * paths is an item stack.
+ *
+ * @param paths a list of valid paths for task
+ * @return config validator
+ */
+ public static TaskType.ConfigValidator useItemStackConfigValidator(TaskType type, String... paths) {
+ return (config, problems) -> {
+ for (String path : paths) {
+ Object object = config.get(path);
+
+ if (object == null) {
+ continue;
+ }
+
+ if (object instanceof ConfigurationSection section) {
+
+ if (section.contains("quest-item")) {
+ String itemType = section.getString("quest-item");
+ if (plugin.getQuestItemRegistry().getItem(itemType) == null) {
+ problems.add(new ConfigProblem(ConfigProblem.ConfigProblemType.WARNING,
+ ConfigProblemDescriptions.UNKNOWN_QUEST_ITEM.getDescription(itemType),
+ ConfigProblemDescriptions.UNKNOWN_QUEST_ITEM.getExtendedDescription(itemType),
+ path + ".quest-item"));
+ }
+ } else {
+ String materialLoc = "item";
+ if (!section.contains("item")) {
+ materialLoc = "type";
+ }
+
+ if (!section.contains(materialLoc)) {
+ problems.add(new ConfigProblem(ConfigProblem.ConfigProblemType.WARNING,
+ ConfigProblemDescriptions.UNKNOWN_MATERIAL.getDescription(""),
+ ConfigProblemDescriptions.UNKNOWN_MATERIAL.getExtendedDescription(""),
+ path + ".type"));
+ } else {
+ String material = String.valueOf(section.get(materialLoc));
+ if (!plugin.getItemGetter().isValidMaterial(material)) {
+ problems.add(new ConfigProblem(ConfigProblem.ConfigProblemType.WARNING,
+ ConfigProblemDescriptions.UNKNOWN_MATERIAL.getDescription(material),
+ ConfigProblemDescriptions.UNKNOWN_MATERIAL.getExtendedDescription(material),
+ path + "." + materialLoc));
+ }
+ }
+ }
+ } else {
+ if (Material.getMaterial(String.valueOf(object)) == null) {
+ problems.add(new ConfigProblem(ConfigProblem.ConfigProblemType.WARNING,
+ ConfigProblemDescriptions.UNKNOWN_MATERIAL.getDescription(String.valueOf(object)),
+ ConfigProblemDescriptions.UNKNOWN_MATERIAL.getExtendedDescription(String.valueOf(object)),
+ path));
+ }
+ }
+ break;
+ }
+ };
+ }
+
+ /**
+ * Returns a config validator which checks if at least one value in the given
+ * paths is an integer.
+ *
+ * @param paths a list of valid paths for task
+ * @return config validator
+ */
+ public static TaskType.ConfigValidator useIntegerConfigValidator(TaskType type, String... paths) {
+ return (config, problems) -> {
+ for (String path : paths) {
+ Object object = config.get(path);
+
+ if (object == null) {
+ continue;
+ }
+
+ try {
+ Integer i = (Integer) object;
+ } catch (ClassCastException ex) {
+ problems.add(new ConfigProblem(ConfigProblem.ConfigProblemType.ERROR,
+ "Expected an integer for '" + path + "', but got '" + object + "' instead", null, path));
+ }
+ break;
+ }
+ };
+ }
+
+ /**
+ * Returns a config validator which checks if at least one value in the given
+ * paths is a boolean.
+ *
+ * @param paths a list of valid paths for task
+ * @return config validator
+ */
+ public static TaskType.ConfigValidator useBooleanConfigValidator(TaskType type, String... paths) {
+ return (config, problems) -> {
+ for (String path : paths) {
+ Object object = config.get(path);
+
+ if (object == null) {
+ continue;
+ }
+
+ try {
+ Boolean b = (Boolean) object;
+ } catch (ClassCastException ex) {
+ problems.add(new ConfigProblem(ConfigProblem.ConfigProblemType.ERROR,
+ "Expected a boolean for '" + path + "', but got '" + object + "' instead", null, path));
+ }
+ break;
+ }
+ };
+ }
+
+ /**
+ * Returns a config validator which checks if at least one value in the given
+ * paths is a valid list of materials.
+ * <p>
+ * The list of materials is expected to be in the format of:
+ * <pre>key: "MATERIAL_NAME"</pre>
+ * where MATERIAL_NAME is the name of a material. Alternatively, the list
+ * of materials can be in the format of:
+ * <pre>key:
+ * - "MATERIAL_NAME"
+ * - "..."</pre>
+ * </p>
+ *
+ * @param paths a list of valid paths for task
+ * @return config validator
+ */
+ public static TaskType.ConfigValidator useMaterialListConfigValidator(TaskType type, String... paths) {
+ return (config, problems) -> {
+ for (String path : paths) {
+ Object configBlock = config.get(path);
+
+ List<String> checkBlocks = new ArrayList<>();
+ if (configBlock instanceof List<?> configList) {
+ for (Object object : configList) {
+ checkBlocks.add(String.valueOf(object));
+ }
+ } else {
+ if (configBlock == null) {
+ continue;
+ }
+ checkBlocks.add(String.valueOf(configBlock));
+ }
+
+ for (String materialName : checkBlocks) {
+ String[] split = materialName.split(":");
+ if (Material.getMaterial(String.valueOf(split[0])) == null) {
+ problems.add(new ConfigProblem(ConfigProblem.ConfigProblemType.WARNING,
+ ConfigProblemDescriptions.UNKNOWN_MATERIAL.getDescription(materialName),
+ ConfigProblemDescriptions.UNKNOWN_MATERIAL.getExtendedDescription(materialName),
+ path));
+ }
+ }
+ break;
+ }
+ };
+ }
+
+ /**
+ * Returns a config validator which checks if at least one value in the given
+ * paths is a valid list of entities.
+ * <p>
+ * The list of entities is expected to be in the format of:
+ * <pre>key: "ENTITY_TYPE"</pre>
+ * where ENTITY_TYPE is the name of an entity. Alternatively, the list
+ * of entities can be in the format of:
+ * <pre>key:
+ * - "ENTITY_TYPE"
+ * - "..."</pre>
+ * </p>
+ *
+ * @param paths a list of valid paths for task
+ * @return config validator
+ */
+ public static TaskType.ConfigValidator useEntityListConfigValidator(TaskType type, String... paths) {
+ return (config, problems) -> {
+ for (String path : paths) {
+ Object configObject = config.get(path);
+
+ List<String> checkEntities = new ArrayList<>();
+ if (configObject instanceof List<?> configList) {
+ for (Object object : configList) {
+ checkEntities.add(String.valueOf(object));
+ }
+ } else {
+ if (configObject == null) {
+ continue;
+ }
+ checkEntities.add(String.valueOf(configObject));
+ }
+
+ for (String entity : checkEntities) {
+ try {
+ EntityType.valueOf(entity);
+ } catch (IllegalArgumentException ex) {
+ problems.add(new ConfigProblem(ConfigProblem.ConfigProblemType.WARNING,
+ ConfigProblemDescriptions.UNKNOWN_MATERIAL.getDescription(entity),
+ ConfigProblemDescriptions.UNKNOWN_MATERIAL.getExtendedDescription(entity),
+ path));
+ }
+ }
+ break;
+ }
+ };
+ }
+
+ /**
+ * Returns a config validator which checks if at least one value in the given
+ * paths is a value in the list of accepted values.
+ *
+ * @param acceptedValues a list of accepted values
+ * @param paths a list of valid paths for task
+ * @return config validator
+ */
+ public static TaskType.ConfigValidator useAcceptedValuesConfigValidator(TaskType type, List<String> acceptedValues, String... paths) {
+ return (config, problems) -> {
+ for (String path : paths) {
+ Object configObject = config.get(path);
+
+ if (configObject == null) {
+ continue;
+ }
+
+ if (!acceptedValues.contains(String.valueOf(configObject))) {
+ String extendedDescription =
+ "The accepted values are:";
+ for (String value : acceptedValues) {
+ extendedDescription += "<br> - " + value;
+ }
+ problems.add(new ConfigProblem(ConfigProblem.ConfigProblemType.WARNING,
+ ConfigProblemDescriptions.NOT_ACCEPTED_VALUE.getDescription(String.valueOf(configObject), type.getType(), acceptedValues.toString()),
+ extendedDescription,
+ path));
+ }
+
+ break;
+ }
+ };
+ }
}
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);
+ }
}