diff options
| author | Krakenied <Krakenied1@gmail.com> | 2023-01-21 18:00:40 +0100 |
|---|---|---|
| committer | Krakenied <Krakenied1@gmail.com> | 2023-02-08 16:15:03 +0100 |
| commit | bf186c0aca0576c292ab88b8f2230a91a4bfc425 (patch) | |
| tree | 33369205febc7172a3ca7dc48c2480291c375147 /bukkit/src/main | |
| parent | bc11bfd6be2bd4b3ba151707cc636c1d5a5b8131 (diff) | |
Additional material validation
Closes https://github.com/LMBishop/Quests/issues/445, https://github.com/LMBishop/Quests/issues/349
Diffstat (limited to 'bukkit/src/main')
7 files changed, 32 insertions, 8 deletions
diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/BlockshearingTaskType.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/BlockshearingTaskType.java index 1bf2b93b..8a960f4e 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/BlockshearingTaskType.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/BlockshearingTaskType.java @@ -23,7 +23,7 @@ public final class BlockshearingTaskType extends BukkitTaskType { super.addConfigValidator(TaskUtils.useRequiredConfigValidator(this, "amount")); super.addConfigValidator(TaskUtils.useIntegerConfigValidator(this, "amount")); - super.addConfigValidator(TaskUtils.useMaterialListConfigValidator(this, "block", "blocks")); + super.addConfigValidator(TaskUtils.useMaterialListConfigValidator(this, TaskUtils.MaterialListConfigValidatorMode.BLOCK, "block", "blocks")); } @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) 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 afb7e71e..7415657f 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 @@ -19,7 +19,7 @@ public abstract class BucketInteractionTaskType extends BukkitTaskType { super.addConfigValidator(TaskUtils.useRequiredConfigValidator(this, "amount")); super.addConfigValidator(TaskUtils.useIntegerConfigValidator(this, "amount")); super.addConfigValidator(TaskUtils.useRequiredConfigValidator(this, "bucket")); - super.addConfigValidator(TaskUtils.useMaterialListConfigValidator(this, "bucket")); + super.addConfigValidator(TaskUtils.useMaterialListConfigValidator(this, TaskUtils.MaterialListConfigValidatorMode.ITEM, "bucket")); } public void onBucket(Player player, Material bucket, BukkitQuestsPlugin plugin) { diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/BuildingTaskType.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/BuildingTaskType.java index 32101bd1..1f6606ce 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/BuildingTaskType.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/BuildingTaskType.java @@ -23,7 +23,7 @@ public final class BuildingTaskType extends BukkitTaskType { super.addConfigValidator(TaskUtils.useRequiredConfigValidator(this, "amount")); super.addConfigValidator(TaskUtils.useIntegerConfigValidator(this, "amount")); - super.addConfigValidator(TaskUtils.useMaterialListConfigValidator(this, "block", "blocks")); + super.addConfigValidator(TaskUtils.useMaterialListConfigValidator(this, TaskUtils.MaterialListConfigValidatorMode.BLOCK, "block", "blocks")); super.addConfigValidator(TaskUtils.useIntegerConfigValidator(this, "data")); super.addConfigValidator(TaskUtils.useBooleanConfigValidator(this, "reverse-if-broken")); super.addConfigValidator(TaskUtils.useBooleanConfigValidator(this, "use-similar-blocks")); 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 a9a26adb..e636694d 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 @@ -33,7 +33,7 @@ public final class FarmingTaskType extends BukkitTaskType { super.addConfigValidator(TaskUtils.useRequiredConfigValidator(this, "amount")); super.addConfigValidator(TaskUtils.useIntegerConfigValidator(this, "amount")); - super.addConfigValidator(TaskUtils.useMaterialListConfigValidator(this, "block", "blocks")); + super.addConfigValidator(TaskUtils.useMaterialListConfigValidator(this, TaskUtils.MaterialListConfigValidatorMode.BLOCK, "block", "blocks")); super.addConfigValidator(TaskUtils.useAcceptedValuesConfigValidator(this, Arrays.asList("break", "harvest"), "mode")); } diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/InteractTaskType.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/InteractTaskType.java index 5f564373..b86e503b 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/InteractTaskType.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/InteractTaskType.java @@ -29,7 +29,7 @@ public final class InteractTaskType extends BukkitTaskType { super.addConfigValidator(TaskUtils.useRequiredConfigValidator(this, "amount")); super.addConfigValidator(TaskUtils.useIntegerConfigValidator(this, "amount")); super.addConfigValidator(TaskUtils.useItemStackConfigValidator(this, "item")); - super.addConfigValidator(TaskUtils.useMaterialListConfigValidator(this, "block", "blocks")); + super.addConfigValidator(TaskUtils.useMaterialListConfigValidator(this, TaskUtils.MaterialListConfigValidatorMode.BLOCK, "block", "blocks")); super.addConfigValidator(TaskUtils.useIntegerConfigValidator(this, "data")); } diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/MiningTaskType.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/MiningTaskType.java index 52665b51..f1f4c363 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/MiningTaskType.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/MiningTaskType.java @@ -23,7 +23,7 @@ public final class MiningTaskType extends BukkitTaskType { super.addConfigValidator(TaskUtils.useRequiredConfigValidator(this, "amount")); super.addConfigValidator(TaskUtils.useIntegerConfigValidator(this, "amount")); - super.addConfigValidator(TaskUtils.useMaterialListConfigValidator(this, "block", "blocks")); + super.addConfigValidator(TaskUtils.useMaterialListConfigValidator(this, TaskUtils.MaterialListConfigValidatorMode.BLOCK, "block", "blocks")); super.addConfigValidator(TaskUtils.useIntegerConfigValidator(this, "data")); super.addConfigValidator(TaskUtils.useBooleanConfigValidator(this, "check-coreprotect")); super.addConfigValidator(TaskUtils.useIntegerConfigValidator(this, "check-coreprotect-time")); 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 3cb5b071..48114437 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 @@ -416,6 +416,29 @@ public class TaskUtils { }; } + public enum MaterialListConfigValidatorMode { + ANY { + @Override + public boolean isValid(Material material) { + return true; + } + }, + BLOCK { + @Override + public boolean isValid(Material material) { + return material.isBlock(); + } + }, + ITEM { + @Override + public boolean isValid(Material material) { + return material.isItem(); + } + }; + + public abstract boolean isValid(Material material); + } + /** * Returns a config validator which checks if at least one value in the given * paths is a valid list of materials. @@ -432,7 +455,7 @@ public class TaskUtils { * @param paths a list of valid paths for task * @return config validator */ - public static TaskType.ConfigValidator useMaterialListConfigValidator(TaskType type, String... paths) { + public static TaskType.ConfigValidator useMaterialListConfigValidator(TaskType type, MaterialListConfigValidatorMode mode, String... paths) { return (config, problems) -> { for (String path : paths) { Object configBlock = config.get(path); @@ -451,7 +474,8 @@ public class TaskUtils { for (String materialName : checkBlocks) { String[] split = materialName.split(":"); - if (Material.getMaterial(String.valueOf(split[0])) == null) { + final Material material = Material.getMaterial(String.valueOf(split[0])); + if (material == null || !mode.isValid(material)) { problems.add(new ConfigProblem(ConfigProblem.ConfigProblemType.WARNING, ConfigProblemDescriptions.UNKNOWN_MATERIAL.getDescription(materialName), ConfigProblemDescriptions.UNKNOWN_MATERIAL.getExtendedDescription(materialName), |
