diff options
| author | LMBishop <13875753+LMBishop@users.noreply.github.com> | 2021-03-04 22:04:43 +0000 |
|---|---|---|
| committer | LMBishop <13875753+LMBishop@users.noreply.github.com> | 2021-03-04 22:04:43 +0000 |
| commit | fd416af7f16ffa0dfba4fdd6730341714bec18a2 (patch) | |
| tree | fbb42a796ef0e2917385594418be5629762f6ddb /src/main/java/com/leonardobishop/quests | |
| parent | 6526fc64a78d3ad8136fbdf29493a182ca5db7c8 (diff) | |
Add random quest command
- Closes #152
Diffstat (limited to 'src/main/java/com/leonardobishop/quests')
| -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"), |
