summaryrefslogtreecommitdiffstats
path: root/bukkit
diff options
context:
space:
mode:
Diffstat (limited to 'bukkit')
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/config/BukkitQuestsConfig.java18
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/questcontroller/NormalQuestController.java4
-rw-r--r--bukkit/src/main/resources/resources/bukkit/config.yml12
3 files changed, 30 insertions, 4 deletions
diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/config/BukkitQuestsConfig.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/config/BukkitQuestsConfig.java
index 93c4aaf6..3701c839 100644
--- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/config/BukkitQuestsConfig.java
+++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/config/BukkitQuestsConfig.java
@@ -3,6 +3,7 @@ package com.leonardobishop.quests.bukkit.config;
import com.leonardobishop.quests.bukkit.hook.itemgetter.ItemGetter;
import com.leonardobishop.quests.common.config.QuestsConfig;
import org.bukkit.configuration.file.YamlConfiguration;
+import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.jetbrains.annotations.NotNull;
@@ -10,6 +11,7 @@ import java.io.File;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.Set;
public class BukkitQuestsConfig implements QuestsConfig {
@@ -91,4 +93,20 @@ public class BukkitQuestsConfig implements QuestsConfig {
public ItemStack getItem(@NotNull String path) {
return new ItemStack(cachedItemStacks.computeIfAbsent(path, s -> itemGetter.getItem(path, config)));
}
+
+ public int getQuestLimit(Player player) {
+ int limit = getQuestLimit("default");
+ if(player != null) {
+ for (String rank : config.getConfigurationSection("options.quest-limit-multiple").getKeys(false)) {
+ int newLimit = getQuestLimit(rank);
+ if (player.hasPermission("quests.limit." + rank) && (limit < newLimit))
+ limit = newLimit;
+ }
+ }
+ return limit;
+ }
+
+ public int getQuestLimit(@NotNull String rank) {
+ return config.getInt("options.quest-limit-multiple." + rank, config.getInt("options.quest-limit-multiple.default", 2));
+ }
}
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 28c5c2dc..32a9e9f0 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
@@ -63,7 +63,7 @@ public class NormalQuestController implements QuestController {
// This one is hacky
break;
case QUEST_LIMIT_REACHED:
- questResultMessage = Messages.QUEST_START_LIMIT.getMessage().replace("{limit}", String.valueOf(config.getInt("options.quest-started-limit")));
+ questResultMessage = Messages.QUEST_START_LIMIT.getMessage().replace("{limit}", String.valueOf(config.getQuestLimit(player)));
break;
case QUEST_ALREADY_COMPLETED:
questResultMessage = Messages.QUEST_START_DISABLED.getMessage();
@@ -184,7 +184,7 @@ public class NormalQuestController implements QuestController {
return QuestStartResult.NO_PERMISSION_FOR_CATEGORY;
}
}
- if (!config.getBoolean("options.quest-autostart") && getStartedQuestsForPlayer(qPlayer).size() >= config.getInt("options.quest-started-limit")) {
+ if (!config.getBoolean("options.quest-autostart") && getStartedQuestsForPlayer(qPlayer).size() >= config.getQuestLimit(p)) {
return QuestStartResult.QUEST_LIMIT_REACHED;
}
return QuestStartResult.QUEST_SUCCESS;
diff --git a/bukkit/src/main/resources/resources/bukkit/config.yml b/bukkit/src/main/resources/resources/bukkit/config.yml
index 40dc1f94..636b7abc 100644
--- a/bukkit/src/main/resources/resources/bukkit/config.yml
+++ b/bukkit/src/main/resources/resources/bukkit/config.yml
@@ -150,8 +150,16 @@ options:
trim-gui-size: true
# Enable/disable titles
titles-enabled: true
- # Players cannot start any more quests than this at a single time
- quest-started-limit: 2
+
+ # Allow players to have multiple active quests.
+ # You can set the default number of quests using the 'default' rank below.
+ # To grant different quest limits to different people, you can define a 'quest-rank'
+ # Create the 'quest-rank' below, and give the matching permission: quests.limit.<quest-rank>
+ quest-limit-multiple:
+ default: 2
+ #vip: 5
+ #staff: 10
+
# Allow players to cancel a quest (you may want to remove the cancel instructions in the global item lore)
allow-quest-cancel: true
# Allow players to track a quest (you may want to remove the tracking instructions in the global item lore)