aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main/java/com/leonardobishop/quests/commands/CommandQuests.java25
-rw-r--r--src/main/java/com/leonardobishop/quests/util/Messages.java1
-rw-r--r--src/main/resources/config.yml1
3 files changed, 27 insertions, 0 deletions
diff --git a/src/main/java/com/leonardobishop/quests/commands/CommandQuests.java b/src/main/java/com/leonardobishop/quests/commands/CommandQuests.java
index 2490795a..ef5274a4 100644
--- a/src/main/java/com/leonardobishop/quests/commands/CommandQuests.java
+++ b/src/main/java/com/leonardobishop/quests/commands/CommandQuests.java
@@ -40,6 +40,7 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.UUID;
+import java.util.concurrent.ThreadLocalRandom;
public class CommandQuests implements TabExecutor {
@@ -418,6 +419,27 @@ public class CommandQuests implements TabExecutor {
}
return true;
}
+ } else if (sender instanceof Player && (args[0].equalsIgnoreCase("random")) && sender.hasPermission("quests.command.random")) {
+ Player player = (Player) sender;
+ QPlayer qPlayer = plugin.getPlayerManager().getPlayer(player.getUniqueId());
+ if (qPlayer == null) {
+ sender.sendMessage(ChatColor.RED + "Your quest progress file has not been loaded yet.");
+ return true;
+ }
+ List<Quest> validQuests = new ArrayList<>();
+ for (Quest quest : plugin.getQuestManager().getQuests().values()) {
+ if (qPlayer.getQuestProgressFile().canStartQuest(quest) == QuestStartResult.QUEST_SUCCESS) {
+ validQuests.add(quest);
+ }
+ }
+
+ if (validQuests.isEmpty()) {
+ player.sendMessage(Messages.QUEST_RANDOM_NONE.getMessage());
+ return true;
+ }
+ int random = ThreadLocalRandom.current().nextInt(0, validQuests.size());
+ qPlayer.getQuestProgressFile().startQuest(validQuests.get(random));
+ return true;
} else if (sender instanceof Player && (args[0].equalsIgnoreCase("started"))) {
Player player = (Player) sender;
QPlayer qPlayer = plugin.getPlayerManager().getPlayer(player.getUniqueId());
@@ -570,6 +592,9 @@ public class CommandQuests implements TabExecutor {
if (sender.hasPermission("quests.admin")) {
options.add("admin");
}
+ if (sender.hasPermission("quests.command.random")) {
+ options.add("random");
+ }
return matchTabComplete(args[0], options);
} else if (args.length == 2) {
if (args[0].equalsIgnoreCase("c") || args[0].equalsIgnoreCase("category")) {
diff --git a/src/main/java/com/leonardobishop/quests/util/Messages.java b/src/main/java/com/leonardobishop/quests/util/Messages.java
index fc9fb976..ba9e42da 100644
--- a/src/main/java/com/leonardobishop/quests/util/Messages.java
+++ b/src/main/java/com/leonardobishop/quests/util/Messages.java
@@ -11,6 +11,7 @@ public enum Messages {
QUEST_CANCEL("messages.quest-cancel"),
QUEST_TRACK("messages.quest-track"),
QUEST_TRACK_STOP("messages.quest-track-stop"),
+ QUEST_RANDOM_NONE("messages.quest-random-none"),
QUEST_START_LIMIT("messages.quest-start-limit"),
QUEST_START_DISABLED("messages.quest-start-disabled"),
QUEST_START_LOCKED("messages.quest-start-locked"),
diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml
index ef7532b9..0f7e4a46 100644
--- a/src/main/resources/config.yml
+++ b/src/main/resources/config.yml
@@ -253,6 +253,7 @@ messages:
quest-cancel: "&7Quest &c{quest} &7cancelled!"
quest-track: "&7Tracking quest &c{quest}&7."
quest-track-stop: "&7No longer tracking quest &c{quest}&7."
+ quest-random-none: "&cYou have no quests which you can start."
quest-start-limit: "&7Players are limited to &c{limit} &7started quests at a time."
quest-start-disabled: "&7You cannot repeat this quest."
quest-start-locked: "&7You have not unlocked this quest yet."