aboutsummaryrefslogtreecommitdiffstats
path: root/src/me/fatpigsarefat/quests/player
diff options
context:
space:
mode:
Diffstat (limited to 'src/me/fatpigsarefat/quests/player')
-rw-r--r--src/me/fatpigsarefat/quests/player/QPlayer.java22
-rw-r--r--src/me/fatpigsarefat/quests/player/QPlayerManager.java8
-rw-r--r--src/me/fatpigsarefat/quests/player/questprogressfile/QuestProgress.java4
-rw-r--r--src/me/fatpigsarefat/quests/player/questprogressfile/QuestProgressFile.java22
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();
+ }
+
}