diff options
Diffstat (limited to 'bukkit/src/main/java')
49 files changed, 806 insertions, 363 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; + } + }; + } } |
