diff options
| author | fatpigsarefat <fatpigsarefat@outlook.com> | 2018-09-23 16:19:39 +0100 |
|---|---|---|
| committer | fatpigsarefat <fatpigsarefat@outlook.com> | 2018-09-23 16:19:39 +0100 |
| commit | bcbb43392cd45e03a68bc581396fc5bbac691080 (patch) | |
| tree | bc50f659a8aafc0164e2746109a160d53b0201fe /src/main | |
| parent | f772b2eec8e41876a140832d1101a21dcc130e01 (diff) | |
Players can no longer start already started quests
- When clicking a quest a player has already started, it would reset
- Default messages added to config.yml
- New response code from the startQuest method (5)
Diffstat (limited to 'src/main')
4 files changed, 24 insertions, 13 deletions
diff --git a/src/main/java/me/fatpigsarefat/quests/commands/CommandQuests.java b/src/main/java/me/fatpigsarefat/quests/commands/CommandQuests.java index 277fc002..f8c3c04b 100644 --- a/src/main/java/me/fatpigsarefat/quests/commands/CommandQuests.java +++ b/src/main/java/me/fatpigsarefat/quests/commands/CommandQuests.java @@ -204,6 +204,7 @@ public class CommandQuests implements CommandExecutor { if (quest == null) { sender.sendMessage(Messages.COMMAND_QUEST_START_DOESNTEXIST.getMessage().replace("{quest}", args[4])); success = true; + return true; } if (args[2].equalsIgnoreCase("reset")) { questProgressFile.generateBlankQuestProgress(quest.getId()); @@ -224,6 +225,9 @@ public class CommandQuests implements CommandExecutor { } else if (response == 4) { sender.sendMessage(Messages.COMMAND_QUEST_ADMIN_START_FAILLOCKED.getMessage().replace("{player}", name).replace("{quest}", quest.getId())); return true; + } else if (response == 5) { + sender.sendMessage(Messages.COMMAND_QUEST_ADMIN_START_FAILSTARTED.getMessage().replace("{player}", name).replace("{quest}", quest.getId())); + return true; } questProgressFile.saveToDisk(); sender.sendMessage(Messages.COMMAND_QUEST_ADMIN_START_SUCCESS.getMessage().replace("{player}", name).replace("{quest}", quest.getId())); diff --git a/src/main/java/me/fatpigsarefat/quests/obj/Messages.java b/src/main/java/me/fatpigsarefat/quests/obj/Messages.java index ddcb23cb..13920d6f 100644 --- a/src/main/java/me/fatpigsarefat/quests/obj/Messages.java +++ b/src/main/java/me/fatpigsarefat/quests/obj/Messages.java @@ -12,6 +12,7 @@ public enum Messages { QUEST_START_DISABLED("messages.quest-start-disabled"), QUEST_START_LOCKED("messages.quest-start-locked"), QUEST_START_COOLDOWN("messages.quest-start-cooldown"), + QUEST_START_STARTED("messages.quest-start-started"), QUEST_CANCEL_NOTSTARTED("messages.quest-cancel-notstarted"), QUEST_UPDATER("messages.quest-updater"), COMMAND_QUEST_START_DOESNTEXIST("messages.command-quest-start-doesntexist"), @@ -35,6 +36,7 @@ public enum Messages { COMMAND_QUEST_ADMIN_START_FAILCOOLDOWN("messages.command-quest-admin-start-failcooldown"), COMMAND_QUEST_ADMIN_START_FAILCOMPLETE("messages.command-quest-admin-start-failcomplete"), COMMAND_QUEST_ADMIN_START_FAILLIMIT("messages.command-quest-admin-start-faillimit"), + COMMAND_QUEST_ADMIN_START_FAILSTARTED("messages.command-quest-admin-start-failstarted"), COMMAND_QUEST_ADMIN_START_SUCCESS("messages.command-quest-admin-start-success"), COMMAND_QUEST_ADMIN_COMPLETE_SUCCESS("messages.command-quest-admin-complete-success"), COMMAND_QUEST_ADMIN_RESET_SUCCESS("messages.command-quest-admin-reset-success"); diff --git a/src/main/java/me/fatpigsarefat/quests/player/questprogressfile/QuestProgressFile.java b/src/main/java/me/fatpigsarefat/quests/player/questprogressfile/QuestProgressFile.java index 144093e6..f69ac257 100644 --- a/src/main/java/me/fatpigsarefat/quests/player/questprogressfile/QuestProgressFile.java +++ b/src/main/java/me/fatpigsarefat/quests/player/questprogressfile/QuestProgressFile.java @@ -56,39 +56,42 @@ public class QuestProgressFile { * Start a quest for the player. * * @param quest the quest to check - * @return 0 if successful, 1 if limit reached, 2 if quest is already completed, 3 if quest has cooldown, 4 if still locked + * @return 0 if successful, 1 if limit reached, 2 if quest is already completed, 3 if quest has cooldown, 4 if still locked, 5 if already started */ public int startQuest(Quest quest) { + Player p = Bukkit.getPlayer(player); if (getStartedQuests().size() >= Options.QUESTS_START_LIMIT.getIntValue()) { - if (Bukkit.getPlayer(player) != null) { - Player player = Bukkit.getPlayer(getPlayer()); - player.sendMessage(Messages.QUEST_START_LIMIT.getMessage().replace("{limit}", String.valueOf(Options.QUESTS_START_LIMIT.getIntValue()))); + if (player != null) { + p.sendMessage(Messages.QUEST_START_LIMIT.getMessage().replace("{limit}", String.valueOf(Options.QUESTS_START_LIMIT.getIntValue()))); } return 1; } QuestProgress questProgress = getQuestProgress(quest); if (!quest.isRepeatable() && questProgress.isCompletedBefore()) { - if (Bukkit.getPlayer(player) != null) { - Player player = Bukkit.getPlayer(getPlayer()); - player.sendMessage(Messages.QUEST_START_DISABLED.getMessage()); + if (player != null) { + p.sendMessage(Messages.QUEST_START_DISABLED.getMessage()); } return 2; } long cooldown = getCooldownFor(quest); if (cooldown > 0) { - if (Bukkit.getPlayer(player) != null) { - Player player = Bukkit.getPlayer(getPlayer()); - player.sendMessage(Messages.QUEST_START_COOLDOWN.getMessage().replace("{time}", String.valueOf(Quests.convertToFormat(TimeUnit.MINUTES.convert(cooldown, TimeUnit.MILLISECONDS))))); + if (player != null) { + p.sendMessage(Messages.QUEST_START_COOLDOWN.getMessage().replace("{time}", String.valueOf(Quests.convertToFormat(TimeUnit.MINUTES.convert(cooldown, TimeUnit.MILLISECONDS))))); } return 3; } if (!hasMetRequirements(quest)) { - if (Bukkit.getPlayer(player) != null) { - Player player = Bukkit.getPlayer(getPlayer()); - player.sendMessage(Messages.QUEST_START_LOCKED.getMessage()); + if (player != null) { + p.sendMessage(Messages.QUEST_START_LOCKED.getMessage()); } return 4; } + if (!questProgress.isStarted()) { + if (player != null) { + p.sendMessage(Messages.QUEST_START_STARTED.getMessage()); + } + return 5; + } questProgress.setStarted(true); for (TaskProgress taskProgress : questProgress.getTaskProgress()) { taskProgress.setCompleted(false); diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index e5318fa5..03474e1f 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -966,6 +966,7 @@ messages: quest-start-disabled: "&7You cannot repeat this quest." quest-start-locked: "&7You have not unlocked this quest yet." quest-start-cooldown: "&7You have recently completed this quest. You have to wait &c{time} &7until you are able to restart it." + quest-start-started: "&7You have already started this quest." quest-cancel-notstarted: "&7You have not started this quest." quest-updater: "&cQuests > &7A new version &c{newver} &7was found on Spigot (your version: &c{oldver}&7). Please update me! <3 - Link: {link}" command-quest-start-doesntexist: "&7The specified quest '&c{quest}&7' does not exist." @@ -983,6 +984,7 @@ messages: command-quest-admin-start-failcooldown: "&7Quest '&c{quest}&7' could not be started for player &c{player}&7. It is still on cooldown for them." command-quest-admin-start-failcomplete: "&7Quest '&c{quest}&7' could not be started for player &c{player}&7. They have already completed it." command-quest-admin-start-faillimit: "&7Quest '&c{quest}&7' could not be started for player &c{player}&7. They have reached their quest start limit." + command-quest-admin-start-failstarted: "&7Quest '&c{quest}&7' could not be started for player &c{player}&7. It is already started." command-quest-admin-start-success: "&7Quest &c{quest} &7started for player &c{player}&7." command-quest-admin-complete-success: "&7Quest &c{quest} &7completed for player &c{player}&7." command-quest-admin-reset-success: "&7Successfully reset quest '&c{quest}&7' for player &c{player}&7." |
