diff options
Diffstat (limited to 'src/main/java/com/leonardobishop')
| -rw-r--r-- | src/main/java/com/leonardobishop/quests/commands/CommandQuests.java | 25 | ||||
| -rw-r--r-- | src/main/java/com/leonardobishop/quests/util/Messages.java | 1 |
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"), |
