aboutsummaryrefslogtreecommitdiffstats
path: root/bukkit/src/main/java
diff options
context:
space:
mode:
Diffstat (limited to 'bukkit/src/main/java')
-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
2 files changed, 20 insertions, 2 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;