diff options
Diffstat (limited to 'bukkit/src/main')
51 files changed, 333 insertions, 1835 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 37735054..48a137cb 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/BukkitQuestsPlugin.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/BukkitQuestsPlugin.java @@ -290,21 +290,15 @@ public class BukkitQuestsPlugin extends JavaPlugin implements Quests { } taskTypeManager.registerTaskType(new MiningTaskType(this)); - taskTypeManager.registerTaskType(new MiningCertainTaskType(this)); taskTypeManager.registerTaskType(new BuildingTaskType(this)); - taskTypeManager.registerTaskType(new BuildingCertainTaskType(this)); taskTypeManager.registerTaskType(new MobkillingTaskType(this)); - taskTypeManager.registerTaskType(new MobkillingCertainTaskType(this)); taskTypeManager.registerTaskType(new PlayerkillingTaskType(this)); taskTypeManager.registerTaskType(new FishingTaskType(this)); - taskTypeManager.registerTaskType(new FishingCertainTaskType(this)); taskTypeManager.registerTaskType(new SmeltingTaskType(this)); - taskTypeManager.registerTaskType(new SmeltingCertainTaskType(this)); taskTypeManager.registerTaskType(new InventoryTaskType(this)); taskTypeManager.registerTaskType(new ConsumeTaskType(this)); taskTypeManager.registerTaskType(new WalkingTaskType(this)); taskTypeManager.registerTaskType(new TamingTaskType(this)); - taskTypeManager.registerTaskType(new TamingTaskType(this)); taskTypeManager.registerTaskType(new MilkingTaskType(this)); taskTypeManager.registerTaskType(new ShearingTaskType(this)); taskTypeManager.registerTaskType(new PositionTaskType(this)); @@ -325,7 +319,6 @@ public class BukkitQuestsPlugin extends JavaPlugin implements Quests { try { Class.forName("org.bukkit.block.data.Ageable"); taskTypeManager.registerTaskType(new FarmingTaskType(this)); - taskTypeManager.registerTaskType(new FarmingCertainTaskType(this)); } catch (ClassNotFoundException ignored) { } // server version cannot support task type if (Bukkit.getPluginManager().isPluginEnabled("ASkyBlock")) { taskTypeManager.registerTaskType(new ASkyBlockLevelTaskType(this)); @@ -360,8 +353,8 @@ public class BukkitQuestsPlugin extends JavaPlugin implements Quests { } if (Bukkit.getPluginManager().isPluginEnabled("ShopGUIPlus")) { // not tested - taskTypeManager.registerTaskType(new ShopGUIPlusBuyCertainTaskType(this)); - taskTypeManager.registerTaskType(new ShopGUIPlusSellCertainTaskType(this)); + taskTypeManager.registerTaskType(new ShopGUIPlusBuyTaskType(this)); + taskTypeManager.registerTaskType(new ShopGUIPlusSellTaskType(this)); } if (Bukkit.getPluginManager().isPluginEnabled("FabledSkyblock")) { // not tested 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 ba23d9c8..efd4f7f0 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 @@ -199,8 +199,9 @@ public class BukkitQuestsLoader implements QuestsLoader { } // check the tasks - TaskType t = taskTypeManager.getTaskType(taskType); - if (t != null) { + String resolvedTaskTypeName = taskTypeManager.resolveTaskTypeName(taskType); + if (resolvedTaskTypeName != null) { + TaskType t = taskTypeManager.getTaskType(resolvedTaskTypeName); HashMap<String, Object> configValues = new HashMap<>(); for (String key : config.getConfigurationSection(taskRoot).getKeys(false)) { configValues.put(key, config.get(taskRoot + "." + key)); @@ -310,8 +311,9 @@ public class BukkitQuestsLoader implements QuestsLoader { for (String taskId : config.getConfigurationSection("tasks").getKeys(false)) { String taskRoot = "tasks." + taskId; String taskType = config.getString(taskRoot + ".type"); + String resolvedTaskTypeName = taskTypeManager.resolveTaskTypeName(taskType); - Task task = new Task(taskId, taskType); + Task task = new Task(taskId, resolvedTaskTypeName); for (String key : config.getConfigurationSection(taskRoot).getKeys(false)) { task.addConfigValue(key, config.get(taskRoot + "." + key)); @@ -490,7 +492,9 @@ public class BukkitQuestsLoader implements QuestsLoader { } if (!match) configProblems.add(new ConfigProblem(ConfigProblem.ConfigProblemType.WARNING, - ConfigProblemDescriptions.UNKNOWN_TASK_REFERENCE.getDescription(parts[0]), location)); + ConfigProblemDescriptions.UNKNOWN_TASK_REFERENCE.getDescription(parts[0]), + ConfigProblemDescriptions.UNKNOWN_TASK_REFERENCE.getExtendedDescription(parts[0]), + location)); } } diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/BukkitTaskType.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/BukkitTaskType.java index 8f4078a2..179b39ac 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/BukkitTaskType.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/BukkitTaskType.java @@ -10,6 +10,10 @@ public abstract class BukkitTaskType extends TaskType implements Listener { protected BukkitTaskTypeManager taskTypeManager; + public BukkitTaskType(@NotNull String type, String author, String description, String... aliases) { + super(type, author, description, aliases); + } + public BukkitTaskType(@NotNull String type, String author, String description) { super(type, author, description); } 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 3a91ffb1..cbafca32 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 @@ -3,7 +3,6 @@ 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.player.QPlayer; import com.leonardobishop.quests.common.player.questprogressfile.TaskProgress; import com.leonardobishop.quests.common.quest.Quest; @@ -14,10 +13,7 @@ import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.entity.CreatureSpawnEvent; import org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason; -import org.jetbrains.annotations.NotNull; -import java.util.ArrayList; -import java.util.HashMap; import java.util.List; public final class BreedingTaskType extends BukkitTaskType { @@ -32,14 +28,6 @@ public final class BreedingTaskType extends BukkitTaskType { 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"); - return problems; - } - @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) public void onBreed(CreatureSpawnEvent e) { if (!e.getSpawnReason().equals(SpawnReason.BREEDING)) { 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 03550421..3939b09b 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 @@ -3,7 +3,6 @@ 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.player.QPlayer; import com.leonardobishop.quests.common.player.questprogressfile.TaskProgress; import com.leonardobishop.quests.common.quest.Quest; @@ -17,11 +16,8 @@ import org.bukkit.event.EventPriority; import org.bukkit.event.block.Action; import org.bukkit.event.inventory.BrewEvent; import org.bukkit.event.player.PlayerInteractEvent; -import org.jetbrains.annotations.NotNull; -import java.util.ArrayList; import java.util.HashMap; -import java.util.List; import java.util.UUID; public final class BrewingTaskType extends BukkitTaskType { @@ -37,14 +33,6 @@ public final class BrewingTaskType extends BukkitTaskType { 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"); - return problems; - } - @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) public void onBlockPlace(PlayerInteractEvent event) { if (event.getAction() == Action.RIGHT_CLICK_BLOCK) { 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 05b2ccd6..afb7e71e 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 @@ -3,8 +3,6 @@ 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.TaskProgress; import com.leonardobishop.quests.common.quest.Quest; @@ -13,10 +11,6 @@ import org.bukkit.Material; import org.bukkit.entity.Player; import org.jetbrains.annotations.NotNull; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - public abstract class BucketInteractionTaskType extends BukkitTaskType { public BucketInteractionTaskType(@NotNull String type, String author, String description) { @@ -28,27 +22,6 @@ public abstract class BucketInteractionTaskType extends BukkitTaskType { 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"); - return problems; - } - public void onBucket(Player player, Material bucket, BukkitQuestsPlugin plugin) { if (!player.isOnline() || player.hasMetadata("NPC") || bucket == null) return; 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 deleted file mode 100644 index 9fab306c..00000000 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/BuildingCertainTaskType.java +++ /dev/null @@ -1,146 +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.Material; -import org.bukkit.block.Block; -import org.bukkit.entity.Player; -import org.bukkit.event.EventHandler; -import org.bukkit.event.EventPriority; -import org.bukkit.event.block.BlockBreakEvent; -import org.bukkit.event.block.BlockPlaceEvent; -import org.jetbrains.annotations.NotNull; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -public final class BuildingCertainTaskType extends BukkitTaskType { - - private final BukkitQuestsPlugin plugin; - - 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"); - return problems; - } - - @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) - public void onBlockPlace(BlockPlaceEvent event) { - if (event.getPlayer().hasMetadata("NPC")) return; - - QPlayer qPlayer = plugin.getPlayerManager().getPlayer(event.getPlayer().getUniqueId()); - if (qPlayer == null) { - return; - } - - Player player = event.getPlayer(); - - for (TaskUtils.PendingTask pendingTask : TaskUtils.getApplicableTasks(event.getPlayer(), qPlayer, this, TaskUtils.TaskConstraint.WORLD)) { - Quest quest = pendingTask.quest(); - Task task = pendingTask.task(); - TaskProgress taskProgress = pendingTask.taskProgress(); - - super.debug("Player placed block " + event.getBlock().getType(), quest.getId(), task.getId(), event.getPlayer().getUniqueId()); - - if (TaskUtils.matchBlock(this, pendingTask, event.getBlock(), player.getUniqueId())) { - int progress = TaskUtils.incrementIntegerTaskProgress(taskProgress); - super.debug("Incrementing task progress (now " + progress + ")", quest.getId(), task.getId(), player.getUniqueId()); - - int blocksNeeded = (int) task.getConfigValue("amount"); - - if (progress >= blocksNeeded) { - super.debug("Marking task as complete", quest.getId(), task.getId(), player.getUniqueId()); - taskProgress.setCompleted(true); - } - } - } - } - - // subtract if enabled - @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) - public void onBlockBreak(BlockBreakEvent event) { - if (event.getPlayer().hasMetadata("NPC")) return; - - QPlayer qPlayer = plugin.getPlayerManager().getPlayer(event.getPlayer().getUniqueId()); - if (qPlayer == null) { - return; - } - - Player player = event.getPlayer(); - - for (TaskUtils.PendingTask pendingTask : TaskUtils.getApplicableTasks(event.getPlayer(), qPlayer, this, TaskUtils.TaskConstraint.WORLD)) { - Quest quest = pendingTask.quest(); - Task task = pendingTask.task(); - TaskProgress taskProgress = pendingTask.taskProgress(); - - super.debug("Player mined block " + event.getBlock().getType(), quest.getId(), task.getId(), event.getPlayer().getUniqueId()); - - - if (task.getConfigValue("reverse-if-broken") != null && ((boolean) task.getConfigValue("reverse-if-placed"))) { - super.debug("reverse-if-broken is enabled, checking block", quest.getId(), task.getId(), event.getPlayer().getUniqueId()); - if (TaskUtils.matchBlock(this, pendingTask, event.getBlock(), player.getUniqueId())) { - int progress = TaskUtils.getIntegerTaskProgress(taskProgress); - taskProgress.setProgress(--progress); - super.debug("Decrementing task progress (now " + progress + ")", quest.getId(), task.getId(), player.getUniqueId()); - } - } - } - } - - -} 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 192d53be..2fc5798b 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 @@ -3,35 +3,30 @@ 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.player.QPlayer; 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.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; +import org.bukkit.event.block.BlockBreakEvent; import org.bukkit.event.block.BlockPlaceEvent; -import org.jetbrains.annotations.NotNull; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; public final class BuildingTaskType extends BukkitTaskType { private final BukkitQuestsPlugin plugin; public BuildingTaskType(BukkitQuestsPlugin plugin) { - super("blockplace", TaskUtils.TASK_ATTRIBUTION_STRING, "Place a set amount of blocks."); + super("blockplace", TaskUtils.TASK_ATTRIBUTION_STRING, "Place a set amount of a block.", "blockplacecertain"); 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"); - return problems; + super.addConfigValidator(TaskUtils.useRequiredConfigValidator(this, "amount")); + super.addConfigValidator(TaskUtils.useIntegerConfigValidator(this, "amount")); + 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")); } @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) @@ -43,23 +38,59 @@ public final class BuildingTaskType extends BukkitTaskType { return; } + Player player = event.getPlayer(); + for (TaskUtils.PendingTask pendingTask : TaskUtils.getApplicableTasks(event.getPlayer(), qPlayer, this, TaskUtils.TaskConstraint.WORLD)) { Quest quest = pendingTask.quest(); Task task = pendingTask.task(); TaskProgress taskProgress = pendingTask.taskProgress(); - super.debug("Player placed block", quest.getId(), task.getId(), event.getPlayer().getUniqueId()); + super.debug("Player placed block " + event.getBlock().getType(), quest.getId(), task.getId(), event.getPlayer().getUniqueId()); + + if (TaskUtils.matchBlock(this, pendingTask, event.getBlock(), player.getUniqueId())) { + int progress = TaskUtils.incrementIntegerTaskProgress(taskProgress); + super.debug("Incrementing task progress (now " + progress + ")", quest.getId(), task.getId(), player.getUniqueId()); + + int blocksNeeded = (int) task.getConfigValue("amount"); + + if (progress >= blocksNeeded) { + super.debug("Marking task as complete", quest.getId(), task.getId(), player.getUniqueId()); + taskProgress.setCompleted(true); + } + } + } + } + + // subtract if enabled + @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) + public void onBlockBreak(BlockBreakEvent event) { + if (event.getPlayer().hasMetadata("NPC")) return; + + QPlayer qPlayer = plugin.getPlayerManager().getPlayer(event.getPlayer().getUniqueId()); + if (qPlayer == null) { + return; + } + + Player player = event.getPlayer(); - int brokenBlocksNeeded = (int) task.getConfigValue("amount"); + for (TaskUtils.PendingTask pendingTask : TaskUtils.getApplicableTasks(event.getPlayer(), qPlayer, this, TaskUtils.TaskConstraint.WORLD)) { + Quest quest = pendingTask.quest(); + Task task = pendingTask.task(); + TaskProgress taskProgress = pendingTask.taskProgress(); + + super.debug("Player mined block " + event.getBlock().getType(), quest.getId(), task.getId(), event.getPlayer().getUniqueId()); - int progress = TaskUtils.incrementIntegerTaskProgress(taskProgress); - super.debug("Incrementing task progress (now " + progress + ")", quest.getId(), task.getId(), event.getPlayer().getUniqueId()); - if (progress >= brokenBlocksNeeded) { - super.debug("Marking task as complete", quest.getId(), task.getId(), event.getPlayer().getUniqueId()); - taskProgress.setCompleted(true); + if (task.getConfigValue("reverse-if-broken") != null && ((boolean) task.getConfigValue("reverse-if-placed"))) { + super.debug("reverse-if-broken is enabled, checking block", quest.getId(), task.getId(), event.getPlayer().getUniqueId()); + if (TaskUtils.matchBlock(this, pendingTask, event.getBlock(), player.getUniqueId())) { + int progress = TaskUtils.getIntegerTaskProgress(taskProgress); + taskProgress.setProgress(--progress); + super.debug("Decrementing task progress (now " + progress + ")", quest.getId(), task.getId(), player.getUniqueId()); + } } } } + } 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 19ac6af7..616d88d2 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 @@ -3,9 +3,7 @@ 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.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; @@ -13,10 +11,7 @@ import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.player.PlayerCommandPreprocessEvent; -import org.jetbrains.annotations.NotNull; -import java.util.ArrayList; -import java.util.HashMap; import java.util.List; public final class CommandTaskType extends BukkitTaskType { @@ -31,14 +26,6 @@ public final class CommandTaskType extends BukkitTaskType { 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()); - return problems; - } - @EventHandler(priority = EventPriority.MONITOR) public void onCommand(PlayerCommandPreprocessEvent e) { if (e.getPlayer().hasMetadata("NPC")) return; 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 eb5aa5d0..a2359e36 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 @@ -6,7 +6,6 @@ import com.leonardobishop.quests.bukkit.BukkitQuestsPlugin; import com.leonardobishop.quests.bukkit.item.QuestItem; 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.TaskProgress; import com.leonardobishop.quests.common.quest.Quest; @@ -15,11 +14,6 @@ import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.player.PlayerItemConsumeEvent; -import org.jetbrains.annotations.NotNull; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; public final class ConsumeTaskType extends BukkitTaskType { @@ -38,17 +32,6 @@ public final class ConsumeTaskType 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())) -// 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; - } - - @Override public void onReady() { fixedQuestItemCache.clear(); } 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 8c773db1..3076bf2a 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 @@ -3,18 +3,14 @@ package com.leonardobishop.quests.bukkit.tasktype.type; import com.google.common.collect.HashBasedTable; import com.google.common.collect.Table; import com.leonardobishop.quests.bukkit.BukkitQuestsPlugin; -import com.leonardobishop.quests.bukkit.item.ParsedQuestItem; import com.leonardobishop.quests.bukkit.item.QuestItem; 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; import org.bukkit.Material; -import org.bukkit.configuration.ConfigurationSection; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; @@ -23,11 +19,6 @@ import org.bukkit.event.inventory.CraftItemEvent; import org.bukkit.event.inventory.InventoryAction; import org.bukkit.event.inventory.InventoryType; import org.bukkit.inventory.ItemStack; -import org.jetbrains.annotations.NotNull; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; public final class CraftingTaskType extends BukkitTaskType { @@ -47,17 +38,6 @@ public final class CraftingTaskType 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())) -// 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; - } - - @Override public void onReady() { fixedQuestItemCache.clear(); } 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 4d2b7e89..d3ffe0a3 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 @@ -3,9 +3,7 @@ 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.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; @@ -15,11 +13,6 @@ import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.entity.EntityDamageByEntityEvent; -import org.jetbrains.annotations.NotNull; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; public final class DealDamageTaskType extends BukkitTaskType { @@ -34,15 +27,6 @@ public final class DealDamageTaskType extends BukkitTaskType { 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"); - return problems; - } - @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) public void onDamage(EntityDamageByEntityEvent event) { if (!(event.getDamager() instanceof Player)) { 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 15f35a66..11529c84 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 @@ -3,9 +3,7 @@ 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.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; @@ -16,11 +14,6 @@ import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.player.PlayerMoveEvent; -import org.jetbrains.annotations.NotNull; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; public final class DistancefromTaskType extends BukkitTaskType { @@ -40,21 +33,7 @@ public final class DistancefromTaskType extends BukkitTaskType { 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"); - return problems; - } - -// private HashMap<String, HashMap<String, Integer>> distanceSquaredCache = new HashMap<>(); + // private HashMap<String, HashMap<String, Integer>> distanceSquaredCache = new HashMap<>(); // // @Override // public void onReady() { 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 975fe0b2..a9def444 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 @@ -3,9 +3,7 @@ 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.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; @@ -13,11 +11,6 @@ import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.enchantment.EnchantItemEvent; -import org.jetbrains.annotations.NotNull; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; public final class EnchantingTaskType extends BukkitTaskType { @@ -31,14 +24,6 @@ public final class EnchantingTaskType extends BukkitTaskType { 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"); - return problems; - } - @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) public void onEnchant(EnchantItemEvent e) { if (e.getEnchanter().hasMetadata("NPC")) return; 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 63867b26..63d5ea8b 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 @@ -3,9 +3,7 @@ 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.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; @@ -13,11 +11,6 @@ import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.player.PlayerExpChangeEvent; -import org.jetbrains.annotations.NotNull; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; public final class ExpEarnTaskType extends BukkitTaskType { @@ -31,14 +24,6 @@ public final class ExpEarnTaskType extends BukkitTaskType { 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"); - return problems; - } - @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) public void onExpEarn(PlayerExpChangeEvent e) { Player player = e.getPlayer(); 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 deleted file mode 100644 index 282dc1ba..00000000 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/FarmingCertainTaskType.java +++ /dev/null @@ -1,155 +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.Material; -import org.bukkit.block.Block; -import org.bukkit.block.data.Ageable; -import org.bukkit.entity.Player; -import org.bukkit.event.EventHandler; -import org.bukkit.event.EventPriority; -import org.bukkit.event.Listener; -import org.bukkit.event.block.BlockBreakEvent; -import org.jetbrains.annotations.NotNull; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -public final class FarmingCertainTaskType extends BukkitTaskType { - - private final BukkitQuestsPlugin plugin; - - public FarmingCertainTaskType(BukkitQuestsPlugin plugin) { - super("farmingcertain", TaskUtils.TASK_ATTRIBUTION_STRING, "Break or harvest a set amount of a certain crop."); - this.plugin = plugin; - - try { - 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)); -// } -// } -// } - return problems; - } - - @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) - public void onBlockBreak(BlockBreakEvent event) { - handle(event.getPlayer(), event.getBlock(), "break"); - } - - private final class HarvestBlockListener implements Listener { - @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) - public void onHarvestBlock(org.bukkit.event.player.PlayerHarvestBlockEvent event) { - handle(event.getPlayer(), event.getHarvestedBlock(), "harvest"); - } - } - - private void handle(Player player, Block block, String mode) { - if (!(block.getState().getBlockData() instanceof Ageable)) { - return; - } - - Ageable crop = (Ageable) block.getState().getBlockData(); - if (crop.getAge() != crop.getMaximumAge()) { - return; - } - - QPlayer qPlayer = plugin.getPlayerManager().getPlayer(player.getUniqueId()); - if (qPlayer == null) { - return; - } - - for (TaskUtils.PendingTask pendingTask : TaskUtils.getApplicableTasks(player, qPlayer, this, TaskUtils.TaskConstraint.WORLD)) { - Quest quest = pendingTask.quest(); - Task task = pendingTask.task(); - TaskProgress taskProgress = pendingTask.taskProgress(); - - super.debug("Player farmed crop " + crop.getMaterial() + " (mode = " + mode + ")", quest.getId(), task.getId(), player.getUniqueId()); - - if (task.getConfigValue("mode") != null - && !mode.equalsIgnoreCase(task.getConfigValue("mode").toString())) { - super.debug("Mode does not match required mode, continuing...", quest.getId(), task.getId(), player.getUniqueId()); - continue; - } - - if (matchBlock(task, quest, player, block)) { - 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); - } - } - } - } - - private boolean matchBlock(Task task, Quest quest, Player player, Block block) { - Material material; - - List<String> checkBlocks = TaskUtils.getConfigStringList(task, task.getConfigValues().containsKey("block") ? "block" : "blocks"); - - for (String materialName : checkBlocks) { - super.debug("Checking against '" + materialName + "'", quest.getId(), task.getId(), player.getUniqueId()); - material = Material.getMaterial(String.valueOf(materialName)); - Material blockType = block.getType(); - - if (blockType == material) { - super.debug("Type match", quest.getId(), task.getId(), player.getUniqueId()); - return true; - } else { - super.debug("Type mismatch", quest.getId(), task.getId(), player.getUniqueId()); - } - } - return false; - } - -}
\ No newline at end of file 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 9b852439..ad8ac269 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 @@ -3,12 +3,11 @@ 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.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.Material; import org.bukkit.block.Block; import org.bukkit.block.data.Ageable; import org.bukkit.entity.Player; @@ -16,10 +15,7 @@ import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; import org.bukkit.event.block.BlockBreakEvent; -import org.jetbrains.annotations.NotNull; -import java.util.ArrayList; -import java.util.HashMap; import java.util.List; public final class FarmingTaskType extends BukkitTaskType { @@ -27,24 +23,17 @@ public final class FarmingTaskType extends BukkitTaskType { private final BukkitQuestsPlugin plugin; public FarmingTaskType(BukkitQuestsPlugin plugin) { - super("farming", TaskUtils.TASK_ATTRIBUTION_STRING, "Break or harvest a set amount of any crop."); + super("farming", TaskUtils.TASK_ATTRIBUTION_STRING, "Break or harvest a set amount of a crop.", "farmingcertain"); 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); } catch (ClassNotFoundException ignored) { } // server version cannot support event - } - @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"); - return problems; + super.addConfigValidator(TaskUtils.useRequiredConfigValidator(this, "amount")); + super.addConfigValidator(TaskUtils.useIntegerConfigValidator(this, "amount")); + super.addConfigValidator(TaskUtils.useMaterialListConfigValidator(this, "block", "blocks")); } @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) @@ -74,41 +63,54 @@ public final class FarmingTaskType extends BukkitTaskType { return; } - for (Quest quest : super.getRegisteredQuests()) { - if (qPlayer.hasStartedQuest(quest)) { - QuestProgress questProgress = qPlayer.getQuestProgressFile().getQuestProgress(quest); + for (TaskUtils.PendingTask pendingTask : TaskUtils.getApplicableTasks(player, qPlayer, this, TaskUtils.TaskConstraint.WORLD)) { + Quest quest = pendingTask.quest(); + Task task = pendingTask.task(); + TaskProgress taskProgress = pendingTask.taskProgress(); + + super.debug("Player farmed crop " + crop.getMaterial() + " (mode = " + mode + ")", quest.getId(), task.getId(), player.getUniqueId()); - for (Task task : quest.getTasksOfType(super.getType())) { - if (!TaskUtils.validateWorld(player, task)) continue; + if (task.getConfigValue("mode") != null + && !mode.equalsIgnoreCase(task.getConfigValue("mode").toString())) { + super.debug("Mode does not match required mode, continuing...", quest.getId(), task.getId(), player.getUniqueId()); + continue; + } - TaskProgress taskProgress = questProgress.getTaskProgress(task.getId()); + if (matchBlock(task, quest, player, block)) { + int progress = TaskUtils.incrementIntegerTaskProgress(taskProgress); + super.debug("Incrementing task progress (now " + progress + ")", quest.getId(), task.getId(), player.getUniqueId()); - if (taskProgress.isCompleted()) { - continue; - } + int amount = (int) task.getConfigValue("amount"); - if (task.getConfigValue("mode") != null - && !mode.equalsIgnoreCase(task.getConfigValue("mode").toString())) { - continue; - } + if (progress >= amount) { + super.debug("Marking task as complete", quest.getId(), task.getId(), player.getUniqueId()); + taskProgress.setCompleted(true); + } + } + } + } - int blocksNeeded = (int) task.getConfigValue("amount"); + private boolean matchBlock(Task task, Quest quest, Player player, Block block) { + Material material; - int progressBlocks; - if (taskProgress.getProgress() == null) { - progressBlocks = 0; - } else { - progressBlocks = (int) taskProgress.getProgress(); - } + List<String> checkBlocks = TaskUtils.getConfigStringList(task, task.getConfigValues().containsKey("block") ? "block" : "blocks"); + if (checkBlocks.isEmpty()) { + return true; + } - taskProgress.setProgress(progressBlocks + 1); + for (String materialName : checkBlocks) { + super.debug("Checking against '" + materialName + "'", quest.getId(), task.getId(), player.getUniqueId()); + material = Material.getMaterial(String.valueOf(materialName)); + Material blockType = block.getType(); - if (((int) taskProgress.getProgress()) >= blocksNeeded) { - taskProgress.setCompleted(true); - } - } + if (blockType == material) { + super.debug("Type match", quest.getId(), task.getId(), player.getUniqueId()); + return true; + } else { + super.debug("Type mismatch", quest.getId(), task.getId(), player.getUniqueId()); } } + return false; } }
\ No newline at end of file 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 deleted file mode 100644 index 6c53899c..00000000 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/FishingCertainTaskType.java +++ /dev/null @@ -1,114 +0,0 @@ -package com.leonardobishop.quests.bukkit.tasktype.type; - -import com.google.common.collect.HashBasedTable; -import com.google.common.collect.Table; -import com.leonardobishop.quests.bukkit.BukkitQuestsPlugin; -import com.leonardobishop.quests.bukkit.item.QuestItem; -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.Material; -import org.bukkit.entity.Item; -import org.bukkit.entity.Player; -import org.bukkit.event.EventHandler; -import org.bukkit.event.EventPriority; -import org.bukkit.event.player.PlayerFishEvent; -import org.bukkit.inventory.ItemStack; -import org.jetbrains.annotations.NotNull; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -public final class FishingCertainTaskType extends BukkitTaskType { - - private final BukkitQuestsPlugin plugin; - private final Table<String, String, QuestItem> fixedQuestItemCache = HashBasedTable.create(); - - 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 - public void onReady() { - fixedQuestItemCache.clear(); - } - - @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"); - return problems; - } - - @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) - public void onFishCaught(PlayerFishEvent event) { - if (event.getPlayer().hasMetadata("NPC")) return; - - if (event.getState() != PlayerFishEvent.State.CAUGHT_FISH) { - return; - } - - Player player = event.getPlayer(); - if (!(event.getCaught() instanceof Item caught)) { - return; - } - QPlayer qPlayer = plugin.getPlayerManager().getPlayer(player.getUniqueId()); - if (qPlayer == null) { - return; - } - - for (TaskUtils.PendingTask pendingTask : TaskUtils.getApplicableTasks(player, qPlayer, this)) { - Quest quest = pendingTask.quest(); - Task task = pendingTask.task(); - TaskProgress taskProgress = pendingTask.taskProgress(); - - QuestItem qi; - if ((qi = fixedQuestItemCache.get(quest.getId(), task.getId())) == null) { - QuestItem fetchedItem = TaskUtils.getConfigQuestItem(task, "item", "data"); - fixedQuestItemCache.put(quest.getId(), task.getId(), fetchedItem); - qi = fetchedItem; - } - - super.debug("Player fished item of type " + caught.getItemStack().getType(), quest.getId(), task.getId(), event.getPlayer().getUniqueId()); - if (!qi.compareItemStack(caught.getItemStack())) { - super.debug("Item does not match required item, continuing...", quest.getId(), task.getId(), event.getPlayer().getUniqueId()); - continue; - } - - int progress = TaskUtils.incrementIntegerTaskProgress(taskProgress); - super.debug("Incrementing task progress (now " + progress + ")", quest.getId(), task.getId(), player.getUniqueId()); - - int catchesNeeded = (int) task.getConfigValue("amount"); - - if (progress >= catchesNeeded) { - 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/FishingTaskType.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/FishingTaskType.java index b2e7f861..81a8de07 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 @@ -1,42 +1,39 @@ package com.leonardobishop.quests.bukkit.tasktype.type; +import com.google.common.collect.HashBasedTable; +import com.google.common.collect.Table; import com.leonardobishop.quests.bukkit.BukkitQuestsPlugin; +import com.leonardobishop.quests.bukkit.item.QuestItem; 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; +import org.bukkit.entity.Item; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.player.PlayerFishEvent; -import org.jetbrains.annotations.NotNull; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; public final class FishingTaskType extends BukkitTaskType { private final BukkitQuestsPlugin plugin; + private final Table<String, String, QuestItem> fixedQuestItemCache = HashBasedTable.create(); public FishingTaskType(BukkitQuestsPlugin plugin) { - super("fishing", TaskUtils.TASK_ATTRIBUTION_STRING, "Catch a set amount of items from the sea."); + super("fishing", TaskUtils.TASK_ATTRIBUTION_STRING, "Catch a set amount of an item from the sea.", "fishingcertain"); this.plugin = plugin; super.addConfigValidator(TaskUtils.useRequiredConfigValidator(this, "amount")); super.addConfigValidator(TaskUtils.useIntegerConfigValidator(this, "amount")); + 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 + ".amount", config.get("amount"), problems, "amount", super.getType())) -// TaskUtils.configValidateInt(root + ".amount", config.get("amount"), problems, false, true, "amount"); - return problems; + public void onReady() { + fixedQuestItemCache.clear(); } @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) @@ -46,47 +43,45 @@ public final class FishingTaskType extends BukkitTaskType { if (event.getState() != PlayerFishEvent.State.CAUGHT_FISH) { return; } - -// Location hookLocation = event.getHook().getLocation().add(0, -1, 0); -// if (!(hookLocation.getBlock().getType() == Material.WATER)) { -// return; -// } Player player = event.getPlayer(); - + if (!(event.getCaught() instanceof Item caught)) { + return; + } QPlayer qPlayer = plugin.getPlayerManager().getPlayer(player.getUniqueId()); if (qPlayer == null) { return; } - for (Quest quest : super.getRegisteredQuests()) { - if (qPlayer.hasStartedQuest(quest)) { - QuestProgress questProgress = qPlayer.getQuestProgressFile().getQuestProgress(quest); + for (TaskUtils.PendingTask pendingTask : TaskUtils.getApplicableTasks(player, qPlayer, this)) { + Quest quest = pendingTask.quest(); + Task task = pendingTask.task(); + TaskProgress taskProgress = pendingTask.taskProgress(); - for (Task task : quest.getTasksOfType(super.getType())) { - if (!TaskUtils.validateWorld(player, task)) continue; + super.debug("Player fished item of type " + caught.getItemStack().getType(), quest.getId(), task.getId(), event.getPlayer().getUniqueId()); - TaskProgress taskProgress = questProgress.getTaskProgress(task.getId()); - - if (taskProgress.isCompleted()) { - continue; - } + if (task.hasConfigKey("item")) { + QuestItem qi; + if ((qi = fixedQuestItemCache.get(quest.getId(), task.getId())) == null) { + QuestItem fetchedItem = TaskUtils.getConfigQuestItem(task, "item", "data"); + fixedQuestItemCache.put(quest.getId(), task.getId(), fetchedItem); + qi = fetchedItem; + } - int catchesNeeded = (int) task.getConfigValue("amount"); + if (!qi.compareItemStack(caught.getItemStack())) { + super.debug("Item does not match required item, continuing...", quest.getId(), task.getId(), event.getPlayer().getUniqueId()); + continue; + } + } - int progressCatches; - if (taskProgress.getProgress() == null) { - progressCatches = 0; - } else { - progressCatches = (int) taskProgress.getProgress(); - } + int progress = TaskUtils.incrementIntegerTaskProgress(taskProgress); + super.debug("Incrementing task progress (now " + progress + ")", quest.getId(), task.getId(), player.getUniqueId()); - taskProgress.setProgress(progressCatches + 1); + int catchesNeeded = (int) task.getConfigValue("amount"); - if (((int) taskProgress.getProgress()) >= catchesNeeded) { - taskProgress.setCompleted(true); - } - } + if (progress >= catchesNeeded) { + 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/InventoryTaskType.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/InventoryTaskType.java index 9fd9d38d..04de9ed6 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 @@ -3,19 +3,14 @@ package com.leonardobishop.quests.bukkit.tasktype.type; import com.google.common.collect.HashBasedTable; import com.google.common.collect.Table; import com.leonardobishop.quests.bukkit.BukkitQuestsPlugin; -import com.leonardobishop.quests.bukkit.item.ParsedQuestItem; import com.leonardobishop.quests.bukkit.item.QuestItem; 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; import org.bukkit.Bukkit; -import org.bukkit.Material; -import org.bukkit.configuration.ConfigurationSection; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; @@ -24,12 +19,6 @@ import org.bukkit.event.inventory.InventoryCloseEvent; import org.bukkit.event.player.PlayerBucketEmptyEvent; import org.bukkit.event.player.PlayerBucketFillEvent; import org.bukkit.event.player.PlayerPickupItemEvent; -import org.bukkit.inventory.ItemStack; -import org.jetbrains.annotations.NotNull; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; public final class InventoryTaskType extends BukkitTaskType { @@ -55,20 +44,6 @@ public final class InventoryTaskType 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())) -// 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; - } - - @Override public void onReady() { fixedQuestItemCache.clear(); } 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 e9bb4b60..776f0878 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 @@ -3,10 +3,7 @@ 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.player.QPlayer; -import com.leonardobishop.quests.common.player.questprogressfile.QuestProgress; -import com.leonardobishop.quests.common.player.questprogressfile.QuestProgressFile; import com.leonardobishop.quests.common.player.questprogressfile.TaskProgress; import com.leonardobishop.quests.common.quest.Quest; import com.leonardobishop.quests.common.quest.Task; @@ -16,11 +13,6 @@ import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.player.PlayerInteractEntityEvent; -import org.jetbrains.annotations.NotNull; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; public final class MilkingTaskType extends BukkitTaskType { @@ -34,14 +26,6 @@ public final class MilkingTaskType extends BukkitTaskType { 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"); - return problems; - } - @SuppressWarnings("deprecation") @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) public void onMilk(PlayerInteractEntityEvent event) { 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 deleted file mode 100644 index 65089acd..00000000 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/MiningCertainTaskType.java +++ /dev/null @@ -1,161 +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.Material; -import org.bukkit.block.Block; -import org.bukkit.entity.Player; -import org.bukkit.event.EventHandler; -import org.bukkit.event.EventPriority; -import org.bukkit.event.block.BlockBreakEvent; -import org.bukkit.event.block.BlockPlaceEvent; -import org.jetbrains.annotations.NotNull; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -public final class MiningCertainTaskType extends BukkitTaskType { - - private final BukkitQuestsPlugin plugin; - - 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"); - return problems; - } - - @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) - public void onBlockBreak(BlockBreakEvent event) { - if (event.getPlayer().hasMetadata("NPC")) return; - - QPlayer qPlayer = plugin.getPlayerManager().getPlayer(event.getPlayer().getUniqueId()); - if (qPlayer == null) { - return; - } - - Player player = event.getPlayer(); - - for (TaskUtils.PendingTask pendingTask : TaskUtils.getApplicableTasks(event.getPlayer(), qPlayer, this, TaskUtils.TaskConstraint.WORLD)) { - Quest quest = pendingTask.quest(); - Task task = pendingTask.task(); - TaskProgress taskProgress = pendingTask.taskProgress(); - - super.debug("Player mined block " + event.getBlock().getType(), quest.getId(), task.getId(), event.getPlayer().getUniqueId()); - - if (TaskUtils.matchBlock(this, pendingTask, event.getBlock(), player.getUniqueId())) { - boolean coreProtectEnabled = (boolean) task.getConfigValue("check-coreprotect", false); - int coreProtectTime = (int) task.getConfigValue("check-coreprotect-time", 3600); - - if (coreProtectEnabled && plugin.getCoreProtectHook() == null) { - super.debug("check-coreprotect is enabled, but CoreProtect is not detected on the server", quest.getId(), task.getId(), player.getUniqueId()); - } - - if (plugin.getCoreProtectHook() != null && plugin.getCoreProtectHook().checkBlock(event.getBlock(), coreProtectTime)) { - super.debug("CoreProtect indicates blocks was recently placed, 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 blocksNeeded = (int) task.getConfigValue("amount"); - - if (progress >= blocksNeeded) { - super.debug("Marking task as complete", quest.getId(), task.getId(), player.getUniqueId()); - taskProgress.setCompleted(true); - } - } - } - } - - // subtract if enabled - @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) - public void onBlockPlace(BlockPlaceEvent event) { - if (event.getPlayer().hasMetadata("NPC")) return; - - QPlayer qPlayer = plugin.getPlayerManager().getPlayer(event.getPlayer().getUniqueId()); - if (qPlayer == null) { - return; - } - - Player player = event.getPlayer(); - - for (TaskUtils.PendingTask pendingTask : TaskUtils.getApplicableTasks(event.getPlayer(), qPlayer, this, TaskUtils.TaskConstraint.WORLD)) { - Quest quest = pendingTask.quest(); - Task task = pendingTask.task(); - TaskProgress taskProgress = pendingTask.taskProgress(); - - super.debug("Player placed block " + event.getBlock().getType(), quest.getId(), task.getId(), event.getPlayer().getUniqueId()); - - - if (task.getConfigValue("reverse-if-placed") != null && ((boolean) task.getConfigValue("reverse-if-placed"))) { - super.debug("reverse-if-placed is enabled, checking block", quest.getId(), task.getId(), event.getPlayer().getUniqueId()); - if (TaskUtils.matchBlock(this, pendingTask, event.getBlock(), player.getUniqueId())) { - int progress = TaskUtils.getIntegerTaskProgress(taskProgress); - taskProgress.setProgress(--progress); - super.debug("Decrementing task progress (now " + progress + ")", quest.getId(), task.getId(), player.getUniqueId()); - } - } - } - } - -} 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 35a7b174..037db1c7 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 @@ -3,35 +3,32 @@ 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.player.QPlayer; 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.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.block.BlockBreakEvent; -import org.jetbrains.annotations.NotNull; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; +import org.bukkit.event.block.BlockPlaceEvent; public final class MiningTaskType extends BukkitTaskType { private final BukkitQuestsPlugin plugin; public MiningTaskType(BukkitQuestsPlugin plugin) { - super("blockbreak", TaskUtils.TASK_ATTRIBUTION_STRING, "Break a set amount of blocks."); + super("blockbreak", TaskUtils.TASK_ATTRIBUTION_STRING, "Break a set amount of a block.", "blockbreakcertain"); 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"); - return problems; + super.addConfigValidator(TaskUtils.useRequiredConfigValidator(this, "amount")); + super.addConfigValidator(TaskUtils.useIntegerConfigValidator(this, "amount")); + 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")); } @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) @@ -43,21 +40,68 @@ public final class MiningTaskType extends BukkitTaskType { return; } + Player player = event.getPlayer(); + for (TaskUtils.PendingTask pendingTask : TaskUtils.getApplicableTasks(event.getPlayer(), qPlayer, this, TaskUtils.TaskConstraint.WORLD)) { Quest quest = pendingTask.quest(); Task task = pendingTask.task(); TaskProgress taskProgress = pendingTask.taskProgress(); - super.debug("Player mined block", quest.getId(), task.getId(), event.getPlayer().getUniqueId()); + super.debug("Player mined block " + event.getBlock().getType(), quest.getId(), task.getId(), event.getPlayer().getUniqueId()); + + if (TaskUtils.matchBlock(this, pendingTask, event.getBlock(), player.getUniqueId())) { + boolean coreProtectEnabled = (boolean) task.getConfigValue("check-coreprotect", false); + int coreProtectTime = (int) task.getConfigValue("check-coreprotect-time", 3600); + + if (coreProtectEnabled && plugin.getCoreProtectHook() == null) { + super.debug("check-coreprotect is enabled, but CoreProtect is not detected on the server", quest.getId(), task.getId(), player.getUniqueId()); + } + + if (plugin.getCoreProtectHook() != null && plugin.getCoreProtectHook().checkBlock(event.getBlock(), coreProtectTime)) { + super.debug("CoreProtect indicates blocks was recently placed, 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 blocksNeeded = (int) task.getConfigValue("amount"); + + if (progress >= blocksNeeded) { + super.debug("Marking task as complete", quest.getId(), task.getId(), player.getUniqueId()); + taskProgress.setCompleted(true); + } + } + } + } + + // subtract if enabled + @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) + public void onBlockPlace(BlockPlaceEvent event) { + if (event.getPlayer().hasMetadata("NPC")) return; + + QPlayer qPlayer = plugin.getPlayerManager().getPlayer(event.getPlayer().getUniqueId()); + if (qPlayer == null) { + return; + } + + Player player = event.getPlayer(); + + for (TaskUtils.PendingTask pendingTask : TaskUtils.getApplicableTasks(event.getPlayer(), qPlayer, this, TaskUtils.TaskConstraint.WORLD)) { + Quest quest = pendingTask.quest(); + Task task = pendingTask.task(); + TaskProgress taskProgress = pendingTask.taskProgress(); - int brokenBlocksNeeded = (int) task.getConfigValue("amount"); + super.debug("Player placed block " + event.getBlock().getType(), quest.getId(), task.getId(), event.getPlayer().getUniqueId()); - int progress = TaskUtils.incrementIntegerTaskProgress(taskProgress); - super.debug("Incrementing task progress (now " + progress + ")", quest.getId(), task.getId(), event.getPlayer().getUniqueId()); - if (progress >= brokenBlocksNeeded) { - super.debug("Marking task as complete", quest.getId(), task.getId(), event.getPlayer().getUniqueId()); - taskProgress.setCompleted(true); + if (task.getConfigValue("reverse-if-placed") != null && ((boolean) task.getConfigValue("reverse-if-placed"))) { + super.debug("reverse-if-placed is enabled, checking block", quest.getId(), task.getId(), event.getPlayer().getUniqueId()); + if (TaskUtils.matchBlock(this, pendingTask, event.getBlock(), player.getUniqueId())) { + int progress = TaskUtils.getIntegerTaskProgress(taskProgress); + taskProgress.setProgress(--progress); + super.debug("Decrementing task progress (now " + progress + ")", quest.getId(), task.getId(), player.getUniqueId()); + } } } } 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 deleted file mode 100644 index 3284859f..00000000 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/MobkillingCertainTaskType.java +++ /dev/null @@ -1,158 +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.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; -import com.leonardobishop.quests.common.quest.Quest; -import com.leonardobishop.quests.common.quest.Task; -import org.bukkit.entity.Entity; -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.EntityDeathEvent; -import org.jetbrains.annotations.NotNull; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -public final class MobkillingCertainTaskType extends BukkitTaskType { - - private final BukkitQuestsPlugin plugin; - - 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 - public @NotNull List<ConfigProblem> validateConfig(@NotNull String root, @NotNull HashMap<String, Object> config) { - ArrayList<ConfigProblem> problems = new ArrayList<>(); - if (config.get("mob") == null && config.get("mobs") == null) { - TaskUtils.configValidateExists(root + ".mob", config.get("mob"), problems, "mob", super.getType()); - } else { - Object configMob; - String source; - if (config.containsKey("mob")) { - source = "mob"; - } else { - source = "mobs"; - } - configMob = config.get(source); - List<String> checkBlocks = new ArrayList<>(); - if (configMob instanceof List) { - checkBlocks.addAll((List) configMob); - } else { - checkBlocks.add(String.valueOf(configMob)); - } - for (String mobName : checkBlocks) { - try { - EntityType.valueOf(mobName); - } catch (IllegalArgumentException ex) { - problems.add(new ConfigProblem(ConfigProblem.ConfigProblemType.WARNING, - ConfigProblemDescriptions.UNKNOWN_ENTITY_TYPE.getDescription(mobName), - ConfigProblemDescriptions.UNKNOWN_ENTITY_TYPE.getExtendedDescription(mobName), - 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"); - return problems; - } - - @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) - public void onMobKill(EntityDeathEvent event) { - Player killer = event.getEntity().getKiller(); - Entity mob = event.getEntity(); - - if (mob == null || mob instanceof Player) { - return; - } - - if (killer == null) { - return; - } - - if (killer.hasMetadata("NPC")) return; - - QPlayer qPlayer = plugin.getPlayerManager().getPlayer(killer.getUniqueId()); - if (qPlayer == null) { - return; - } - - for (TaskUtils.PendingTask pendingTask : TaskUtils.getApplicableTasks(killer, qPlayer, this, TaskUtils.TaskConstraint.WORLD)) { - Quest quest = pendingTask.quest(); - Task task = pendingTask.task(); - TaskProgress taskProgress = pendingTask.taskProgress(); - - List<String> configEntities = TaskUtils.getConfigStringList(task, task.getConfigValues().containsKey("mob") ? "mob" : "mobs"); - - super.debug("Player killed " + mob.getType(), quest.getId(), task.getId(), killer.getUniqueId()); - - boolean validMob = false; - for (String entry : configEntities) { - super.debug("Checking against mob '" + entry + "'", quest.getId(), task.getId(), killer.getUniqueId()); - try { - EntityType entity = EntityType.valueOf(entry); - if (mob.getType() == entity) { - super.debug("Mob is valid", quest.getId(), task.getId(), killer.getUniqueId()); - validMob = true; - break; - } - } catch (IllegalArgumentException ignored) { } - } - - if (!validMob) { - super.debug("Mob is not in list of required mobs, continuing...", quest.getId(), task.getId(), killer.getUniqueId()); - continue; - } - - List<String> configNames = TaskUtils.getConfigStringList(task, task.getConfigValues().containsKey("name") ? "name" : "names"); - - if (!configNames.isEmpty()) { - super.debug("List of required names exists; mob name is '" + Chat.legacyStrip(mob.getCustomName()) + "'", quest.getId(), task.getId(), killer.getUniqueId()); - - boolean validName = false; - for (String name : configNames) { - super.debug("Checking against name '" + name + "'", quest.getId(), task.getId(), killer.getUniqueId()); - name = Chat.legacyColor(name); - if (mob.getCustomName() != null && !mob.getCustomName().equals(name)) { - super.debug("Mob has valid name", quest.getId(), task.getId(), killer.getUniqueId()); - validName = true; - break; - } - } - - if (!validName) { - super.debug("Mob name is not in list of valid name, continuing...", quest.getId(), task.getId(), killer.getUniqueId()); - continue; - } - } - - int mobKillsNeeded = (int) task.getConfigValue("amount"); - - int progress = TaskUtils.incrementIntegerTaskProgress(taskProgress); - super.debug("Incrementing task progress (now " + progress + ")", quest.getId(), task.getId(), killer.getUniqueId()); - - if (progress >= mobKillsNeeded) { - super.debug("Marking task as complete", quest.getId(), task.getId(), killer.getUniqueId()); - taskProgress.setCompleted(true); - } - } - } - -} 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 90a55f65..f8952675 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 @@ -3,23 +3,16 @@ 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.bukkit.util.chat.Chat; 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.Animals; -import org.bukkit.entity.Entity; -import org.bukkit.entity.Monster; -import org.bukkit.entity.Player; +import org.bukkit.entity.*; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.entity.EntityDeathEvent; -import org.jetbrains.annotations.NotNull; -import java.util.ArrayList; -import java.util.HashMap; import java.util.List; public final class MobkillingTaskType extends BukkitTaskType { @@ -27,26 +20,18 @@ public final class MobkillingTaskType extends BukkitTaskType { private final BukkitQuestsPlugin plugin; public MobkillingTaskType(BukkitQuestsPlugin plugin) { - super("mobkilling", TaskUtils.TASK_ATTRIBUTION_STRING, "Kill a set amount of entities."); + super("mobkilling", TaskUtils.TASK_ATTRIBUTION_STRING, "Kill a set amount of a entity type.", "mobkillingcertain"); 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 - 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 + ".hostile", config.get("hostile"), problems, true, "hostile"); - return problems; - } - @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) public void onMobKill(EntityDeathEvent event) { - Player killer = event.getEntity().getKiller(); //The killer is a player + Player killer = event.getEntity().getKiller(); Entity mob = event.getEntity(); if (mob == null || mob instanceof Player) { @@ -64,49 +49,81 @@ public final class MobkillingTaskType extends BukkitTaskType { return; } - for (Quest quest : super.getRegisteredQuests()) { - if (qPlayer.hasStartedQuest(quest)) { - QuestProgress questProgress = qPlayer.getQuestProgressFile().getQuestProgress(quest); + for (TaskUtils.PendingTask pendingTask : TaskUtils.getApplicableTasks(killer, qPlayer, this, TaskUtils.TaskConstraint.WORLD)) { + Quest quest = pendingTask.quest(); + Task task = pendingTask.task(); + TaskProgress taskProgress = pendingTask.taskProgress(); - for (Task task : quest.getTasksOfType(super.getType())) { - if (!TaskUtils.validateWorld(killer, task)) continue; + super.debug("Player killed " + mob.getType(), quest.getId(), task.getId(), killer.getUniqueId()); - TaskProgress taskProgress = questProgress.getTaskProgress(task.getId()); + List<String> configEntities = TaskUtils.getConfigStringList(task, task.getConfigValues().containsKey("mob") ? "mob" : "mobs"); - if (taskProgress.isCompleted()) { - continue; - } + if (task.hasConfigKey("hostile")) { + boolean hostile = TaskUtils.getConfigBoolean(task, "hostile"); - boolean hostilitySpecified = false; - boolean hostile = false; - if (task.getConfigValue("hostile") != null) { - hostilitySpecified = true; - hostile = (boolean) task.getConfigValue("hostile"); - } + if (!hostile && !(mob instanceof Animals)) { + super.debug("Mob must be passive, but is hostile, continuing...", quest.getId(), task.getId(), killer.getUniqueId()); + continue; + } else if (hostile && !(mob instanceof Monster)) { + super.debug("Mob must be hostile, but is passive, continuing...", quest.getId(), task.getId(), killer.getUniqueId()); + continue; + } - if (hostilitySpecified) { - if (!hostile && !(mob instanceof Animals)) { - continue; - } else if (hostile && !(mob instanceof Monster)) { - continue; + } + + if (!configEntities.isEmpty()) { + super.debug("List of required names entities; mob type is " + mob.getType(), quest.getId(), task.getId(), killer.getUniqueId()); + + boolean validMob = false; + for (String entry : configEntities) { + super.debug("Checking against mob '" + entry + "'", quest.getId(), task.getId(), killer.getUniqueId()); + try { + EntityType entity = EntityType.valueOf(entry); + if (mob.getType() == entity) { + super.debug("Mob is valid", quest.getId(), task.getId(), killer.getUniqueId()); + validMob = true; + break; } + } catch (IllegalArgumentException ignored) { } + } - int mobKillsNeeded = (int) task.getConfigValue("amount"); + if (!validMob) { + super.debug("Mob is not in list of required mobs, continuing...", quest.getId(), task.getId(), killer.getUniqueId()); + continue; + } + } - int progressKills; - if (taskProgress.getProgress() == null) { - progressKills = 0; - } else { - progressKills = (int) taskProgress.getProgress(); - } + List<String> configNames = TaskUtils.getConfigStringList(task, task.getConfigValues().containsKey("name") ? "name" : "names"); - taskProgress.setProgress(progressKills + 1); + if (!configNames.isEmpty()) { + super.debug("List of required names exists; mob name is '" + Chat.legacyStrip(mob.getCustomName()) + "'", quest.getId(), task.getId(), killer.getUniqueId()); - if (((int) taskProgress.getProgress()) >= mobKillsNeeded) { - taskProgress.setCompleted(true); + boolean validName = false; + for (String name : configNames) { + super.debug("Checking against name '" + name + "'", quest.getId(), task.getId(), killer.getUniqueId()); + name = Chat.legacyColor(name); + if (mob.getCustomName() != null && !mob.getCustomName().equals(name)) { + super.debug("Mob has valid name", quest.getId(), task.getId(), killer.getUniqueId()); + validName = true; + break; } } + + if (!validName) { + super.debug("Mob name is not in list of valid name, continuing...", quest.getId(), task.getId(), killer.getUniqueId()); + continue; + } + } + + int mobKillsNeeded = (int) task.getConfigValue("amount"); + + int progress = TaskUtils.incrementIntegerTaskProgress(taskProgress); + super.debug("Incrementing task progress (now " + progress + ")", quest.getId(), task.getId(), killer.getUniqueId()); + + if (progress >= mobKillsNeeded) { + super.debug("Marking task as complete", quest.getId(), task.getId(), killer.getUniqueId()); + taskProgress.setCompleted(true); } } } 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 58467a34..f3c2c4d8 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 @@ -3,9 +3,7 @@ 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.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; @@ -14,11 +12,6 @@ import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.entity.EntityDeathEvent; -import org.jetbrains.annotations.NotNull; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; public final class PlayerkillingTaskType extends BukkitTaskType { @@ -32,14 +25,6 @@ public final class PlayerkillingTaskType extends BukkitTaskType { 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"); - return problems; - } - @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) public void onMobKill(EntityDeathEvent event) { Player killer = event.getEntity().getKiller(); 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 3a12c090..19c517cb 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 @@ -3,9 +3,7 @@ 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.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; @@ -13,11 +11,6 @@ import org.bukkit.Bukkit; import org.bukkit.entity.Player; import org.bukkit.scheduler.BukkitRunnable; import org.bukkit.scheduler.BukkitTask; -import org.jetbrains.annotations.NotNull; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; public final class PlaytimeTaskType extends BukkitTaskType { @@ -32,14 +25,6 @@ public final class PlaytimeTaskType extends BukkitTaskType { super.addConfigValidator(TaskUtils.useIntegerConfigValidator(this, "minutes")); } - @Override - public @NotNull List<ConfigProblem> validateConfig(@NotNull String root, @NotNull HashMap<String, Object> config) { - ArrayList<ConfigProblem> problems = new ArrayList<>(); - if (TaskUtils.configValidateExists(root + ".minutes", config.get("minutes"), problems, "minutes", super.getType())) - TaskUtils.configValidateInt(root + ".minutes", config.get("minutes"), problems, false, true, "minutes"); - return problems; - } - @Override public void onReady() { 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 e58142a1..62916c2b 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 @@ -3,9 +3,7 @@ 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.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; @@ -16,11 +14,6 @@ import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.player.PlayerMoveEvent; -import org.jetbrains.annotations.NotNull; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; public final class PositionTaskType extends BukkitTaskType { @@ -41,20 +34,6 @@ public final class PositionTaskType extends BukkitTaskType { super.addConfigValidator(TaskUtils.useIntegerConfigValidator(this, "distance-padding")); } - @Override - public @NotNull List<ConfigProblem> validateConfig(@NotNull String root, @NotNull HashMap<String, Object> config) { - ArrayList<ConfigProblem> problems = new ArrayList<>(); - TaskUtils.configValidateExists(root + ".world", config.get("world"), problems, "world", super.getType()); - 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"); - TaskUtils.configValidateInt(root + ".distance-padding", config.get("distance-padding"), problems, true, true, "distance-padding"); - return problems; - } - @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) public void onMove(PlayerMoveEvent event) { if (event.getFrom().getBlockX() == event.getTo().getBlockX() && event.getFrom().getBlockZ() == event.getTo().getBlockZ()) { 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 4d02e336..bf39899c 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 @@ -3,9 +3,7 @@ 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.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; @@ -14,11 +12,6 @@ import org.bukkit.entity.Sheep; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.player.PlayerShearEntityEvent; -import org.jetbrains.annotations.NotNull; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; public final class ShearingTaskType extends BukkitTaskType { @@ -32,14 +25,6 @@ public final class ShearingTaskType extends BukkitTaskType { 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"); - return problems; - } - @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) public void onShear(PlayerShearEntityEvent event) { if (!(event.getEntity() instanceof Sheep)) { 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 deleted file mode 100644 index 5f8ad8dd..00000000 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/SmeltingCertainTaskType.java +++ /dev/null @@ -1,131 +0,0 @@ -package com.leonardobishop.quests.bukkit.tasktype.type; - -import com.google.common.collect.HashBasedTable; -import com.google.common.collect.Table; -import com.leonardobishop.quests.bukkit.BukkitQuestsPlugin; -import com.leonardobishop.quests.bukkit.item.ParsedQuestItem; -import com.leonardobishop.quests.bukkit.item.QuestItem; -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; -import org.bukkit.Material; -import org.bukkit.configuration.ConfigurationSection; -import org.bukkit.entity.Player; -import org.bukkit.event.EventHandler; -import org.bukkit.event.EventPriority; -import org.bukkit.event.inventory.ClickType; -import org.bukkit.event.inventory.InventoryAction; -import org.bukkit.event.inventory.InventoryClickEvent; -import org.bukkit.event.inventory.InventoryType; -import org.bukkit.inventory.ItemStack; -import org.jetbrains.annotations.NotNull; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -public final class SmeltingCertainTaskType extends BukkitTaskType { - - private final BukkitQuestsPlugin plugin; - private final Table<String, String, QuestItem> fixedQuestItemCache = HashBasedTable.create(); - - 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"); - return problems; - } - - @Override - public void onReady() { - fixedQuestItemCache.clear(); - } - - @SuppressWarnings("deprecation") - @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) - public void onInventoryClick(InventoryClickEvent event) { - ItemStack item = event.getCurrentItem(); - ItemStack cursor = event.getCursor(); - InventoryType inventoryType = event.getInventory().getType(); - - if (event.getRawSlot() != 2 || !plugin.getVersionSpecificHandler().isFurnaceInventoryType(inventoryType) - || item == null || item.getType() == Material.AIR || event.getAction() == InventoryAction.NOTHING - || event.getAction() == InventoryAction.COLLECT_TO_CURSOR && cursor != null && cursor.getAmount() == cursor.getMaxStackSize() - || event.getClick() == ClickType.NUMBER_KEY && event.getAction() == InventoryAction.HOTBAR_MOVE_AND_READD - || !(event.getWhoClicked() instanceof Player player)) { - return; - } - - int eventAmount = item.getAmount(); - if (event.isShiftClick()) { - eventAmount = Math.min(eventAmount, plugin.getVersionSpecificHandler().getAvailableSpace(player, item)); - if (eventAmount == 0) { - 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("Player smelted item", quest.getId(), task.getId(), player.getUniqueId()); - - if (task.getConfigValue("mode") != null - && !inventoryType.toString().equalsIgnoreCase(task.getConfigValue("mode").toString())) { - super.debug("Specific mode is required, but the actual mode '" + inventoryType + "' does not match, continuing...", quest.getId(), task.getId(), player.getUniqueId()); - continue; - } - - QuestItem qi; - if ((qi = fixedQuestItemCache.get(quest.getId(), task.getId())) == null) { - QuestItem fetchedItem = TaskUtils.getConfigQuestItem(task, "item", "data"); - fixedQuestItemCache.put(quest.getId(), task.getId(), fetchedItem); - qi = fetchedItem; - } - - if (qi.compareItemStack(item)) { - int smeltedItemsNeeded = (int) task.getConfigValue("amount"); - - int progress = TaskUtils.getIntegerTaskProgress(taskProgress); - int newAmount = progress + eventAmount; - taskProgress.setProgress(newAmount); - super.debug("Updating task progress (now " + (newAmount) + ")", quest.getId(), task.getId(), player.getUniqueId()); - - if (newAmount >= smeltedItemsNeeded) { - super.debug("Marking task as complete", quest.getId(), task.getId(), player.getUniqueId()); - taskProgress.setProgress(newAmount); - taskProgress.setCompleted(true); - } - } else { - super.debug("Item does not match required item, continuing...", quest.getId(), task.getId(), player.getUniqueId()); - } - } - } - -} diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/SmeltingTaskType.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/SmeltingTaskType.java index 391d5f5f..a89a2c84 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/SmeltingTaskType.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/SmeltingTaskType.java @@ -1,11 +1,12 @@ package com.leonardobishop.quests.bukkit.tasktype.type; +import com.google.common.collect.HashBasedTable; +import com.google.common.collect.Table; import com.leonardobishop.quests.bukkit.BukkitQuestsPlugin; +import com.leonardobishop.quests.bukkit.item.QuestItem; 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; @@ -18,29 +19,28 @@ import org.bukkit.event.inventory.InventoryAction; import org.bukkit.event.inventory.InventoryClickEvent; import org.bukkit.event.inventory.InventoryType; import org.bukkit.inventory.ItemStack; -import org.jetbrains.annotations.NotNull; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; public final class SmeltingTaskType extends BukkitTaskType { private final BukkitQuestsPlugin plugin; + private final Table<String, String, QuestItem> fixedQuestItemCache = HashBasedTable.create(); public SmeltingTaskType(BukkitQuestsPlugin plugin) { - super("smelting", TaskUtils.TASK_ATTRIBUTION_STRING, "Smelt or cook a set amount of any item."); + super("smelting", TaskUtils.TASK_ATTRIBUTION_STRING, "Smelt or cook a set amount of a item.", "smeltingcertain"); this.plugin = plugin; + + 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 + ".amount", config.get("amount"), problems, "amount", super.getType())) - TaskUtils.configValidateInt(root + ".amount", config.get("amount"), problems, false, true, "amount"); - return problems; + public void onReady() { + fixedQuestItemCache.clear(); } + @SuppressWarnings("deprecation") @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) public void onInventoryClick(InventoryClickEvent event) { ItemStack item = event.getCurrentItem(); @@ -51,12 +51,10 @@ public final class SmeltingTaskType extends BukkitTaskType { || item == null || item.getType() == Material.AIR || event.getAction() == InventoryAction.NOTHING || event.getAction() == InventoryAction.COLLECT_TO_CURSOR && cursor != null && cursor.getAmount() == cursor.getMaxStackSize() || event.getClick() == ClickType.NUMBER_KEY && event.getAction() == InventoryAction.HOTBAR_MOVE_AND_READD - || !(event.getWhoClicked() instanceof Player)) { + || !(event.getWhoClicked() instanceof Player player)) { return; } - Player player = (Player) event.getWhoClicked(); - int eventAmount = item.getAmount(); if (event.isShiftClick()) { eventAmount = Math.min(eventAmount, plugin.getVersionSpecificHandler().getAvailableSpace(player, item)); @@ -70,39 +68,44 @@ public final class SmeltingTaskType extends BukkitTaskType { return; } - for (Quest quest : super.getRegisteredQuests()) { - if (qPlayer.hasStartedQuest(quest)) { - QuestProgress questProgress = qPlayer.getQuestProgressFile().getQuestProgress(quest); + 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(); - for (Task task : quest.getTasksOfType(super.getType())) { - if (!TaskUtils.validateWorld(player, task)) continue; + super.debug("Player smelted item", quest.getId(), task.getId(), player.getUniqueId()); - TaskProgress taskProgress = questProgress.getTaskProgress(task.getId()); - - if (taskProgress.isCompleted()) { - continue; - } + if (task.getConfigValue("mode") != null + && !inventoryType.toString().equalsIgnoreCase(task.getConfigValue("mode").toString())) { + super.debug("Specific mode is required, but the actual mode '" + inventoryType + "' does not match, continuing...", quest.getId(), task.getId(), player.getUniqueId()); + continue; + } - if (task.getConfigValue("mode") != null - && !inventoryType.toString().equalsIgnoreCase(task.getConfigValue("mode").toString())) { - continue; - } + if (task.hasConfigKey("item")) { + QuestItem qi; + if ((qi = fixedQuestItemCache.get(quest.getId(), task.getId())) == null) { + QuestItem fetchedItem = TaskUtils.getConfigQuestItem(task, "item", "data"); + fixedQuestItemCache.put(quest.getId(), task.getId(), fetchedItem); + qi = fetchedItem; + } - int smeltedItemsNeeded = (int) task.getConfigValue("amount"); + if (!qi.compareItemStack(item)) { + super.debug("Item does not match required item, continuing...", quest.getId(), task.getId(), player.getUniqueId()); + continue; + } + } - int progressItemsSmelted; - if (taskProgress.getProgress() == null) { - progressItemsSmelted = 0; - } else { - progressItemsSmelted = (int) taskProgress.getProgress(); - } + int smeltedItemsNeeded = (int) task.getConfigValue("amount"); - taskProgress.setProgress(progressItemsSmelted + eventAmount); + int progress = TaskUtils.getIntegerTaskProgress(taskProgress); + int newAmount = progress + eventAmount; + taskProgress.setProgress(newAmount); + super.debug("Updating task progress (now " + (newAmount) + ")", quest.getId(), task.getId(), player.getUniqueId()); - if (((int) taskProgress.getProgress()) >= smeltedItemsNeeded) { - taskProgress.setCompleted(true); - } - } + if (newAmount >= smeltedItemsNeeded) { + super.debug("Marking task as complete", quest.getId(), task.getId(), player.getUniqueId()); + taskProgress.setProgress(newAmount); + 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 8b9c2f66..6b5c0e9e 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 @@ -3,8 +3,6 @@ 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.TaskProgress; import com.leonardobishop.quests.common.quest.Quest; @@ -14,11 +12,6 @@ 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 TamingTaskType extends BukkitTaskType { @@ -29,24 +22,6 @@ public final class TamingTaskType extends BukkitTaskType { 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)) { 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 491ebd09..ab435d00 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 @@ -3,7 +3,6 @@ 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.player.QPlayer; import com.leonardobishop.quests.common.player.questprogressfile.TaskProgress; import com.leonardobishop.quests.common.quest.Quest; @@ -13,12 +12,8 @@ import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; 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; public final class WalkingTaskType extends BukkitTaskType { @@ -45,14 +40,6 @@ public final class WalkingTaskType extends BukkitTaskType { ), "mode")); } - @Override - public @NotNull List<ConfigProblem> validateConfig(@NotNull String root, @NotNull HashMap<String, Object> config) { - ArrayList<ConfigProblem> problems = new ArrayList<>(); - 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; - } - @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) public void onMove(PlayerMoveEvent event) { if (event.getFrom().getBlockX() == event.getTo().getBlockX() && event.getFrom().getBlockZ() == event.getTo().getBlockZ()) { 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 5bffedcb..fbeef4bb 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 @@ -3,9 +3,7 @@ package com.leonardobishop.quests.bukkit.tasktype.type.dependent; 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.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; @@ -14,11 +12,6 @@ import org.bukkit.Bukkit; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; -import org.jetbrains.annotations.NotNull; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; public final class ASkyBlockLevelTaskType extends BukkitTaskType { @@ -32,14 +25,6 @@ public final class ASkyBlockLevelTaskType extends BukkitTaskType { 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"); - return problems; - } - @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) public void onIslandLevel(IslandPostLevelEvent event) { QPlayer qPlayer = plugin.getPlayerManager().getPlayer(event.getPlayer()); 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 a056e137..beeaec29 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 @@ -3,9 +3,7 @@ package com.leonardobishop.quests.bukkit.tasktype.type.dependent; 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.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; @@ -13,14 +11,10 @@ import com.leonardobishop.quests.common.tasktype.TaskTypeManager; import org.bukkit.Bukkit; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; -import org.jetbrains.annotations.NotNull; import world.bentobox.bentobox.BentoBox; import world.bentobox.bentobox.api.events.IslandBaseEvent; import world.bentobox.bentobox.database.objects.Island; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; import java.util.UUID; public final class BentoBoxLevelTaskType extends BukkitTaskType { @@ -35,14 +29,6 @@ public final class BentoBoxLevelTaskType extends BukkitTaskType { 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"); - return problems; - } - public static void register(BukkitQuestsPlugin plugin, TaskTypeManager manager) { if (BentoBox.getInstance().getAddonsManager().getAddonByName("Level").isPresent()) { 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 176b5d9e..f6b68aa1 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 @@ -3,31 +3,21 @@ package com.leonardobishop.quests.bukkit.tasktype.type.dependent; import com.google.common.collect.HashBasedTable; import com.google.common.collect.Table; import com.leonardobishop.quests.bukkit.BukkitQuestsPlugin; -import com.leonardobishop.quests.bukkit.item.ParsedQuestItem; import com.leonardobishop.quests.bukkit.item.QuestItem; 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.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 net.citizensnpcs.api.event.NPCRightClickEvent; import net.citizensnpcs.api.npc.NPC; import org.bukkit.Bukkit; -import org.bukkit.Material; -import org.bukkit.configuration.ConfigurationSection; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; -import org.bukkit.inventory.ItemStack; -import org.jetbrains.annotations.NotNull; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; public final class CitizensDeliverTaskType extends BukkitTaskType { @@ -54,23 +44,6 @@ public final class CitizensDeliverTaskType 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())) -// 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; - } - - @Override public void onReady() { fixedQuestItemCache.clear(); } 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 5543cd20..99275f9f 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,9 +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; import com.leonardobishop.quests.common.quest.Quest; import com.leonardobishop.quests.common.quest.Task; @@ -15,11 +13,6 @@ import net.citizensnpcs.api.event.NPCRightClickEvent; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; -import org.jetbrains.annotations.NotNull; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; public final class CitizensInteractTaskType extends BukkitTaskType { @@ -37,17 +30,6 @@ public final class CitizensInteractTaskType extends BukkitTaskType { }); } - @Override - public @NotNull List<ConfigProblem> validateConfig(@NotNull String root, @NotNull HashMap<String, Object> config) { - ArrayList<ConfigProblem> problems = new ArrayList<>(); - 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()); - } - return problems; - } - @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) public void onNPCClick(NPCRightClickEvent event) { QPlayer qPlayer = plugin.getPlayerManager().getPlayer(event.getClicker().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 b422fe85..be47dbd6 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 @@ -4,7 +4,6 @@ import com.earth2me.essentials.Essentials; 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.player.QPlayer; import com.leonardobishop.quests.common.player.questprogressfile.QuestProgress; import com.leonardobishop.quests.common.player.questprogressfile.QuestProgressFile; @@ -16,12 +15,8 @@ import org.bukkit.Bukkit; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; -import org.jetbrains.annotations.NotNull; import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; import java.util.UUID; public final class EssentialsBalanceTaskType extends BukkitTaskType { @@ -37,14 +32,6 @@ public final class EssentialsBalanceTaskType 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, false, "amount"); - return problems; - } - - @Override public void onStart(Quest quest, Task task, UUID playerUUID) { Player player = Bukkit.getPlayer(playerUUID); Essentials ess = (Essentials) Bukkit.getPluginManager().getPlugin("Essentials"); 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 483ddcad..0e108ba8 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 @@ -3,9 +3,7 @@ package com.leonardobishop.quests.bukkit.tasktype.type.dependent; 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.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; @@ -13,12 +11,8 @@ import net.ess3.api.events.UserBalanceUpdateEvent; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; -import org.jetbrains.annotations.NotNull; import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; public final class EssentialsMoneyEarnTaskType extends BukkitTaskType { @@ -32,14 +26,6 @@ public final class EssentialsMoneyEarnTaskType extends BukkitTaskType { 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"); - return problems; - } - @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) public void onMoneyEarn(UserBalanceUpdateEvent event) { QPlayer qPlayer = plugin.getPlayerManager().getPlayer(event.getPlayer().getUniqueId()); 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 be213eb0..6969fbc7 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 @@ -3,9 +3,7 @@ package com.leonardobishop.quests.bukkit.tasktype.type.dependent; 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.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; @@ -14,10 +12,8 @@ import org.bukkit.Bukkit; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; -import org.jetbrains.annotations.NotNull; import java.util.ArrayList; -import java.util.HashMap; import java.util.List; import java.util.UUID; @@ -33,14 +29,6 @@ public final class FabledSkyblockLevelTaskType extends BukkitTaskType { 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"); - return problems; - } - @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) public void onIslandLevel(IslandLevelChangeEvent event) { List<UUID> members = new ArrayList<>(); 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 7e73a169..d0b30b1e 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 @@ -5,9 +5,7 @@ import com.iridium.iridiumskyblock.api.IslandWorthCalculatedEvent; 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.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; @@ -15,11 +13,7 @@ import org.bukkit.Bukkit; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; -import org.jetbrains.annotations.NotNull; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; import java.util.UUID; //TODO update to latest ver @@ -35,14 +29,6 @@ public final class IridiumSkyblockValueTaskType extends BukkitTaskType { 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"); - return problems; - } - @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) public void onIslandLevel(IslandWorthCalculatedEvent event) { Island island = event.getIsland(); 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 de5154e1..dc465c05 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 @@ -3,9 +3,7 @@ package com.leonardobishop.quests.bukkit.tasktype.type.dependent; 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.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; @@ -15,12 +13,8 @@ import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; -import org.jetbrains.annotations.NotNull; import java.lang.reflect.Field; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; public final class MythicMobsKillingTaskType extends BukkitTaskType { @@ -54,17 +48,6 @@ public final class MythicMobsKillingTaskType extends BukkitTaskType { 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"); - return problems; - } - private final class MythicMobs4Listener implements Listener { private final Field levelField; 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 6d9a7bca..1b0abc97 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 @@ -3,9 +3,7 @@ package com.leonardobishop.quests.bukkit.tasktype.type.dependent; 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.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; @@ -14,11 +12,6 @@ import org.bukkit.Bukkit; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; -import org.jetbrains.annotations.NotNull; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; public final class NuVotifierVoteTaskType extends BukkitTaskType { @@ -32,14 +25,6 @@ public final class NuVotifierVoteTaskType extends BukkitTaskType { 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"); - return problems; - } - @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) public void onVote(VotifierEvent event) { String voter = event.getVote().getUsername(); 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 033def46..9b41192c 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 @@ -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; @@ -14,12 +13,8 @@ import org.bukkit.Bukkit; import org.bukkit.entity.Player; import org.bukkit.scheduler.BukkitRunnable; 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; public final class PlaceholderAPIEvaluateTaskType extends BukkitTaskType { @@ -56,40 +51,6 @@ public final class PlaceholderAPIEvaluateTaskType extends BukkitTaskType { } @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; - } - - @Override public void onReady() { this.poll = new BukkitRunnable() { @Override 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/ShopGUIPlusBuyTaskType.java index 33a1a8c1..a2ce95e5 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/ShopGUIPlusBuyTaskType.java @@ -3,11 +3,8 @@ package com.leonardobishop.quests.bukkit.tasktype.type.dependent; 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.player.QPlayer; import com.leonardobishop.quests.common.player.QPlayerManager; -import com.leonardobishop.quests.common.player.questprogressfile.QuestProgress; -import com.leonardobishop.quests.common.player.questprogressfile.QuestProgressFile; import com.leonardobishop.quests.common.player.questprogressfile.TaskProgress; import com.leonardobishop.quests.common.quest.Quest; import com.leonardobishop.quests.common.quest.Task; @@ -16,22 +13,16 @@ import net.brcdev.shopgui.shop.Shop; import net.brcdev.shopgui.shop.ShopItem; import net.brcdev.shopgui.shop.ShopManager.ShopAction; import net.brcdev.shopgui.shop.ShopTransactionResult; -import org.bukkit.World; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; -import org.jetbrains.annotations.NotNull; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -public final class ShopGUIPlusBuyCertainTaskType extends BukkitTaskType { +public final class ShopGUIPlusBuyTaskType extends BukkitTaskType { private final BukkitQuestsPlugin plugin; - public ShopGUIPlusBuyCertainTaskType(BukkitQuestsPlugin plugin) { - super("shopguiplus_buycertain", TaskUtils.TASK_ATTRIBUTION_STRING, "Purchase a given item from a ShopGUI+ shop"); + public ShopGUIPlusBuyTaskType(BukkitQuestsPlugin plugin) { + super("shopguiplus_buy", TaskUtils.TASK_ATTRIBUTION_STRING, "Purchase a given item from a ShopGUI+ shop", "shopguiplus_buycertain"); this.plugin = plugin; super.addConfigValidator(TaskUtils.useRequiredConfigValidator(this, "amount")); @@ -40,19 +31,6 @@ public final class ShopGUIPlusBuyCertainTaskType extends BukkitTaskType { 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()); - - return problems; - } - @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) public void afterTransaction(ShopPostTransactionEvent event) { ShopTransactionResult result = event.getResult(); 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/ShopGUIPlusSellTaskType.java index fe2d7c09..0ae408b8 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/ShopGUIPlusSellTaskType.java @@ -3,11 +3,8 @@ package com.leonardobishop.quests.bukkit.tasktype.type.dependent; 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.player.QPlayer; import com.leonardobishop.quests.common.player.QPlayerManager; -import com.leonardobishop.quests.common.player.questprogressfile.QuestProgress; -import com.leonardobishop.quests.common.player.questprogressfile.QuestProgressFile; import com.leonardobishop.quests.common.player.questprogressfile.TaskProgress; import com.leonardobishop.quests.common.quest.Quest; import com.leonardobishop.quests.common.quest.Task; @@ -16,22 +13,16 @@ import net.brcdev.shopgui.shop.Shop; import net.brcdev.shopgui.shop.ShopItem; import net.brcdev.shopgui.shop.ShopManager.ShopAction; import net.brcdev.shopgui.shop.ShopTransactionResult; -import org.bukkit.World; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; -import org.jetbrains.annotations.NotNull; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -public final class ShopGUIPlusSellCertainTaskType extends BukkitTaskType { +public final class ShopGUIPlusSellTaskType extends BukkitTaskType { private final BukkitQuestsPlugin plugin; - public ShopGUIPlusSellCertainTaskType(BukkitQuestsPlugin plugin) { - super("shopguiplus_sellcertain", TaskUtils.TASK_ATTRIBUTION_STRING, "Sell a given item to a ShopGUI+ shop"); + public ShopGUIPlusSellTaskType(BukkitQuestsPlugin plugin) { + super("shopguiplus_sell", TaskUtils.TASK_ATTRIBUTION_STRING, "Sell a given item to a ShopGUI+ shop", "shopguiplus_sellcertain"); this.plugin = plugin; super.addConfigValidator(TaskUtils.useRequiredConfigValidator(this, "amount")); @@ -40,19 +31,6 @@ public final class ShopGUIPlusSellCertainTaskType extends BukkitTaskType { 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()); - - return problems; - } - @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) public void afterTransaction(ShopPostTransactionEvent event) { ShopTransactionResult result = event.getResult(); 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 e4e0c97b..a5996713 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 @@ -5,9 +5,7 @@ import com.bgsoftware.superiorskyblock.api.wrappers.SuperiorPlayer; 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.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; @@ -15,12 +13,8 @@ import org.bukkit.Bukkit; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; -import org.jetbrains.annotations.NotNull; import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; public final class SuperiorSkyblockLevelType extends BukkitTaskType { @@ -34,14 +28,6 @@ public final class SuperiorSkyblockLevelType extends BukkitTaskType { 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"); - return problems; - } - @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) public void onIslandLevel(IslandWorthUpdateEvent event) { for (SuperiorPlayer superiorPlayer : event.getIsland().getIslandMembers(true)) { 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 6444daf2..72641099 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 @@ -5,9 +5,7 @@ import com.bgsoftware.superiorskyblock.api.wrappers.SuperiorPlayer; 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.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; @@ -15,12 +13,8 @@ import org.bukkit.Bukkit; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; -import org.jetbrains.annotations.NotNull; import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; public final class SuperiorSkyblockWorthType extends BukkitTaskType { @@ -34,14 +28,6 @@ public final class SuperiorSkyblockWorthType extends BukkitTaskType { 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"); - return problems; - } - @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) public void onIslandLevel(IslandWorthUpdateEvent event) { for (SuperiorPlayer superiorPlayer : event.getIsland().getIslandMembers(true)) { 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 7d5a3576..10aa720e 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 @@ -4,9 +4,7 @@ import com.bencodez.votingplugin.events.PlayerVoteEvent; 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.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; @@ -14,11 +12,6 @@ import org.bukkit.Bukkit; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; -import org.jetbrains.annotations.NotNull; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; public final class VotingPluginVoteType extends BukkitTaskType { @@ -32,14 +25,6 @@ public final class VotingPluginVoteType extends BukkitTaskType { 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"); - return problems; - } - @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) public void onVote(PlayerVoteEvent event) { String voter = event.getPlayer(); 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 2d5dbc20..339010b3 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 @@ -3,23 +3,15 @@ package com.leonardobishop.quests.bukkit.tasktype.type.dependent; 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.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.Bukkit; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; -import org.jetbrains.annotations.NotNull; import us.talabrek.ultimateskyblock.api.event.uSkyBlockScoreChangedEvent; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - public final class uSkyBlockLevelTaskType extends BukkitTaskType { private final BukkitQuestsPlugin plugin; @@ -32,14 +24,6 @@ public final class uSkyBlockLevelTaskType extends BukkitTaskType { 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"); - return problems; - } - @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) public void onIslandLevel(uSkyBlockScoreChangedEvent event) { QPlayer qPlayer = plugin.getPlayerManager().getPlayer(event.getPlayer().getUniqueId()); 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 0326b072..642b58be 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 @@ -69,7 +69,7 @@ public class TaskUtils { List<String> strings = new ArrayList<>(); if (configObject instanceof List) { strings.addAll((List) configObject); - } else { + } else if (configObject != null) { strings.add(String.valueOf(configObject)); } return strings; @@ -182,6 +182,9 @@ public class TaskUtils { Object configData = task.getConfigValue("data"); List<String> checkBlocks = TaskUtils.getConfigStringList(task, task.getConfigValues().containsKey("block") ? "block" : "blocks"); + if (checkBlocks.isEmpty()) { + return true; + } for (String materialName : checkBlocks) { // LOG:1 LOG:2 LOG should all be supported with this @@ -243,125 +246,6 @@ public class TaskUtils { } } - public static void configValidateNumber(String path, Object object, List<ConfigProblem> problems, boolean allowNull, boolean greaterThanZero, String... args) { - if (object == null) { - if (!allowNull) { - problems.add(new ConfigProblem(ConfigProblem.ConfigProblemType.ERROR, - String.format("Expected a number for '%s', but got null instead", (Object[]) args), null, path)); - } - return; - } - - try { - double d = Double.parseDouble(String.valueOf(object)); - if (greaterThanZero && d <= 0) { - problems.add(new ConfigProblem(ConfigProblem.ConfigProblemType.ERROR, - String.format("Value for field '%s' must be greater than 0", (Object[]) args), null, path)); - } - } catch (ClassCastException ex) { - problems.add(new ConfigProblem(ConfigProblem.ConfigProblemType.ERROR, - String.format("Expected a number for '%s', but got '" + object + "' instead", (Object[]) args), null, path)); - } - } - - public static void configValidateInt(String path, Object object, List<ConfigProblem> problems, boolean allowNull, boolean greaterThanZero, String... args) { - if (object == null) { - if (!allowNull) { - problems.add(new ConfigProblem(ConfigProblem.ConfigProblemType.ERROR, - String.format("Expected an integer for '%s', but got null instead", (Object[]) args), null, path)); - } - return; - } - - try { - Integer i = (Integer) object; - if (greaterThanZero && i <= 0) { - problems.add(new ConfigProblem(ConfigProblem.ConfigProblemType.ERROR, - String.format("Value for field '%s' must be greater than 0", (Object[]) args), null, path)); - } - } catch (ClassCastException ex) { - problems.add(new ConfigProblem(ConfigProblem.ConfigProblemType.ERROR, - String.format("Expected an integer for '%s', but got '" + object + "' instead", (Object[]) args), null, path)); - } - } - - public static void configValidateBoolean(String path, Object object, List<ConfigProblem> problems, boolean allowNull, String... args) { - if (object == null) { - if (!allowNull) { - problems.add(new ConfigProblem(ConfigProblem.ConfigProblemType.ERROR, - String.format("Expected a boolean for '%s', but got null instead", (Object[]) args), null, path)); - } - return; - } - - try { - Boolean b = (Boolean) object; - } catch (ClassCastException ex) { - problems.add(new ConfigProblem(ConfigProblem.ConfigProblemType.ERROR, - String.format("Expected a boolean for '%s', but got '" + object + "' instead", (Object[]) args), null, path)); - } - } - - public static void configValidateItemStack(String path, Object object, List<ConfigProblem> problems, boolean allowNull, String... args) { - if (object == null) { - if (!allowNull) { - problems.add(new ConfigProblem(ConfigProblem.ConfigProblemType.ERROR, - String.format("Expected item configuration for '%s', but got null instead", (Object[]) args), null, path)); - } - return; - } - - if (object instanceof ConfigurationSection) { - ConfigurationSection section = (ConfigurationSection) object; - - if (section.contains("quest-item")) { - String type = section.getString("quest-item"); - if (plugin.getQuestItemRegistry().getItem(section.getString("quest-item")) == null) { - problems.add(new ConfigProblem(ConfigProblem.ConfigProblemType.WARNING, - ConfigProblemDescriptions.UNKNOWN_QUEST_ITEM.getDescription(type), - ConfigProblemDescriptions.UNKNOWN_QUEST_ITEM.getExtendedDescription(type), - path + ".item.quest-item")); - } - } else { - String itemloc = "item"; - if (!section.contains("item")) { - itemloc = "type"; - } - if (!section.contains(itemloc)) { - problems.add(new ConfigProblem(ConfigProblem.ConfigProblemType.WARNING, - ConfigProblemDescriptions.UNKNOWN_MATERIAL.getDescription(""), - ConfigProblemDescriptions.UNKNOWN_MATERIAL.getExtendedDescription(""), - path + ".type")); - } else { - String type = String.valueOf(section.get(itemloc)); - if (!plugin.getItemGetter().isValidMaterial(type)) { - problems.add(new ConfigProblem(ConfigProblem.ConfigProblemType.WARNING, - ConfigProblemDescriptions.UNKNOWN_MATERIAL.getDescription(type), - ConfigProblemDescriptions.UNKNOWN_MATERIAL.getExtendedDescription(type), - path + itemloc)); - } - } - } - } 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)); - } - } - } - - public static boolean configValidateExists(String path, Object object, List<ConfigProblem> problems, String... args) { - if (object == null) { - problems.add(new ConfigProblem(ConfigProblem.ConfigProblemType.ERROR, - ConfigProblemDescriptions.TASK_MISSING_FIELD.getDescription(args), - ConfigProblemDescriptions.TASK_MISSING_FIELD.getExtendedDescription(args), - path)); - return false; - } - return true; - } /** * Returns a config validator which checks if at least one value in the given |
