diff options
Diffstat (limited to 'bukkit/src/main/java/com')
4 files changed, 22 insertions, 3 deletions
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 e4015530..282b0d61 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 @@ -225,6 +225,8 @@ public class BukkitQuestsLoader implements QuestsLoader { boolean cooldown = config.getBoolean("options.cooldown.enabled", false); boolean permissionRequired = config.getBoolean("options.permission-required", false); boolean autostart = config.getBoolean("options.autostart", false); + boolean cancellable = config.getBoolean("options.cancellable", true); + boolean countsTowardsLimit = config.getBoolean("options.counts-towards-limit", true); int cooldownTime = config.getInt("options.cooldown.time", 10); int sortOrder = config.getInt("options.sort-order", 1); String category = config.getString("options.category"); @@ -252,6 +254,8 @@ public class BukkitQuestsLoader implements QuestsLoader { .withCooldownEnabled(cooldown) .withPermissionRequired(permissionRequired) .withRepeatEnabled(repeatable) + .withCancellable(cancellable) + .withCancellable(countsTowardsLimit) .withAutoStartEnabled(autostart) .inCategory(category) .build(); diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/questcontroller/NormalQuestController.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/questcontroller/NormalQuestController.java index 35409a00..4b8d5a44 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/questcontroller/NormalQuestController.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/questcontroller/NormalQuestController.java @@ -179,8 +179,17 @@ public class NormalQuestController implements QuestController { return QuestStartResult.NO_PERMISSION_FOR_CATEGORY; } } - if (!config.getBoolean("options.quest-autostart") && getStartedQuestsForPlayer(qPlayer).size() >= config.getQuestLimit(p)) { - return QuestStartResult.QUEST_LIMIT_REACHED; + if (!config.getBoolean("options.quest-autostart")) { + Set<Quest> startedQuests = getStartedQuestsForPlayer(qPlayer); + int questLimitCount = 0; + for (Quest q : startedQuests) { + if (q.doesCountTowardsLimit()) { + questLimitCount++; + } + } + if (questLimitCount >= config.getQuestLimit(p)) { + return QuestStartResult.QUEST_LIMIT_REACHED; + } } return QuestStartResult.QUEST_SUCCESS; } @@ -257,6 +266,10 @@ public class NormalQuestController implements QuestController { } return false; } + if (!quest.isCancellable()) { + Messages.QUEST_CANCEL_NOTCANCELLABLE.send(player); + return false; + } questProgress.setStarted(false); for (TaskProgress taskProgress : questProgress.getTaskProgress()) { taskProgress.setProgress(null); diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/MenuUtils.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/MenuUtils.java index 1b801146..3379883f 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/MenuUtils.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/MenuUtils.java @@ -67,7 +67,8 @@ public class MenuUtils { if (menu.getOwner().hasStartedQuest(quest)) { if (!plugin.getQuestsConfig().getBoolean("options.allow-quest-cancel") || plugin.getConfig().getBoolean("options.quest-autostart") - || quest.isAutoStartEnabled()) { + || quest.isAutoStartEnabled() + || !quest.isCancellable()) { return; } if (plugin.getQuestsConfig().getBoolean("options.gui-confirm-cancel", true)) { diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/Messages.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/Messages.java index 34fcfdc5..c63a2f05 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/Messages.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/Messages.java @@ -31,6 +31,7 @@ public enum Messages { QUEST_CATEGORY_QUEST_PERMISSION("messages.quest-category-quest-permission", "&7You do not have permission to view this category."), QUEST_CATEGORY_PERMISSION("messages.quest-category-permission", "&7You do not have permission to start this quest since it is in a category you do not have permission to view."), QUEST_CANCEL_NOTSTARTED("messages.quest-cancel-notstarted", "&7You have not started this quest."), + QUEST_CANCEL_NOTCANCELLABLE("messages.quest-cancel-notcancellable", "&7You cannot cancel this quest."), QUEST_UPDATER("messages.quest-updater", "&cQuests > &7A new version &c{newver} &7was found on Spigot (your version: &c{oldver}&7). Please update me! <3 - Link: {link}"), COMMAND_DATA_NOT_LOADED("messages.command-data-not-loaded", "&4Your quests progress file has not been loaded; you cannot use quests. If this issue persists, contact an admin."), COMMAND_SUB_DOESNTEXIST("messages.command-sub-doesntexist", "&7The specified subcommand '&c{sub}' &7does not exist."), |
