diff options
Diffstat (limited to 'src/me/fatpigsarefat/quests/player')
4 files changed, 48 insertions, 8 deletions
diff --git a/src/me/fatpigsarefat/quests/player/QPlayer.java b/src/me/fatpigsarefat/quests/player/QPlayer.java index 27e9283d..e797d7bb 100644 --- a/src/me/fatpigsarefat/quests/player/QPlayer.java +++ b/src/me/fatpigsarefat/quests/player/QPlayer.java @@ -21,10 +21,16 @@ public class QPlayer { private UUID uuid; private QuestProgressFile questProgressFile; + private boolean onlyDataLoaded; public QPlayer(UUID uuid, QuestProgressFile questProgressFile) { + this(uuid, questProgressFile, false); + } + + public QPlayer(UUID uuid, QuestProgressFile questProgressFile, boolean onlyDataLoaded) { this.uuid = uuid; this.questProgressFile = questProgressFile; + this.onlyDataLoaded = onlyDataLoaded; } public UUID getUuid() { @@ -32,6 +38,10 @@ public class QPlayer { } public void openCategory(Category category) { + if (onlyDataLoaded) { + return; + } + Player player = Bukkit.getPlayer(uuid); if (player == null) { return; @@ -53,6 +63,10 @@ public class QPlayer { } public void openQuests() { + if (onlyDataLoaded) { + return; + } + Player player = Bukkit.getPlayer(uuid); if (player == null) { return; @@ -91,6 +105,14 @@ public class QPlayer { } } + public boolean isOnlyDataLoaded() { + return onlyDataLoaded; + } + + public void setOnlyDataLoaded(boolean onlyDataLoaded) { + this.onlyDataLoaded = onlyDataLoaded; + } + public QuestProgressFile getQuestProgressFile() { return questProgressFile; } diff --git a/src/me/fatpigsarefat/quests/player/QPlayerManager.java b/src/me/fatpigsarefat/quests/player/QPlayerManager.java index 6ee9055e..e463d338 100644 --- a/src/me/fatpigsarefat/quests/player/QPlayerManager.java +++ b/src/me/fatpigsarefat/quests/player/QPlayerManager.java @@ -30,7 +30,11 @@ public class QPlayerManager { } public void loadPlayer(UUID uuid) { - if (getPlayer(uuid) == null) { + loadPlayer(uuid, false); + } + + public void loadPlayer(UUID uuid, boolean onlyData) { + if (getPlayer(uuid) == null || getPlayer(uuid).isOnlyDataLoaded()) { QuestProgressFile questProgressFile = new QuestProgressFile(uuid); File directory = new File(Quests.getInstance().getDataFolder() + File.separator + "playerdata"); @@ -61,7 +65,7 @@ public class QPlayerManager { } } - QPlayer qPlayer = new QPlayer(uuid, questProgressFile); + QPlayer qPlayer = new QPlayer(uuid, questProgressFile, onlyData); addPlayer(qPlayer); } diff --git a/src/me/fatpigsarefat/quests/player/questprogressfile/QuestProgress.java b/src/me/fatpigsarefat/quests/player/questprogressfile/QuestProgress.java index c6ec335d..8824f920 100644 --- a/src/me/fatpigsarefat/quests/player/questprogressfile/QuestProgress.java +++ b/src/me/fatpigsarefat/quests/player/questprogressfile/QuestProgress.java @@ -86,4 +86,8 @@ public class QuestProgress { public boolean isWorthSaving() { return modified; } + + public void setWorthSaving(boolean modified) { + this.modified = modified; + } } diff --git a/src/me/fatpigsarefat/quests/player/questprogressfile/QuestProgressFile.java b/src/me/fatpigsarefat/quests/player/questprogressfile/QuestProgressFile.java index d809201c..4b1b13c1 100644 --- a/src/me/fatpigsarefat/quests/player/questprogressfile/QuestProgressFile.java +++ b/src/me/fatpigsarefat/quests/player/questprogressfile/QuestProgressFile.java @@ -50,13 +50,19 @@ public class QuestProgressFile { return true; } - public boolean startQuest(Quest quest) { + /** + * 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 + */ + public int startQuest(Quest quest) { 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()))); } - return false; + return 1; } QuestProgress questProgress = getQuestProgress(quest); if (!quest.isRepeatable() && questProgress.isCompletedBefore()) { @@ -64,7 +70,7 @@ public class QuestProgressFile { Player player = Bukkit.getPlayer(getPlayer()); player.sendMessage(Messages.QUEST_START_DISABLED.getMessage()); } - return false; + return 2; } long cooldown = getCooldownFor(quest); if (cooldown > 0) { @@ -72,14 +78,14 @@ public class QuestProgressFile { Player player = Bukkit.getPlayer(getPlayer()); player.sendMessage(Messages.QUEST_START_COOLDOWN.getMessage().replace("{time}", String.valueOf(Quests.convertToFormat(TimeUnit.MINUTES.convert(cooldown, TimeUnit.MILLISECONDS))))); } - return false; + return 3; } if (!hasMetRequirements(quest)) { if (Bukkit.getPlayer(player) != null) { Player player = Bukkit.getPlayer(getPlayer()); player.sendMessage(Messages.QUEST_START_LOCKED.getMessage()); } - return false; + return 4; } questProgress.setStarted(true); for (TaskProgress taskProgress : questProgress.getTaskProgress()) { @@ -96,7 +102,7 @@ public class QuestProgressFile { .getDisplayNameStripped())); } } - return true; + return 0; } public void addQuestProgress(QuestProgress questProgress) { @@ -220,5 +226,9 @@ public class QuestProgressFile { } } + public void clear() { + questProgress.clear(); + } + } |
