aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/com
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com')
-rw-r--r--src/main/java/com/leonardobishop/quests/commands/CommandQuests.java25
-rw-r--r--src/main/java/com/leonardobishop/quests/util/Messages.java1
2 files changed, 26 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"),