diff options
Diffstat (limited to 'src/main')
| -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 | ||||
| -rw-r--r-- | src/main/resources/config.yml | 1 |
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." |
