From 2f2167459e74317d045cd7e3a7628c59439f08d2 Mon Sep 17 00:00:00 2001 From: LMBishop <13875753+LMBishop@users.noreply.github.com> Date: Wed, 21 Jul 2021 19:48:10 +0100 Subject: Add task type exclusions --- .../leonardobishop/quests/bukkit/BukkitQuestsPlugin.java | 5 +++-- .../quests/bukkit/tasktype/BukkitTaskTypeManager.java | 16 +++++++++++++--- .../bukkit/tasktype/type/FarmingCertainTaskType.java | 1 + .../bukkit/tasktype/type/MiningCertainTaskType.java | 1 + bukkit/src/main/resources/resources/bukkit/config.yml | 2 ++ 5 files changed, 20 insertions(+), 5 deletions(-) (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 8e3047da..5081c296 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/BukkitQuestsPlugin.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/BukkitQuestsPlugin.java @@ -185,7 +185,6 @@ public class BukkitQuestsPlugin extends JavaPlugin implements Quests { this.generateConfigurations(); this.questsConfig = new BukkitQuestsConfig(new File(super.getDataFolder() + File.separator + "config.yml")); this.questManager = new QuestManager(this); - this.taskTypeManager = new BukkitTaskTypeManager(this); this.serverScheduler = new BukkitServerSchedulerAdapter(this); // Load base configuration for use during rest of startup procedure @@ -243,6 +242,7 @@ public class BukkitQuestsPlugin extends JavaPlugin implements Quests { questsConfig.setItemGetter(itemGetter); // Finish module initialisation + this.taskTypeManager = new BukkitTaskTypeManager(this, questsConfig.getStringList("options.task-type-exclusions")); this.qPlayerManager = new QPlayerManager(this, storageProvider, questController); this.menuController = new MenuController(this); this.qItemStackRegistry = new QItemStackRegistry(); @@ -357,7 +357,8 @@ public class BukkitQuestsPlugin extends JavaPlugin implements Quests { } taskTypeManager.closeRegistrations(); - questsLogger.info(taskTypeManager.getTaskTypes().size() + " task types have been registered."); + questsLogger.info(taskTypeManager.getTaskTypes().size() + " task types have been registered" + + (taskTypeManager.getSkipped() > 0 ? " (" + taskTypeManager.getSkipped() + " skipped due to exclusions or conflicting names)." : ".")); reloadQuests(); diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/BukkitTaskTypeManager.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/BukkitTaskTypeManager.java index c37017ae..91e511c8 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/BukkitTaskTypeManager.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/BukkitTaskTypeManager.java @@ -5,6 +5,8 @@ import com.leonardobishop.quests.common.tasktype.TaskType; import com.leonardobishop.quests.common.tasktype.TaskTypeManager; import org.jetbrains.annotations.NotNull; +import java.util.List; + public class BukkitTaskTypeManager extends TaskTypeManager { private final BukkitQuestsPlugin plugin; @@ -13,13 +15,21 @@ public class BukkitTaskTypeManager extends TaskTypeManager { this.plugin = plugin; } + public BukkitTaskTypeManager(BukkitQuestsPlugin plugin, List exclusions) { + super(exclusions); + this.plugin = plugin; + } + @Override - public void registerTaskType(@NotNull TaskType taskType) { + public boolean registerTaskType(@NotNull TaskType taskType) { if (!(taskType instanceof BukkitTaskType)) throw new RuntimeException("BukkitTaskTypeManager implementation can only accept instances of BukkitTaskType!"); BukkitTaskType bukkitTaskType = (BukkitTaskType) taskType; - super.registerTaskType(taskType); - plugin.getServer().getPluginManager().registerEvents(bukkitTaskType, plugin); + if (super.registerTaskType(taskType)) { + plugin.getServer().getPluginManager().registerEvents(bukkitTaskType, plugin); + return true; + } + return false; } } diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/FarmingCertainTaskType.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/FarmingCertainTaskType.java index fc1cb9fd..dce629d0 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/FarmingCertainTaskType.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/FarmingCertainTaskType.java @@ -34,6 +34,7 @@ public final class FarmingCertainTaskType extends BukkitTaskType { @Override public @NotNull List validateConfig(@NotNull String root, @NotNull HashMap config) { + //TODO add world validation ArrayList 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"); diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/MiningCertainTaskType.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/MiningCertainTaskType.java index 713bd8d2..c0e5c8a2 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/MiningCertainTaskType.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/MiningCertainTaskType.java @@ -62,6 +62,7 @@ public final class MiningCertainTaskType extends BukkitTaskType { } } } + //TODO this is wrong TaskUtils.configValidateBoolean(root + ".reverse-if-broken", config.get("reverse-if-broken"), problems, true,"reverse-if-broken"); 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"); diff --git a/bukkit/src/main/resources/resources/bukkit/config.yml b/bukkit/src/main/resources/resources/bukkit/config.yml index 95da645e..7bbc5c3c 100644 --- a/bukkit/src/main/resources/resources/bukkit/config.yml +++ b/bukkit/src/main/resources/resources/bukkit/config.yml @@ -190,6 +190,8 @@ options: allow-quest-cancel: true # Allow players to track a quest (you may want to remove the tracking instructions in the global item lore) allow-quest-track: true + # Task type exclusions - include task IDs in this list which you don't want registering + task-type-exclusions: [] # Titles for the GUIs guinames: quests-category: "Quests Categories" -- cgit v1.2.3-70-g09d2