From 6be8d855bdb901abc1d1da2b15a7ba1807ce4e83 Mon Sep 17 00:00:00 2001 From: Krakenied Date: Sun, 21 Aug 2022 22:59:24 +0200 Subject: Fix smelting task type older versions startup error --- .../quests/bukkit/BukkitQuestsPlugin.java | 5 +- .../quests/bukkit/tasktype/type/SmithTaskType.java | 77 ---------------------- .../bukkit/tasktype/type/SmithingTaskType.java | 77 ++++++++++++++++++++++ 3 files changed, 81 insertions(+), 78 deletions(-) delete mode 100644 bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/SmithTaskType.java create mode 100644 bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/SmithingTaskType.java (limited to 'bukkit/src') 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 deaec724..19712a37 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/BukkitQuestsPlugin.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/BukkitQuestsPlugin.java @@ -315,7 +315,10 @@ public class BukkitQuestsPlugin extends JavaPlugin implements Quests { taskTypeManager.registerTaskType(new BucketEmptyTaskType(this)); taskTypeManager.registerTaskType(new BucketFillTaskType(this)); taskTypeManager.registerTaskType(new InteractTaskType(this)); - taskTypeManager.registerTaskType(new SmithTaskType(this)); + try { + Class.forName("org.bukkit.event.inventory.SmithItemEvent"); + taskTypeManager.registerTaskType(new SmithingTaskType(this)); + } catch (ClassNotFoundException ignored) { } // server version cannot support task type // TODO: FIX // taskTypeManager.registerTaskType(new BrewingCertainTaskType()); try { diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/SmithTaskType.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/SmithTaskType.java deleted file mode 100644 index 10fa9ec8..00000000 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/SmithTaskType.java +++ /dev/null @@ -1,77 +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.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.Material; -import org.bukkit.entity.Player; -import org.bukkit.event.EventHandler; -import org.bukkit.event.EventPriority; -import org.bukkit.event.inventory.SmithItemEvent; -import org.bukkit.inventory.ItemStack; - -public class SmithTaskType extends BukkitTaskType { - - private final BukkitQuestsPlugin plugin; - private final Table fixedQuestItemCache = HashBasedTable.create(); - - public SmithTaskType(BukkitQuestsPlugin plugin) { - super("smithing", TaskUtils.TASK_ATTRIBUTION_STRING, "Smith a specific item."); - this.plugin = plugin; - - super.addConfigValidator(TaskUtils.useRequiredConfigValidator(this, "amount")); - super.addConfigValidator(TaskUtils.useIntegerConfigValidator(this, "amount")); - super.addConfigValidator(TaskUtils.useRequiredConfigValidator(this, "item")); - super.addConfigValidator(TaskUtils.useItemStackConfigValidator(this, "item")); - super.addConfigValidator(TaskUtils.useIntegerConfigValidator(this, "data")); - } - - @Override - public void onReady() { - fixedQuestItemCache.clear(); - } - - @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) - public void onItemSmith(SmithItemEvent event) { - if (!event.getCursor().getType().equals(Material.AIR) || event.getCurrentItem() == null) return; - - ItemStack item = event.getCurrentItem(); - Player player = (Player) event.getWhoClicked(); - - 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(); - - int amount = (int) task.getConfigValue("amount"); - - super.debug("Player smith " + item.getType(), quest.getId(), task.getId(), player.getUniqueId()); - - QuestItem qi = TaskUtils.getConfigQuestItem(task, "item", "data"); - if (!qi.getItemStack().getType().equals(event.getCurrentItem().getType())) { - super.debug("Item does not match, continuing...", quest.getId(), task.getId(), player.getUniqueId()); - continue; - } - - int progress = TaskUtils.getIntegerTaskProgress(taskProgress); - taskProgress.setProgress(progress + 1); - super.debug("Updating task progress (now " + (progress + 1) + ")", quest.getId(), task.getId(), player.getUniqueId()); - - if ((int) taskProgress.getProgress() >= amount) { - super.debug("Marking task as complete", quest.getId(), task.getId(), player.getUniqueId()); - taskProgress.setProgress(amount); - taskProgress.setCompleted(true); - } - } - } -} diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/SmithingTaskType.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/SmithingTaskType.java new file mode 100644 index 00000000..1c2849e5 --- /dev/null +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/SmithingTaskType.java @@ -0,0 +1,77 @@ +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.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.Material; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.inventory.SmithItemEvent; +import org.bukkit.inventory.ItemStack; + +public final class SmithingTaskType extends BukkitTaskType { + + private final BukkitQuestsPlugin plugin; + private final Table fixedQuestItemCache = HashBasedTable.create(); + + public SmithingTaskType(BukkitQuestsPlugin plugin) { + super("smithing", TaskUtils.TASK_ATTRIBUTION_STRING, "Smith a specific item."); + this.plugin = plugin; + + super.addConfigValidator(TaskUtils.useRequiredConfigValidator(this, "amount")); + super.addConfigValidator(TaskUtils.useIntegerConfigValidator(this, "amount")); + super.addConfigValidator(TaskUtils.useRequiredConfigValidator(this, "item")); + super.addConfigValidator(TaskUtils.useItemStackConfigValidator(this, "item")); + super.addConfigValidator(TaskUtils.useIntegerConfigValidator(this, "data")); + } + + @Override + public void onReady() { + fixedQuestItemCache.clear(); + } + + @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) + public void onItemSmith(SmithItemEvent event) { + if (!event.getCursor().getType().equals(Material.AIR) || event.getCurrentItem() == null) return; + + ItemStack item = event.getCurrentItem(); + Player player = (Player) event.getWhoClicked(); + + 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(); + + int amount = (int) task.getConfigValue("amount"); + + super.debug("Player smith " + item.getType(), quest.getId(), task.getId(), player.getUniqueId()); + + QuestItem qi = TaskUtils.getConfigQuestItem(task, "item", "data"); + if (!qi.getItemStack().getType().equals(event.getCurrentItem().getType())) { + super.debug("Item does not match, continuing...", quest.getId(), task.getId(), player.getUniqueId()); + continue; + } + + int progress = TaskUtils.getIntegerTaskProgress(taskProgress); + taskProgress.setProgress(progress + 1); + super.debug("Updating task progress (now " + (progress + 1) + ")", quest.getId(), task.getId(), player.getUniqueId()); + + if ((int) taskProgress.getProgress() >= amount) { + super.debug("Marking task as complete", quest.getId(), task.getId(), player.getUniqueId()); + taskProgress.setProgress(amount); + taskProgress.setCompleted(true); + } + } + } +} -- cgit v1.2.3-70-g09d2