aboutsummaryrefslogtreecommitdiffstats
path: root/bukkit/src/main/java/com
diff options
context:
space:
mode:
authorLMBishop <13875753+LMBishop@users.noreply.github.com>2022-04-29 18:10:50 +0100
committerLMBishop <13875753+LMBishop@users.noreply.github.com>2022-04-29 18:10:50 +0100
commitd89f8086a496ed0923e41e86f11ab60b51e7f787 (patch)
treeab2084c5197726c3cc3230e8d6f5c92113b83674 /bukkit/src/main/java/com
parent70bac90ae8c547e7e1fd4331f7079d458de08d34 (diff)
Add cancellable and counts towards limit options (closes #383)
Diffstat (limited to 'bukkit/src/main/java/com')
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/config/BukkitQuestsLoader.java4
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/questcontroller/NormalQuestController.java17
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/MenuUtils.java3
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/Messages.java1
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."),