aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/com/leonardobishop/quests
diff options
context:
space:
mode:
authorLMBishop <13875753+LMBishop@users.noreply.github.com>2021-03-07 14:56:07 +0000
committerLMBishop <13875753+LMBishop@users.noreply.github.com>2021-03-07 14:56:07 +0000
commitbe8fef67a388db2e2ccade068cfb3b11621e527a (patch)
treecdbf532a1d2b77abcab9b915813d6c9764f2d466 /src/main/java/com/leonardobishop/quests
parent7f639c9f84967c4ffffcba9b9bb8fc921106278a (diff)
Refactored quest progress files
- Moved methods which involve a Player (such as startQuest, completeQuest) to the QPlayer class as the QuestProgressFile is meant to describe quest progress only, rather than have complicated logic in them
Diffstat (limited to 'src/main/java/com/leonardobishop/quests')
-rw-r--r--src/main/java/com/leonardobishop/quests/QuestCompleter.java10
-rw-r--r--src/main/java/com/leonardobishop/quests/api/QuestsPlaceholders.java4
-rw-r--r--src/main/java/com/leonardobishop/quests/api/events/PlayerStartTrackQuestEvent.java15
-rw-r--r--src/main/java/com/leonardobishop/quests/api/events/PlayerStopTrackQuestEvent.java15
-rw-r--r--src/main/java/com/leonardobishop/quests/commands/CommandQuests.java16
-rw-r--r--src/main/java/com/leonardobishop/quests/menu/CancelQMenu.java6
-rw-r--r--src/main/java/com/leonardobishop/quests/menu/CategoryQMenu.java10
-rw-r--r--src/main/java/com/leonardobishop/quests/menu/MenuUtil.java10
-rw-r--r--src/main/java/com/leonardobishop/quests/menu/QItemStack.java9
-rw-r--r--src/main/java/com/leonardobishop/quests/menu/QuestQMenu.java14
-rw-r--r--src/main/java/com/leonardobishop/quests/menu/StartedQMenu.java18
-rw-r--r--src/main/java/com/leonardobishop/quests/menu/element/QuestMenuElement.java6
-rw-r--r--src/main/java/com/leonardobishop/quests/player/QPlayer.java298
-rw-r--r--src/main/java/com/leonardobishop/quests/player/QPlayerManager.java4
-rw-r--r--src/main/java/com/leonardobishop/quests/player/questprogressfile/QuestProgressFile.java312
-rw-r--r--src/main/java/com/leonardobishop/quests/quests/tasktypes/types/BreedingTaskType.java6
-rw-r--r--src/main/java/com/leonardobishop/quests/quests/tasktypes/types/BrewingTaskType.java6
-rw-r--r--src/main/java/com/leonardobishop/quests/quests/tasktypes/types/BuildingCertainTaskType.java14
-rw-r--r--src/main/java/com/leonardobishop/quests/quests/tasktypes/types/BuildingTaskType.java6
-rw-r--r--src/main/java/com/leonardobishop/quests/quests/tasktypes/types/CommandTaskType.java6
-rw-r--r--src/main/java/com/leonardobishop/quests/quests/tasktypes/types/DealDamageTaskType.java6
-rw-r--r--src/main/java/com/leonardobishop/quests/quests/tasktypes/types/DistancefromTaskType.java6
-rw-r--r--src/main/java/com/leonardobishop/quests/quests/tasktypes/types/EnchantingTaskType.java6
-rw-r--r--src/main/java/com/leonardobishop/quests/quests/tasktypes/types/ExpEarnTaskType.java7
-rw-r--r--src/main/java/com/leonardobishop/quests/quests/tasktypes/types/FarmingTaskType.java6
-rw-r--r--src/main/java/com/leonardobishop/quests/quests/tasktypes/types/FishingTaskType.java6
-rw-r--r--src/main/java/com/leonardobishop/quests/quests/tasktypes/types/InventoryTaskType.java6
-rw-r--r--src/main/java/com/leonardobishop/quests/quests/tasktypes/types/MilkingTaskType.java4
-rw-r--r--src/main/java/com/leonardobishop/quests/quests/tasktypes/types/MiningCertainTaskType.java11
-rw-r--r--src/main/java/com/leonardobishop/quests/quests/tasktypes/types/MiningTaskType.java6
-rw-r--r--src/main/java/com/leonardobishop/quests/quests/tasktypes/types/MobkillingCertainTaskType.java6
-rw-r--r--src/main/java/com/leonardobishop/quests/quests/tasktypes/types/MobkillingTaskType.java6
-rw-r--r--src/main/java/com/leonardobishop/quests/quests/tasktypes/types/PermissionTaskType.java5
-rw-r--r--src/main/java/com/leonardobishop/quests/quests/tasktypes/types/PlayerkillingTaskType.java6
-rw-r--r--src/main/java/com/leonardobishop/quests/quests/tasktypes/types/PlaytimeTaskType.java5
-rw-r--r--src/main/java/com/leonardobishop/quests/quests/tasktypes/types/PositionTaskType.java6
-rw-r--r--src/main/java/com/leonardobishop/quests/quests/tasktypes/types/ShearingTaskType.java6
-rw-r--r--src/main/java/com/leonardobishop/quests/quests/tasktypes/types/TamingTaskType.java6
-rw-r--r--src/main/java/com/leonardobishop/quests/quests/tasktypes/types/WalkingTaskType.java6
-rw-r--r--src/main/java/com/leonardobishop/quests/quests/tasktypes/types/dependent/ASkyBlockLevelType.java6
-rw-r--r--src/main/java/com/leonardobishop/quests/quests/tasktypes/types/dependent/BentoBoxLevelTaskType.java6
-rw-r--r--src/main/java/com/leonardobishop/quests/quests/tasktypes/types/dependent/CitizensDeliverTaskType.java6
-rw-r--r--src/main/java/com/leonardobishop/quests/quests/tasktypes/types/dependent/CitizensInteractTaskType.java6
-rw-r--r--src/main/java/com/leonardobishop/quests/quests/tasktypes/types/dependent/EssentialsBalanceTaskType.java6
-rw-r--r--src/main/java/com/leonardobishop/quests/quests/tasktypes/types/dependent/EssentialsMoneyEarnTaskType.java6
-rw-r--r--src/main/java/com/leonardobishop/quests/quests/tasktypes/types/dependent/IridiumSkyblockValueType.java6
-rw-r--r--src/main/java/com/leonardobishop/quests/quests/tasktypes/types/dependent/MythicMobsKillingType.java6
-rw-r--r--src/main/java/com/leonardobishop/quests/quests/tasktypes/types/dependent/PlaceholderAPIEvaluateTaskType.java5
-rw-r--r--src/main/java/com/leonardobishop/quests/quests/tasktypes/types/dependent/ShopGUIPlusBuyCertainTaskType.java6
-rw-r--r--src/main/java/com/leonardobishop/quests/quests/tasktypes/types/dependent/ShopGUIPlusSellCertainTaskType.java6
-rw-r--r--src/main/java/com/leonardobishop/quests/quests/tasktypes/types/dependent/uSkyBlockLevelType.java6
51 files changed, 461 insertions, 511 deletions
diff --git a/src/main/java/com/leonardobishop/quests/QuestCompleter.java b/src/main/java/com/leonardobishop/quests/QuestCompleter.java
index 97357126..09c9b01d 100644
--- a/src/main/java/com/leonardobishop/quests/QuestCompleter.java
+++ b/src/main/java/com/leonardobishop/quests/QuestCompleter.java
@@ -35,13 +35,12 @@ public class QuestCompleter implements Runnable {
Player player = Bukkit.getPlayer(questProgress.getPlayer());
if (player != null && player.isOnline()) {
QPlayer qPlayer = plugin.getPlayerManager().getPlayer(player.getUniqueId());
- QuestProgressFile questProgressFile = qPlayer.getQuestProgressFile();
Quest quest = plugin.getQuestManager().getQuestById(questProgress.getQuestId());
- if (!questProgressFile.hasStartedQuest(quest)) return;
+ if (!qPlayer.hasStartedQuest(quest)) return;
if (checkComplete(quest, questProgress)) {
- questProgressFile.completeQuest(quest);
+ qPlayer.completeQuest(quest);
}
}
}
@@ -52,10 +51,11 @@ public class QuestCompleter implements Runnable {
Player player = Bukkit.getPlayer(questProgressFile.getPlayerUUID());
if (player != null && player.isOnline()) {
+ QPlayer qPlayer = plugin.getPlayerManager().getPlayer(player.getUniqueId());
for (QuestProgress questProgress : questProgressFile.getAllQuestProgress()) {
Quest quest = plugin.getQuestManager().getQuestById(questProgress.getQuestId());
if (quest == null) continue;
- if (!questProgressFile.hasStartedQuest(quest)) continue;
+ if (!qPlayer.hasStartedQuest(quest)) continue;
boolean complete = true;
for (Task task : quest.getTasks()) {
@@ -66,7 +66,7 @@ public class QuestCompleter implements Runnable {
}
}
if (complete) {
- questProgressFile.completeQuest(quest);
+ qPlayer.completeQuest(quest);
}
}
}
diff --git a/src/main/java/com/leonardobishop/quests/api/QuestsPlaceholders.java b/src/main/java/com/leonardobishop/quests/api/QuestsPlaceholders.java
index 0b6fd924..2b769373 100644
--- a/src/main/java/com/leonardobishop/quests/api/QuestsPlaceholders.java
+++ b/src/main/java/com/leonardobishop/quests/api/QuestsPlaceholders.java
@@ -133,7 +133,7 @@ public class QuestsPlaceholders extends PlaceholderExpansion implements Cacheabl
quest = plugin.getQuestManager().getQuestById(key[1]);
if (quest == null) return key[1] + " is not a quest";
} else {
- quest = plugin.getQuestManager().getQuestById(qPlayer.getQuestProgressFile().getPlayerPreferences().getTrackedQuestId());
+ quest = plugin.getQuestManager().getQuestById(qPlayer.getPlayerPreferences().getTrackedQuestId());
if (quest == null) {
if (args.length == 1) {
return "No tracked quest";
@@ -176,7 +176,7 @@ public class QuestsPlaceholders extends PlaceholderExpansion implements Cacheabl
}
break;
case "canaccept":
- result = (qPlayer.getQuestProgressFile().canStartQuest(quest) == QuestStartResult.QUEST_SUCCESS ? "true" : "false");
+ result = (qPlayer.canStartQuest(quest) == QuestStartResult.QUEST_SUCCESS ? "true" : "false");
break;
case "meetsrequirements":
result = (qPlayer.getQuestProgressFile().hasMetRequirements(quest) ? "true" : "false");
diff --git a/src/main/java/com/leonardobishop/quests/api/events/PlayerStartTrackQuestEvent.java b/src/main/java/com/leonardobishop/quests/api/events/PlayerStartTrackQuestEvent.java
index f16d755d..70b14dce 100644
--- a/src/main/java/com/leonardobishop/quests/api/events/PlayerStartTrackQuestEvent.java
+++ b/src/main/java/com/leonardobishop/quests/api/events/PlayerStartTrackQuestEvent.java
@@ -1,22 +1,23 @@
package com.leonardobishop.quests.api.events;
+import com.leonardobishop.quests.player.QPlayer;
import com.leonardobishop.quests.player.questprogressfile.QuestProgressFile;
import org.bukkit.entity.Player;
import org.bukkit.event.HandlerList;
import org.bukkit.event.player.PlayerEvent;
import org.jetbrains.annotations.NotNull;
-public class PlayerStartTrackQuestEvent extends PlayerEvent {
+public class PlayerStartTrackQuestEvent extends PlayerQuestEvent {
private final static HandlerList handlers = new HandlerList();
- private final QuestProgressFile questProgressFile;
+ private final QPlayer qPlayer;
- public PlayerStartTrackQuestEvent(@NotNull Player who, QuestProgressFile questProgressFile) {
- super(who);
- this.questProgressFile = questProgressFile;
+ public PlayerStartTrackQuestEvent(@NotNull Player who, QPlayer qPlayer) {
+ super(who, qPlayer);
+ this.qPlayer = qPlayer;
}
- public QuestProgressFile getQuestProgressFile() {
- return questProgressFile;
+ public QPlayer getQPlayer() {
+ return qPlayer;
}
@NotNull
diff --git a/src/main/java/com/leonardobishop/quests/api/events/PlayerStopTrackQuestEvent.java b/src/main/java/com/leonardobishop/quests/api/events/PlayerStopTrackQuestEvent.java
index b9f2114e..42b3d263 100644
--- a/src/main/java/com/leonardobishop/quests/api/events/PlayerStopTrackQuestEvent.java
+++ b/src/main/java/com/leonardobishop/quests/api/events/PlayerStopTrackQuestEvent.java
@@ -1,23 +1,24 @@
package com.leonardobishop.quests.api.events;
+import com.leonardobishop.quests.player.QPlayer;
import com.leonardobishop.quests.player.questprogressfile.QuestProgressFile;
import org.bukkit.entity.Player;
import org.bukkit.event.HandlerList;
import org.bukkit.event.player.PlayerEvent;
import org.jetbrains.annotations.NotNull;
-public class PlayerStopTrackQuestEvent extends PlayerEvent {
+public class PlayerStopTrackQuestEvent extends PlayerQuestEvent {
private final static HandlerList handlers = new HandlerList();
- private final QuestProgressFile questProgressFile;
+ private final QPlayer qPlayer;
- public PlayerStopTrackQuestEvent(@NotNull Player who, QuestProgressFile questProgressFile) {
- super(who);
- this.questProgressFile = questProgressFile;
+ public PlayerStopTrackQuestEvent(@NotNull Player who, QPlayer qPlayer) {
+ super(who, qPlayer);
+ this.qPlayer = qPlayer;
}
- public QuestProgressFile getQuestProgressFile() {
- return questProgressFile;
+ public QPlayer getQPlayer() {
+ return qPlayer;
}
@NotNull
diff --git a/src/main/java/com/leonardobishop/quests/commands/CommandQuests.java b/src/main/java/com/leonardobishop/quests/commands/CommandQuests.java
index ef5274a4..178f0390 100644
--- a/src/main/java/com/leonardobishop/quests/commands/CommandQuests.java
+++ b/src/main/java/com/leonardobishop/quests/commands/CommandQuests.java
@@ -330,12 +330,12 @@ public class CommandQuests implements TabExecutor {
return true;
}
if (args[2].equalsIgnoreCase("reset")) {
- questProgressFile.generateBlankQuestProgress(quest.getId());
+ questProgressFile.generateBlankQuestProgress(quest);
questProgressFile.saveToDisk(false);
sender.sendMessage(Messages.COMMAND_QUEST_ADMIN_RESET_SUCCESS.getMessage().replace("{player}", name).replace("{quest}", quest.getId()));
success = true;
} else if (args[2].equalsIgnoreCase("start")) {
- QuestStartResult response = questProgressFile.startQuest(quest);
+ QuestStartResult response = qPlayer.startQuest(quest);
if (response == QuestStartResult.QUEST_LIMIT_REACHED) {
sender.sendMessage(Messages.COMMAND_QUEST_ADMIN_START_FAILLIMIT.getMessage().replace("{player}", name).replace("{quest}", quest.getId()));
return true;
@@ -362,7 +362,7 @@ public class CommandQuests implements TabExecutor {
sender.sendMessage(Messages.COMMAND_QUEST_ADMIN_START_SUCCESS.getMessage().replace("{player}", name).replace("{quest}", quest.getId()));
success = true;
} else if (args[2].equalsIgnoreCase("complete")) {
- questProgressFile.completeQuest(quest);
+ qPlayer.completeQuest(quest);
questProgressFile.saveToDisk(false);
sender.sendMessage(Messages.COMMAND_QUEST_ADMIN_COMPLETE_SUCCESS.getMessage().replace("{player}", name).replace("{quest}", quest.getId()));
success = true;
@@ -392,11 +392,11 @@ public class CommandQuests implements TabExecutor {
sender.sendMessage(Messages.COMMAND_QUEST_GENERAL_DOESNTEXIST.getMessage().replace("{quest}", args[1]));
}
if (args[2].equalsIgnoreCase("s") || args[2].equalsIgnoreCase("start")) {
- qPlayer.getQuestProgressFile().startQuest(quest);
+ qPlayer.startQuest(quest);
} else if (args[2].equalsIgnoreCase("c") || args[2].equalsIgnoreCase("cancel")) {
- qPlayer.getQuestProgressFile().cancelQuest(quest);
+ qPlayer.cancelQuest(quest);
} else if (args[2].equalsIgnoreCase("t") || args[2].equalsIgnoreCase("track")) {
- qPlayer.getQuestProgressFile().trackQuest(quest);
+ qPlayer.trackQuest(quest);
} else {
sender.sendMessage(Messages.COMMAND_SUB_DOESNTEXIST.getMessage().replace("{sub}", args[2]));
}
@@ -428,7 +428,7 @@ public class CommandQuests implements TabExecutor {
}
List<Quest> validQuests = new ArrayList<>();
for (Quest quest : plugin.getQuestManager().getQuests().values()) {
- if (qPlayer.getQuestProgressFile().canStartQuest(quest) == QuestStartResult.QUEST_SUCCESS) {
+ if (qPlayer.canStartQuest(quest) == QuestStartResult.QUEST_SUCCESS) {
validQuests.add(quest);
}
}
@@ -438,7 +438,7 @@ public class CommandQuests implements TabExecutor {
return true;
}
int random = ThreadLocalRandom.current().nextInt(0, validQuests.size());
- qPlayer.getQuestProgressFile().startQuest(validQuests.get(random));
+ qPlayer.startQuest(validQuests.get(random));
return true;
} else if (sender instanceof Player && (args[0].equalsIgnoreCase("started"))) {
Player player = (Player) sender;
diff --git a/src/main/java/com/leonardobishop/quests/menu/CancelQMenu.java b/src/main/java/com/leonardobishop/quests/menu/CancelQMenu.java
index c1479beb..24cca210 100644
--- a/src/main/java/com/leonardobishop/quests/menu/CancelQMenu.java
+++ b/src/main/java/com/leonardobishop/quests/menu/CancelQMenu.java
@@ -55,7 +55,7 @@ public class CancelQMenu implements QMenu {
inventory.setItem(10, no);
inventory.setItem(11, no);
inventory.setItem(12, no);
- inventory.setItem(13, quest.getDisplayItem().toItemStack(quest, owner.getQuestProgressFile(), owner.getQuestProgressFile().getQuestProgress(quest)));
+ inventory.setItem(13, quest.getDisplayItem().toItemStack(quest, owner, owner.getQuestProgressFile().getQuestProgress(quest)));
inventory.setItem(14, yes);
inventory.setItem(15, yes);
inventory.setItem(16, yes);
@@ -66,9 +66,9 @@ public class CancelQMenu implements QMenu {
@Override
public void handleClick(InventoryClickEvent event, MenuController controller) {
if (event.getSlot() == 10 || event.getSlot() == 11 || event.getSlot() == 12) {
- controller.openMenu(event.getWhoClicked(), this.getSuperMenu(), 1);
+ controller.openMenu(event.getWhoClicked(), superMenu, 1);
} else if (event.getSlot() == 14 || event.getSlot() == 15 || event.getSlot() == 16) {
- if (this.getOwner().getQuestProgressFile().cancelQuest(this.getQuest())) {
+ if (owner.cancelQuest(quest)) {
event.getWhoClicked().closeInventory();
}
}
diff --git a/src/main/java/com/leonardobishop/quests/menu/CategoryQMenu.java b/src/main/java/com/leonardobishop/quests/menu/CategoryQMenu.java
index 8a56c044..e389d9fa 100644
--- a/src/main/java/com/leonardobishop/quests/menu/CategoryQMenu.java
+++ b/src/main/java/com/leonardobishop/quests/menu/CategoryQMenu.java
@@ -56,11 +56,11 @@ public class CategoryQMenu implements QMenu {
for (QuestQMenu questQMenu : menuQuests) {
while (menuElements.containsKey(slot)) slot++;
if (Options.GUI_HIDE_CATEGORIES_NOPERMISSION.getBooleanValue() && plugin.getQuestManager().getCategoryById(questQMenu.getCategoryName()).isPermissionRequired()) {
- if (!Bukkit.getPlayer(owner.getUuid()).hasPermission("quests.category." + questQMenu.getCategoryName())) {
+ if (!Bukkit.getPlayer(owner.getPlayerUUID()).hasPermission("quests.category." + questQMenu.getCategoryName())) {
continue;
}
}
- menuElements.put(slot, new CategoryMenuElement(plugin, owner.getUuid(), questQMenu));
+ menuElements.put(slot, new CategoryMenuElement(plugin, owner.getPlayerUUID(), questQMenu));
slot++;
}
@@ -100,10 +100,10 @@ public class CategoryQMenu implements QMenu {
pageplaceholders.put("{prevpage}", String.valueOf(page - 1));
pageplaceholders.put("{nextpage}", String.valueOf(page + 1));
pageplaceholders.put("{page}", String.valueOf(page));
- pageIs = MenuUtil.applyPlaceholders(plugin, owner.getUuid(), Items.PAGE_DESCRIPTION.getItem(), pageplaceholders);
+ pageIs = MenuUtil.applyPlaceholders(plugin, owner.getPlayerUUID(), Items.PAGE_DESCRIPTION.getItem(), pageplaceholders);
pageIs.setAmount(Math.min(page, 64));
- pagePrevIs = MenuUtil.applyPlaceholders(plugin, owner.getUuid(), Items.PAGE_PREV.getItem(), pageplaceholders);
- pageNextIs = MenuUtil.applyPlaceholders(plugin, owner.getUuid(), Items.PAGE_NEXT.getItem(), pageplaceholders);
+ pagePrevIs = MenuUtil.applyPlaceholders(plugin, owner.getPlayerUUID(), Items.PAGE_PREV.getItem(), pageplaceholders);
+ pageNextIs = MenuUtil.applyPlaceholders(plugin, owner.getPlayerUUID(), Items.PAGE_NEXT.getItem(), pageplaceholders);
if (maxElement > pageSize) {
inventory.setItem(49, pageIs);
diff --git a/src/main/java/com/leonardobishop/quests/menu/MenuUtil.java b/src/main/java/com/leonardobishop/quests/menu/MenuUtil.java
index c3f1a94f..a0b230e3 100644
--- a/src/main/java/com/leonardobishop/quests/menu/MenuUtil.java
+++ b/src/main/java/com/leonardobishop/quests/menu/MenuUtil.java
@@ -50,20 +50,20 @@ public class MenuUtil {
}
public static void handleMiddleClick(QMenu menu, Quest quest, Player player, MenuController controller) {
- if (menu.getOwner().getQuestProgressFile().hasStartedQuest(quest)) {
- String tracked = menu.getOwner().getQuestProgressFile().getPlayerPreferences().getTrackedQuestId();
+ if (menu.getOwner().hasStartedQuest(quest)) {
+ String tracked = menu.getOwner().getPlayerPreferences().getTrackedQuestId();
if (quest.getId().equals(tracked)) {
- menu.getOwner().getQuestProgressFile().trackQuest(null);
+ menu.getOwner().trackQuest(null);
} else {
- menu.getOwner().getQuestProgressFile().trackQuest(quest);
+ menu.getOwner().trackQuest(quest);
}
player.closeInventory();
}
}
public static void handleRightClick(QMenu menu, Quest quest, Player player, MenuController controller) {
- if (menu.getOwner().getQuestProgressFile().hasStartedQuest(quest)) {
+ if (menu.getOwner().hasStartedQuest(quest)) {
if (Options.QUEST_AUTOSTART.getBooleanValue()) return;
CancelQMenu cancelQMenu = new CancelQMenu(menu.getOwner(), menu, quest);
controller.openMenu(player, cancelQMenu, 1);
diff --git a/src/main/java/com/leonardobishop/quests/menu/QItemStack.java b/src/main/java/com/leonardobishop/quests/menu/QItemStack.java
index e2a918dc..c7a3d530 100644
--- a/src/main/java/com/leonardobishop/quests/menu/QItemStack.java
+++ b/src/main/java/com/leonardobishop/quests/menu/QItemStack.java
@@ -1,6 +1,7 @@
package com.leonardobishop.quests.menu;
import com.leonardobishop.quests.Quests;
+import com.leonardobishop.quests.player.QPlayer;
import com.leonardobishop.quests.player.questprogressfile.QuestProgress;
import com.leonardobishop.quests.player.questprogressfile.QuestProgressFile;
import com.leonardobishop.quests.quests.Quest;
@@ -76,7 +77,7 @@ public class QItemStack {
}
@SuppressWarnings("deprecation")
- public ItemStack toItemStack(Quest quest, QuestProgressFile questProgressFile, QuestProgress questProgress) {
+ public ItemStack toItemStack(Quest quest, QPlayer qPlayer, QuestProgress questProgress) {
ItemStack is = new ItemStack(startingItemStack);
ItemMeta ism = is.getItemMeta();
ism.setDisplayName(name);
@@ -90,9 +91,9 @@ public class QItemStack {
tempLore.addAll(globalLoreAppendNormal);
}
- Player player = Bukkit.getPlayer(questProgressFile.getPlayerUUID());
- if (questProgressFile.hasStartedQuest(quest)) {
- boolean tracked = quest.getId().equals(questProgressFile.getPlayerPreferences().getTrackedQuestId());
+ Player player = Bukkit.getPlayer(qPlayer.getPlayerUUID());
+ if (qPlayer.hasStartedQuest(quest)) {
+ boolean tracked = quest.getId().equals(qPlayer.getPlayerPreferences().getTrackedQuestId());
if (!Options.GLOBAL_QUEST_DISPLAY_CONFIGURATION_OVERRIDE.getBooleanValue() || globalLoreAppendStarted.isEmpty()) {
tempLore.addAll(loreStarted);
}
diff --git a/src/main/java/com/leonardobishop/quests/menu/QuestQMenu.java b/src/main/java/com/leonardobishop/quests/menu/QuestQMenu.java
index 0499174c..bfc78617 100644
--- a/src/main/java/com/leonardobishop/quests/menu/QuestQMenu.java
+++ b/src/main/java/com/leonardobishop/quests/menu/QuestQMenu.java
@@ -85,7 +85,7 @@ public class QuestQMenu implements QMenu {
}
}
if (Options.GUI_HIDE_QUESTS_NOPERMISSION.getBooleanValue() && quest.isPermissionRequired()) {
- if (!Bukkit.getPlayer(owner.getUuid()).hasPermission("quests.quest." + quest.getId())) {
+ if (!Bukkit.getPlayer(owner.getPlayerUUID()).hasPermission("quests.quest." + quest.getId())) {
continue;
}
}
@@ -207,7 +207,7 @@ public class QuestQMenu implements QMenu {
controller.openMenu(event.getWhoClicked(), this, currentPage + 1);
} else if (Options.CATEGORIES_ENABLED.getBooleanValue() && backButtonLocation == event.getSlot()) {
- controller.openMenu(event.getWhoClicked(), this.getSuperMenu(), 1);
+ controller.openMenu(event.getWhoClicked(), superMenu, 1);
} else if (event.getSlot() < pageSize && menuElements.containsKey(event.getSlot() + (((currentPage) - 1) * pageSize))) {
MenuElement menuElement = menuElements.get(event.getSlot() + ((currentPage - 1) * pageSize));
@@ -216,14 +216,14 @@ public class QuestQMenu implements QMenu {
Quest quest = plugin.getQuestManager().getQuestById(questMenuElement.getQuestId());
if (event.getClick() == ClickType.LEFT) {
if (Options.QUEST_AUTOSTART.getBooleanValue()) return;
- if (this.getOwner().getQuestProgressFile().startQuest(quest) == QuestStartResult.QUEST_SUCCESS) {
+ if (owner.startQuest(quest) == QuestStartResult.QUEST_SUCCESS) {
event.getWhoClicked().closeInventory(); //TODO Option to keep the menu open
}
} else if (event.getClick() == ClickType.MIDDLE && Options.ALLOW_QUEST_TRACK.getBooleanValue()) {
- MenuUtil.handleMiddleClick(this, quest, Bukkit.getPlayer(owner.getUuid()), controller);
+ MenuUtil.handleMiddleClick(this, quest, Bukkit.getPlayer(owner.getPlayerUUID()), controller);
} else if (event.getClick() == ClickType.RIGHT && Options.ALLOW_QUEST_CANCEL.getBooleanValue()
- && this.getOwner().getQuestProgressFile().hasStartedQuest(quest)) {
- MenuUtil.handleRightClick(this, quest, Bukkit.getPlayer(owner.getUuid()), controller);
+ && owner.hasStartedQuest(quest)) {
+ MenuUtil.handleRightClick(this, quest, Bukkit.getPlayer(owner.getPlayerUUID()), controller);
}
}
}
@@ -254,7 +254,7 @@ public class QuestQMenu implements QMenu {
List<String> lore = newItemStack.getItemMeta().getLore();
List<String> newLore = new ArrayList<>();
ItemMeta ism = newItemStack.getItemMeta();
- Player player = Bukkit.getPlayer(owner.getUuid());
+ Player player = Bukkit.getPlayer(owner.getPlayerUUID());
if (lore != null) {
for (String s : lore) {
for (Map.Entry<String, String> entry : placeholders.entrySet()) {
diff --git a/src/main/java/com/leonardobishop/quests/menu/StartedQMenu.java b/src/main/java/com/leonardobishop/quests/menu/StartedQMenu.java
index 4bb06bfe..0d1f03ea 100644
--- a/src/main/java/com/leonardobishop/quests/menu/StartedQMenu.java
+++ b/src/main/java/com/leonardobishop/quests/menu/StartedQMenu.java
@@ -41,7 +41,7 @@ public class StartedQMenu implements QMenu {
Collections.sort(quests);
int slot = 0;
for (QuestSortWrapper quest : quests) {
- if (owner.getQuestProgressFile().hasStartedQuest(quest.getQuest())) {
+ if (owner.hasStartedQuest(quest.getQuest())) {
slotsToQuestIds.put(slot, quest.getQuest().getId());
slot++;
}
@@ -93,8 +93,8 @@ public class StartedQMenu implements QMenu {
Quest quest = plugin.getQuestManager().getQuestById(slotsToQuestIds.get(pointer));
QuestProgress questProgress = owner.getQuestProgressFile().getQuestProgress(quest);
- inventory.setItem(invSlot, MenuUtil.applyPlaceholders(plugin, owner.getUuid(), plugin.getQuestManager().getQuestById(
- quest.getId()).getDisplayItem().toItemStack(quest, owner.getQuestProgressFile(), questProgress)));
+ inventory.setItem(invSlot, MenuUtil.applyPlaceholders(plugin, owner.getPlayerUUID(), plugin.getQuestManager().getQuestById(
+ quest.getId()).getDisplayItem().toItemStack(quest, owner, questProgress)));
}
invSlot++;
}
@@ -109,10 +109,10 @@ public class StartedQMenu implements QMenu {
pageplaceholders.put("{prevpage}", String.valueOf(page - 1));
pageplaceholders.put("{nextpage}", String.valueOf(page + 1));
pageplaceholders.put("{page}", String.valueOf(page));
- pageIs = MenuUtil.applyPlaceholders(plugin, owner.getUuid(), Items.PAGE_DESCRIPTION.getItem(), pageplaceholders);
+ pageIs = MenuUtil.applyPlaceholders(plugin, owner.getPlayerUUID(), Items.PAGE_DESCRIPTION.getItem(), pageplaceholders);
pageIs.setAmount(Math.min(page, 64));
- pagePrevIs = MenuUtil.applyPlaceholders(plugin, owner.getUuid(), Items.PAGE_PREV.getItem(), pageplaceholders);
- pageNextIs = MenuUtil.applyPlaceholders(plugin, owner.getUuid(), Items.PAGE_NEXT.getItem(), pageplaceholders);
+ pagePrevIs = MenuUtil.applyPlaceholders(plugin, owner.getPlayerUUID(), Items.PAGE_PREV.getItem(), pageplaceholders);
+ pageNextIs = MenuUtil.applyPlaceholders(plugin, owner.getPlayerUUID(), Items.PAGE_NEXT.getItem(), pageplaceholders);
if (slotsToQuestIds.size() > pageSize) {
inventory.setItem(49, pageIs);
@@ -163,10 +163,10 @@ public class StartedQMenu implements QMenu {
String questid = slotsToQuestIds.get(event.getSlot() + (((currentPage) - 1) * pageSize));
Quest quest = plugin.getQuestManager().getQuestById(questid);
if (event.getClick() == ClickType.MIDDLE && Options.ALLOW_QUEST_TRACK.getBooleanValue()) {
- MenuUtil.handleMiddleClick(this, quest, Bukkit.getPlayer(owner.getUuid()), controller);
+ MenuUtil.handleMiddleClick(this, quest, Bukkit.getPlayer(owner.getPlayerUUID()), controller);
} else if (event.getClick() == ClickType.RIGHT && Options.ALLOW_QUEST_CANCEL.getBooleanValue()
- && owner.getQuestProgressFile().hasStartedQuest(quest)) {
- MenuUtil.handleRightClick(this, quest, Bukkit.getPlayer(owner.getUuid()), controller);
+ && owner.hasStartedQuest(quest)) {
+ MenuUtil.handleRightClick(this, quest, Bukkit.getPlayer(owner.getPlayerUUID()), controller);
}
}
}
diff --git a/src/main/java/com/leonardobishop/quests/menu/element/QuestMenuElement.java b/src/main/java/com/leonardobishop/quests/menu/element/QuestMenuElement.java
index e1cd6c22..b9d1b597 100644
--- a/src/main/java/com/leonardobishop/quests/menu/element/QuestMenuElement.java
+++ b/src/main/java/com/leonardobishop/quests/menu/element/QuestMenuElement.java
@@ -58,7 +58,7 @@ public class QuestMenuElement extends MenuElement {
placeholders.put("{quest}", quest.getDisplayNameStripped());
ItemStack is = replaceItemStack(Items.QUEST_COMPLETED.getItem(), placeholders);
return is;
- } else if (quest.isPermissionRequired() && !Bukkit.getPlayer(owner.getUuid()).hasPermission("quests.quest." + quest.getId())) {
+ } else if (quest.isPermissionRequired() && !Bukkit.getPlayer(owner.getPlayerUUID()).hasPermission("quests.quest." + quest.getId())) {
Map<String, String> placeholders = new HashMap<>();
placeholders.put("{quest}", quest.getDisplayNameStripped());
ItemStack is = replaceItemStack(Items.QUEST_PERMISSION.getItem(), placeholders);
@@ -70,7 +70,7 @@ public class QuestMenuElement extends MenuElement {
ItemStack is = replaceItemStack(Items.QUEST_COOLDOWN.getItem(), placeholders);
return is;
} else {
- return replaceItemStack(quest.getDisplayItem().toItemStack(quest, owner.getQuestProgressFile(), questProgress));
+ return replaceItemStack(quest.getDisplayItem().toItemStack(quest, owner, questProgress));
}
}
@@ -83,7 +83,7 @@ public class QuestMenuElement extends MenuElement {
List<String> lore = newItemStack.getItemMeta().getLore();
List<String> newLore = new ArrayList<>();
ItemMeta ism = newItemStack.getItemMeta();
- Player player = Bukkit.getPlayer(owner.getUuid());
+ Player player = Bukkit.getPlayer(owner.getPlayerUUID());
if (lore != null) {
for (String s : lore) {
for (Map.Entry<String, String> entry : placeholders.entrySet()) {
diff --git a/src/main/java/com/leonardobishop/quests/player/QPlayer.java b/src/main/java/com/leonardobishop/quests/player/QPlayer.java
index 9b4807e9..2120c55c 100644
--- a/src/main/java/com/leonardobishop/quests/player/QPlayer.java
+++ b/src/main/java/com/leonardobishop/quests/player/QPlayer.java
@@ -1,39 +1,325 @@
package com.leonardobishop.quests.player;
import com.leonardobishop.quests.Quests;
+import com.leonardobishop.quests.api.QuestsAPI;
+import com.leonardobishop.quests.api.enums.QuestStartResult;
+import com.leonardobishop.quests.api.events.PlayerCancelQuestEvent;
+import com.leonardobishop.quests.api.events.PlayerFinishQuestEvent;
+import com.leonardobishop.quests.api.events.PlayerStartQuestEvent;
+import com.leonardobishop.quests.api.events.PlayerStartTrackQuestEvent;
+import com.leonardobishop.quests.api.events.PlayerStopTrackQuestEvent;
+import com.leonardobishop.quests.api.events.PreStartQuestEvent;
import com.leonardobishop.quests.menu.CategoryQMenu;
import com.leonardobishop.quests.menu.QuestQMenu;
import com.leonardobishop.quests.menu.QuestSortWrapper;
import com.leonardobishop.quests.menu.StartedQMenu;
+import com.leonardobishop.quests.player.questprogressfile.QPlayerPreferences;
+import com.leonardobishop.quests.player.questprogressfile.QuestProgress;
import com.leonardobishop.quests.player.questprogressfile.QuestProgressFile;
+import com.leonardobishop.quests.player.questprogressfile.TaskProgress;
import com.leonardobishop.quests.quests.Category;
import com.leonardobishop.quests.quests.Quest;
+import com.leonardobishop.quests.quests.Task;
+import com.leonardobishop.quests.util.Messages;
import com.leonardobishop.quests.util.Options;
import org.bukkit.Bukkit;
+import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.UUID;
+import java.util.concurrent.TimeUnit;
+/**
+ * Represents a player.
+ */
public class QPlayer {
private final UUID uuid;
+ private final QPlayerPreferences playerPreferences;
private final QuestProgressFile questProgressFile;
private final Quests plugin;
- public QPlayer(UUID uuid, QuestProgressFile questProgressFile, Quests plugin) {
+ public QPlayer(UUID uuid, QuestProgressFile questProgressFile, QPlayerPreferences playerPreferences, Quests plugin) {
this.uuid = uuid;
+ this.playerPreferences = playerPreferences;
this.questProgressFile = questProgressFile;
this.plugin = plugin;
}
- public UUID getUuid() {
+ public UUID getPlayerUUID() {
return this.uuid;
}
/**
+ * Attempt to complete a quest for the player. This will also play all effects (such as titles, messages etc.)
+ * and also dispatches all rewards for the player.
+ *
+ * Warning: rewards will not be sent and the {@link PlayerFinishQuestEvent} will not be fired if the
+ * player is not online
+ *
+ * @param quest the quest to complete
+ * @return true (always)
+ */
+ public boolean completeQuest(Quest quest) {
+ QuestProgress questProgress = questProgressFile.getQuestProgress(quest);
+ questProgress.setStarted(false);
+ for (TaskProgress taskProgress : questProgress.getTaskProgress()) {
+ taskProgress.setCompleted(false);
+ taskProgress.setProgress(null);
+ }
+ questProgress.setCompleted(true);
+ questProgress.setCompletedBefore(true);
+ questProgress.setCompletionDate(System.currentTimeMillis());
+ if (Options.ALLOW_QUEST_TRACK.getBooleanValue() && Options.QUEST_AUTOTRACK.getBooleanValue() && !(quest.isRepeatable() && !quest.isCooldownEnabled())) {
+ trackQuest(null);
+ }
+ Player player = Bukkit.getPlayer(uuid);
+ if (player != null) {
+ QPlayer questPlayer = QuestsAPI.getPlayerManager().getPlayer(uuid);
+ String questFinishMessage = Messages.QUEST_COMPLETE.getMessage().replace("{quest}", quest.getDisplayNameStripped());
+ // PlayerFinishQuestEvent -- start
+ PlayerFinishQuestEvent questFinishEvent = new PlayerFinishQuestEvent(player, questPlayer, questProgress, questFinishMessage);
+ Bukkit.getPluginManager().callEvent(questFinishEvent);
+ // PlayerFinishQuestEvent -- end
+ Bukkit.getServer().getScheduler().runTask(plugin, () -> {
+ for (String s : quest.getRewards()) {
+ Bukkit.getServer().dispatchCommand(Bukkit.getConsoleSender(), s.replace("{player}", player.getName())); //TODO PlaceholderAPI support
+ }
+ });
+ if (questFinishEvent.getQuestFinishMessage() != null)
+ player.sendMessage(questFinishEvent.getQuestFinishMessage());
+ if (Options.TITLES_ENABLED.getBooleanValue()) {
+ plugin.getTitleHandle().sendTitle(player, Messages.TITLE_QUEST_COMPLETE_TITLE.getMessage().replace("{quest}", quest
+ .getDisplayNameStripped()), Messages.TITLE_QUEST_COMPLETE_SUBTITLE.getMessage().replace("{quest}", quest
+ .getDisplayNameStripped()));
+ }
+ for (String s : quest.getRewardString()) {
+ player.sendMessage(ChatColor.translateAlternateColorCodes('&', s));
+ }
+ }
+ return true;
+ }
+
+ /**
+ * Attempt to track a quest for the player. This will also play all effects (such as titles, messages etc.)
+ *
+ * Warning: {@link PlayerStopTrackQuestEvent} is not fired if the player is not online
+ *
+ * @param quest the quest to track
+ */
+ public void trackQuest(Quest quest) {
+ Player player = Bukkit.getPlayer(uuid);
+ if (quest == null) {
+ String currentTrackedQuestId = playerPreferences.getTrackedQuestId();
+ playerPreferences.setTrackedQuestId(null);
+ if (player != null) {
+ Bukkit.getPluginManager().callEvent(new PlayerStopTrackQuestEvent(player, this));
+ Quest currentTrackedQuest;
+ if (currentTrackedQuestId != null && (currentTrackedQuest = plugin.getQuestManager().getQuestById(currentTrackedQuestId)) != null) {
+ player.sendMessage(Messages.QUEST_TRACK_STOP.getMessage().replace("{quest}", currentTrackedQuest.getDisplayNameStripped()));
+ }
+ }
+ } else if (hasStartedQuest(quest)) {
+ playerPreferences.setTrackedQuestId(quest.getId());
+ if (player != null) {
+ Bukkit.getPluginManager().callEvent(new PlayerStartTrackQuestEvent(player, this));
+ player.sendMessage(Messages.QUEST_TRACK.getMessage().replace("{quest}", quest.getDisplayNameStripped()));
+ }
+ }
+ }
+
+ /**
+ * Gets whether or not the player has started a specific quest.
+ *
+ * @param quest the quest to test for
+ * @return true if the quest is started or quest autostart is enabled and the quest is ready to start, false otherwise
+ */
+ public boolean hasStartedQuest(Quest quest) {
+ if (Options.QUEST_AUTOSTART.getBooleanValue()) {
+ QuestStartResult response = canStartQuest(quest);
+ return response == QuestStartResult.QUEST_SUCCESS || response == QuestStartResult.QUEST_ALREADY_STARTED;
+ } else {
+ return questProgressFile.hasQuestProgress(quest) && questProgressFile.getQuestProgress(quest).isStarted();
+ }
+ }
+
+ /**
+ * Attempt to start a quest for the player. This will also play all effects (such as titles, messages etc.)
+ *
+ * Warning: will fail if the player is not online.
+ *
+ * @param quest the quest to start
+ * @return the quest start result -- {@code QuestStartResult.QUEST_SUCCESS} indicates success
+ */
+ // TODO PlaceholderAPI support
+ public QuestStartResult startQuest(Quest quest) {
+ Player player = Bukkit.getPlayer(uuid);
+ QuestStartResult code = canStartQuest(quest);
+ if (player != null) {
+ String questResultMessage = null;
+ switch (code) {
+ case QUEST_SUCCESS:
+ // This one is hacky
+ break;
+ case QUEST_LIMIT_REACHED:
+ questResultMessage = Messages.QUEST_START_LIMIT.getMessage().replace("{limit}", String.valueOf(Options.QUESTS_START_LIMIT.getIntValue()));
+ break;
+ case QUEST_ALREADY_COMPLETED:
+ questResultMessage = Messages.QUEST_START_DISABLED.getMessage();
+ break;
+ case QUEST_COOLDOWN:
+ long cooldown = questProgressFile.getCooldownFor(quest);
+ questResultMessage = Messages.QUEST_START_COOLDOWN.getMessage().replace("{time}", String.valueOf(plugin.convertToFormat(TimeUnit.SECONDS.convert
+ (cooldown, TimeUnit.MILLISECONDS))));
+ break;
+ case QUEST_LOCKED:
+ questResultMessage = Messages.QUEST_START_LOCKED.getMessage();
+ break;
+ case QUEST_ALREADY_STARTED:
+ questResultMessage = Messages.QUEST_START_STARTED.getMessage();
+ break;
+ case QUEST_NO_PERMISSION:
+ questResultMessage = Messages.QUEST_START_PERMISSION.getMessage();
+ break;
+ case NO_PERMISSION_FOR_CATEGORY:
+ questResultMessage = Messages.QUEST_CATEGORY_QUEST_PERMISSION.getMessage();
+ break;
+ }
+ // PreStartQuestEvent -- start
+ PreStartQuestEvent preStartQuestEvent = new PreStartQuestEvent(player, this, questResultMessage, code);
+ Bukkit.getPluginManager().callEvent(preStartQuestEvent);
+ // PreStartQuestEvent -- end
+ if (preStartQuestEvent.getQuestResultMessage() != null && code != QuestStartResult.QUEST_SUCCESS)
+ player.sendMessage(preStartQuestEvent.getQuestResultMessage());
+ }
+ if (code == QuestStartResult.QUEST_SUCCESS) {
+ QuestProgress questProgress = questProgressFile.getQuestProgress(quest);
+ questProgress.setStarted(true);
+ for (TaskProgress taskProgress : questProgress.getTaskProgress()) {
+ taskProgress.setCompleted(false);
+ taskProgress.setProgress(null);
+ }
+ if (Options.ALLOW_QUEST_TRACK.getBooleanValue() && Options.QUEST_AUTOTRACK.getBooleanValue()) {
+ trackQuest(quest);
+ }
+ questProgress.setCompleted(false);
+ if (player != null) {
+ String questStartMessage = Messages.QUEST_START.getMessage().replace("{quest}", quest.getDisplayNameStripped());
+ // PlayerStartQuestEvent -- start
+ PlayerStartQuestEvent questStartEvent = new PlayerStartQuestEvent(player, this, questProgress, questStartMessage);
+ Bukkit.getPluginManager().callEvent(questStartEvent);
+ // PlayerStartQuestEvent -- end
+ if (questStartEvent.getQuestStartMessage() != null)
+ player.sendMessage(questStartEvent.getQuestStartMessage()); //Don't send a message if the event message is null
+ if (Options.TITLES_ENABLED.getBooleanValue()) {
+ plugin.getTitleHandle().sendTitle(player, Messages.TITLE_QUEST_START_TITLE.getMessage().replace("{quest}", quest
+ .getDisplayNameStripped()), Messages.TITLE_QUEST_START_SUBTITLE.getMessage().replace("{quest}", quest
+ .getDisplayNameStripped()));
+ }
+ for (String s : quest.getStartString()) {
+ player.sendMessage(ChatColor.translateAlternateColorCodes('&', s));
+ }
+ }
+ for (Task task : quest.getTasks()) {
+ try {
+ plugin.getTaskTypeManager().getTaskType(task.getType()).onStart(quest, task, uuid);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ }
+ return code;
+ }
+
+ /**
+ * Attempt to cancel a quest for the player. This will also play all effects (such as titles, messages etc.)
+ *
+ * @param quest the quest to start
+ * @return true if the quest was cancelled, false otherwise
+ */
+ public boolean cancelQuest(Quest quest) {
+ QuestProgress questProgress = questProgressFile.getQuestProgress(quest);
+ Player player = Bukkit.getPlayer(uuid);
+ if (!questProgress.isStarted()) {
+ if (player != null) {
+ player.sendMessage(Messages.QUEST_CANCEL_NOTSTARTED.getMessage());
+ }
+ return false;
+ }
+ questProgress.setStarted(false);
+ for (TaskProgress taskProgress : questProgress.getTaskProgress()) {
+ taskProgress.setProgress(null);
+ }
+ if (player != null) {
+ String questCancelMessage = Messages.QUEST_CANCEL.getMessage().replace("{quest}", quest.getDisplayNameStripped());
+ // PlayerCancelQuestEvent -- start
+ PlayerCancelQuestEvent questCancelEvent = new PlayerCancelQuestEvent(player, this, questProgress, questCancelMessage);
+ Bukkit.getPluginManager().callEvent(questCancelEvent);
+ // PlayerCancelQuestEvent -- end
+ if (questCancelEvent.getQuestCancelMessage() != null)
+ player.sendMessage(questCancelEvent.getQuestCancelMessage());
+ }
+ return true;
+ }
+
+ /**
+ * Check if the player can start a quest.
+ *
+ * Warning: will fail if the player is not online.
+ *
+ * @param quest the quest to check
+ * @return the quest start result
+ */
+ public QuestStartResult canStartQuest(Quest quest) {
+ Player p = Bukkit.getPlayer(uuid);
+ if (questProgressFile.getStartedQuests().size() >= Options.QUESTS_START_LIMIT.getIntValue() && !Options.QUEST_AUTOSTART.getBooleanValue()) {
+ return QuestStartResult.QUEST_LIMIT_REACHED;
+ }
+ QuestProgress questProgress = questProgressFile.getQuestProgress(quest);
+ if (!quest.isRepeatable() && questProgress.isCompletedBefore()) {
+ //if (playerUUID != null) {
+ // ???
+ //}
+ return QuestStartResult.QUEST_ALREADY_COMPLETED;
+ }
+ long cooldown = questProgressFile.getCooldownFor(quest);
+ if (cooldown > 0) {
+ return QuestStartResult.QUEST_COOLDOWN;
+ }
+ if (!questProgressFile.hasMetRequirements(quest)) {
+ return QuestStartResult.QUEST_LOCKED;
+ }
+ if (questProgress.isStarted()) {
+ return QuestStartResult.QUEST_ALREADY_STARTED;
+ }
+ if (quest.isPermissionRequired()) {
+ if (p != null) {
+ if (!p.hasPermission("quests.quest." + quest.getId())) {
+ return QuestStartResult.QUEST_NO_PERMISSION;
+ }
+ } else {
+ return QuestStartResult.QUEST_NO_PERMISSION;
+ }
+ }
+ if (quest.getCategoryId() != null && plugin.getQuestManager().getCategoryById(quest.getCategoryId()) != null && plugin.getQuestManager()
+ .getCategoryById(quest.getCategoryId()).isPermissionRequired()) {
+ if (p != null) {
+ if (!p.hasPermission("quests.category." + quest.getCategoryId())) {
+ return QuestStartResult.NO_PERMISSION_FOR_CATEGORY;
+ }
+ } else {
+ return QuestStartResult.NO_PERMISSION_FOR_CATEGORY;
+ }
+ }
+ return QuestStartResult.QUEST_SUCCESS;
+ }
+
+ /**
+ * Opens a category menu for the player.
+ *
* @return 0 if success, 1 if no permission, 2 is only data loaded, 3 if player not found
*/
public int openCategory(Category category, CategoryQMenu superMenu, boolean backButton) {
@@ -61,6 +347,8 @@ public class QPlayer {
}
/**
+ * Opens a category menu for the player.
+ *
* @return 0 if success, 1 if no permission, 2 is only data loaded, 3 if player not found
*/
public int openCategory(Category category, QuestQMenu questQMenu) {
@@ -140,15 +428,15 @@ public class QPlayer {
return questProgressFile;
}
- public QuestProgressFile setQuestProgressFile() {
- return questProgressFile;
+ public QPlayerPreferences getPlayerPreferences() {
+ return playerPreferences;
}
@Override //Used by java GC
public boolean equals(Object o) {
if (!(o instanceof QPlayer)) return false;
QPlayer qPlayer = (QPlayer) o;
- return this.uuid == qPlayer.getUuid();
+ return this.uuid == qPlayer.getPlayerUUID();
}
@Override //Used by java GC
diff --git a/src/main/java/com/leonardobishop/quests/player/QPlayerManager.java b/src/main/java/com/leonardobishop/quests/player/QPlayerManager.java
index bc79651e..3801b2df 100644
--- a/src/main/java/com/leonardobishop/quests/player/QPlayerManager.java
+++ b/src/main/java/com/leonardobishop/quests/player/QPlayerManager.java
@@ -82,7 +82,7 @@ public class QPlayerManager {
public void loadPlayer(UUID uuid) {
plugin.getQuestsLogger().debug("Loading player " + uuid + " from disk. Main thread: " + Bukkit.isPrimaryThread());
qPlayers.computeIfAbsent(uuid, s -> {
- QuestProgressFile questProgressFile = new QuestProgressFile(uuid, new QPlayerPreferences(null), plugin);
+ QuestProgressFile questProgressFile = new QuestProgressFile(uuid, plugin);
try {
File directory = new File(plugin.getDataFolder() + File.separator + "playerdata");
@@ -123,7 +123,7 @@ public class QPlayerManager {
// fuck
}
- return new QPlayer(uuid, questProgressFile, plugin);
+ return new QPlayer(uuid, questProgressFile, new QPlayerPreferences(null), plugin);
});
// else {
// plugin.getQuestsLogger().debug("Player " + uuid + " is already loaded.");
diff --git a/src/main/java/com/leonardobishop/quests/player/questprogressfile/QuestProgressFile.java b/src/main/java/com/leonardobishop/quests/player/questprogressfile/QuestProgressFile.java
index 137d83f9..9cc7609e 100644
--- a/src/main/java/com/leonardobishop/quests/player/questprogressfile/QuestProgressFile.java
+++ b/src/main/java/com/leonardobishop/quests/player/questprogressfile/QuestProgressFile.java
@@ -29,271 +29,20 @@ import java.util.Map;
import java.util.UUID;
import java.util.concurrent.TimeUnit;
+/**
+ * Represents underlying quest progress for a player.
+ */
public class QuestProgressFile {
private final Map<String, QuestProgress> questProgress = new HashMap<>();
- private final QPlayerPreferences playerPreferences;
private final UUID playerUUID;
private final Quests plugin;
- public QuestProgressFile(UUID playerUUID, QPlayerPreferences playerPreferences, Quests plugin) {
+ public QuestProgressFile(UUID playerUUID, Quests plugin) {
this.playerUUID = playerUUID;
- this.playerPreferences = playerPreferences;
this.plugin = plugin;
}
- /**
- * Attempt to complete a quest for the player. This will also play all effects (such as titles, messages etc.)
- * and also dispatches all rewards for the player.
- *
- * Warning: rewards will not be sent and the {@link PlayerFinishQuestEvent} will not be fired if the
- * player is not online
- *
- * @param quest the quest to complete
- * @return true (always)
- */
- public boolean completeQuest(Quest quest) {
- QuestProgress questProgress = getQuestProgress(quest);
- questProgress.setStarted(false);
- for (TaskProgress taskProgress : questProgress.getTaskProgress()) {
- taskProgress.setCompleted(false);
- taskProgress.setProgress(null);
- }
- questProgress.setCompleted(true);
- questProgress.setCompletedBefore(true);
- questProgress.setCompletionDate(System.currentTimeMillis());
- if (Options.ALLOW_QUEST_TRACK.getBooleanValue() && Options.QUEST_AUTOTRACK.getBooleanValue() && !(quest.isRepeatable() && !quest.isCooldownEnabled())) {
- trackQuest(null);
- }
- Player player = Bukkit.getPlayer(this.playerUUID);
- if (player != null) {
- QPlayer questPlayer = QuestsAPI.getPlayerManager().getPlayer(this.playerUUID);
- String questFinishMessage = Messages.QUEST_COMPLETE.getMessage().replace("{quest}", quest.getDisplayNameStripped());
- // PlayerFinishQuestEvent -- start
- PlayerFinishQuestEvent questFinishEvent = new PlayerFinishQuestEvent(player, questPlayer, questProgress, questFinishMessage);
- Bukkit.getPluginManager().callEvent(questFinishEvent);
- // PlayerFinishQuestEvent -- end
- Bukkit.getServer().getScheduler().runTask(plugin, () -> {
- for (String s : quest.getRewards()) {
- Bukkit.getServer().dispatchCommand(Bukkit.getConsoleSender(), s.replace("{player}", player.getName())); //TODO PlaceholderAPI support
- }
- });
- if (questFinishEvent.getQuestFinishMessage() != null)
- player.sendMessage(questFinishEvent.getQuestFinishMessage());
- if (Options.TITLES_ENABLED.getBooleanValue()) {
- plugin.getTitleHandle().sendTitle(player, Messages.TITLE_QUEST_COMPLETE_TITLE.getMessage().replace("{quest}", quest
- .getDisplayNameStripped()), Messages.TITLE_QUEST_COMPLETE_SUBTITLE.getMessage().replace("{quest}", quest
- .getDisplayNameStripped()));
- }
- for (String s : quest.getRewardString()) {
- player.sendMessage(ChatColor.translateAlternateColorCodes('&', s));
- }
- }
- return true;
- }
-
- /**
- * Attempt to track a quest for the player. This will also play all effects (such as titles, messages etc.)
- *
- * Warning: {@link PlayerStopTrackQuestEvent} is not fired if the player is not online
- *
- * @param quest the quest to track
- */
- public void trackQuest(Quest quest) {
- Player player = Bukkit.getPlayer(playerUUID);
- if (quest == null) {
- String currentTrackedQuestId = playerPreferences.getTrackedQuestId();
- playerPreferences.setTrackedQuestId(null);
- if (player != null) {
- Bukkit.getPluginManager().callEvent(new PlayerStopTrackQuestEvent(player, this));
- Quest currentTrackedQuest;
- if (currentTrackedQuestId != null && (currentTrackedQuest = plugin.getQuestManager().getQuestById(currentTrackedQuestId)) != null) {
- player.sendMessage(Messages.QUEST_TRACK_STOP.getMessage().replace("{quest}", currentTrackedQuest.getDisplayNameStripped()));
- }
- }
- } else if (hasStartedQuest(quest)) {
- playerPreferences.setTrackedQuestId(quest.getId());
- if (player != null) {
- Bukkit.getPluginManager().callEvent(new PlayerStartTrackQuestEvent(player, this));
- player.sendMessage(Messages.QUEST_TRACK.getMessage().replace("{quest}", quest.getDisplayNameStripped()));
- }
- }
- }
-
- /**
- * Check if the player can start a quest.
- *
- * Warning: will fail if the player is not online.
- *
- * @param quest the quest to check
- * @return the quest start result
- */
- public QuestStartResult canStartQuest(Quest quest) {
- Player p = Bukkit.getPlayer(playerUUID);
- if (getStartedQuests().size() >= Options.QUESTS_START_LIMIT.getIntValue() && !Options.QUEST_AUTOSTART.getBooleanValue()) {
- return QuestStartResult.QUEST_LIMIT_REACHED;
- }
- QuestProgress questProgress = getQuestProgress(quest);
- if (!quest.isRepeatable() && questProgress.isCompletedBefore()) {
- //if (playerUUID != null) {
- // ???
- //}
- return QuestStartResult.QUEST_ALREADY_COMPLETED;
- }
- long cooldown = getCooldownFor(quest);
- if (cooldown > 0) {
- return QuestStartResult.QUEST_COOLDOWN;
- }
- if (!hasMetRequirements(quest)) {
- return QuestStartResult.QUEST_LOCKED;
- }
- if (questProgress.isStarted()) {
- return QuestStartResult.QUEST_ALREADY_STARTED;
- }
- if (quest.isPermissionRequired()) {
- if (playerUUID != null) {
- if (!p.hasPermission("quests.quest." + quest.getId())) {
- return QuestStartResult.QUEST_NO_PERMISSION;
- }
- } else {
- return QuestStartResult.QUEST_NO_PERMISSION;
- }
- }
- if (quest.getCategoryId() != null && plugin.getQuestManager().getCategoryById(quest.getCategoryId()) != null && plugin.getQuestManager()
- .getCategoryById(quest.getCategoryId()).isPermissionRequired()) {
- if (playerUUID != null) {
- if (!p.hasPermission("quests.category." + quest.getCategoryId())) {
- return QuestStartResult.NO_PERMISSION_FOR_CATEGORY;
- }
- } else {
- return QuestStartResult.NO_PERMISSION_FOR_CATEGORY;
- }
- }
- return QuestStartResult.QUEST_SUCCESS;
- }
-
- /**
- * Attempt to start a quest for the player. This will also play all effects (such as titles, messages etc.)
- *
- * Warning: will fail if the player is not online.
- *
- * @param quest the quest to start
- * @return the quest start result -- {@code QuestStartResult.QUEST_SUCCESS} indicates success
- */
- // TODO PlaceholderAPI support
- public QuestStartResult startQuest(Quest quest) {
- Player player = Bukkit.getPlayer(playerUUID);
- QuestStartResult code = canStartQuest(quest);
- if (player != null) {
- String questResultMessage = null;
- switch (code) {
- case QUEST_SUCCESS:
- // This one is hacky
- break;
- case QUEST_LIMIT_REACHED:
- questResultMessage = Messages.QUEST_START_LIMIT.getMessage().replace("{limit}", String.valueOf(Options.QUESTS_START_LIMIT.getIntValue()));
- break;
- case QUEST_ALREADY_COMPLETED:
- questResultMessage = Messages.QUEST_START_DISABLED.getMessage();
- break;
- case QUEST_COOLDOWN:
- long cooldown = getCooldownFor(quest);
- questResultMessage = Messages.QUEST_START_COOLDOWN.getMessage().replace("{time}", String.valueOf(plugin.convertToFormat(TimeUnit.SECONDS.convert
- (cooldown, TimeUnit.MILLISECONDS))));
- break;
- case QUEST_LOCKED:
- questResultMessage = Messages.QUEST_START_LOCKED.getMessage();
- break;
- case QUEST_ALREADY_STARTED:
- questResultMessage = Messages.QUEST_START_STARTED.getMessage();
- break;
- case QUEST_NO_PERMISSION:
- questResultMessage = Messages.QUEST_START_PERMISSION.getMessage();
- break;
- case NO_PERMISSION_FOR_CATEGORY:
- questResultMessage = Messages.QUEST_CATEGORY_QUEST_PERMISSION.getMessage();
- break;
- }
- QPlayer questPlayer = QuestsAPI.getPlayerManager().getPlayer(this.playerUUID);
- // PreStartQuestEvent -- start
- PreStartQuestEvent preStartQuestEvent = new PreStartQuestEvent(player, questPlayer, questResultMessage, code);
- Bukkit.getPluginManager().callEvent(preStartQuestEvent);
- // PreStartQuestEvent -- end
- if (preStartQuestEvent.getQuestResultMessage() != null && code != QuestStartResult.QUEST_SUCCESS)
- player.sendMessage(preStartQuestEvent.getQuestResultMessage());
- }
- if (code == QuestStartResult.QUEST_SUCCESS) {
- QuestProgress questProgress = getQuestProgress(quest);
- questProgress.setStarted(true);
- for (TaskProgress taskProgress : questProgress.getTaskProgress()) {
- taskProgress.setCompleted(false);
- taskProgress.setProgress(null);
- }
- if (Options.ALLOW_QUEST_TRACK.getBooleanValue() && Options.QUEST_AUTOTRACK.getBooleanValue()) {
- trackQuest(quest);
- }
- questProgress.setCompleted(false);
- if (player != null) {
- QPlayer questPlayer = QuestsAPI.getPlayerManager().getPlayer(this.playerUUID);
- String questStartMessage = Messages.QUEST_START.getMessage().replace("{quest}", quest.getDisplayNameStripped());
- // PlayerStartQuestEvent -- start
- PlayerStartQuestEvent questStartEvent = new PlayerStartQuestEvent(player, questPlayer, questProgress, questStartMessage);
- Bukkit.getPluginManager().callEvent(questStartEvent);
- // PlayerStartQuestEvent -- end
- if (questStartEvent.getQuestStartMessage() != null)
- player.sendMessage(questStartEvent.getQuestStartMessage()); //Don't send a message if the event message is null
- if (Options.TITLES_ENABLED.getBooleanValue()) {
- plugin.getTitleHandle().sendTitle(player, Messages.TITLE_QUEST_START_TITLE.getMessage().replace("{quest}", quest
- .getDisplayNameStripped()), Messages.TITLE_QUEST_START_SUBTITLE.getMessage().replace("{quest}", quest
- .getDisplayNameStripped()));
- }
- for (String s : quest.getStartString()) {
- player.sendMessage(ChatColor.translateAlternateColorCodes('&', s));
- }
- }
- for (Task task : quest.getTasks()) {
- try {
- plugin.getTaskTypeManager().getTaskType(task.getType()).onStart(quest, task, playerUUID);
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
- return code;
- }
-
- /**
- * Attempt to cancel a quest for the player. This will also play all effects (such as titles, messages etc.)
- *
- * @param quest the quest to start
- * @return true if the quest was cancelled, false otherwise
- */
- public boolean cancelQuest(Quest quest) {
- QuestProgress questProgress = getQuestProgress(quest);
- Player player = Bukkit.getPlayer(this.playerUUID);
- if (!questProgress.isStarted()) {
- if (player != null) {
- player.sendMessage(Messages.QUEST_CANCEL_NOTSTARTED.getMessage());
- }
- return false;
- }
- questProgress.setStarted(false);
- for (TaskProgress taskProgress : questProgress.getTaskProgress()) {
- taskProgress.setProgress(null);
- }
- if (player != null) {
- QPlayer questPlayer = QuestsAPI.getPlayerManager().getPlayer(this.playerUUID);
- String questCancelMessage = Messages.QUEST_CANCEL.getMessage().replace("{quest}", quest.getDisplayNameStripped());
- // PlayerCancelQuestEvent -- start
- PlayerCancelQuestEvent questCancelEvent = new PlayerCancelQuestEvent(player, questPlayer, questProgress, questCancelMessage);
- Bukkit.getPluginManager().callEvent(questCancelEvent);
- // PlayerCancelQuestEvent -- end
- if (questCancelEvent.getQuestCancelMessage() != null)
- player.sendMessage(questCancelEvent.getQuestCancelMessage());
- }
- return true;
- }
-
public void addQuestProgress(QuestProgress questProgress) {
this.questProgress.put(questProgress.getQuestId(), questProgress);
}
@@ -301,9 +50,9 @@ public class QuestProgressFile {
/**
* Gets all started quests.
* Note: if quest autostart is enabled then this may produce unexpected results as quests are
- * not "started" by the player if autostart is true. Consider {@link #hasStartedQuest(Quest)} instead.
+ * not "started" by the player if autostart is true. Consider {@link QPlayer#hasStartedQuest(Quest)} instead.
*
- * @return
+ * @return list of started quests
*/
public List<Quest> getStartedQuests() {
List<Quest> startedQuests = new ArrayList<>();
@@ -388,21 +137,6 @@ public class QuestProgressFile {
}
/**
- * Gets whether or not the player has started a specific quest.
- *
- * @param quest the quest to test for
- * @return true if the quest is started or quest autostart is enabled and the quest is ready to start, false otherwise
- */
- public boolean hasStartedQuest(Quest quest) {
- if (Options.QUEST_AUTOSTART.getBooleanValue()) {
- QuestStartResult response = canStartQuest(quest);
- return response == QuestStartResult.QUEST_SUCCESS || response == QuestStartResult.QUEST_ALREADY_STARTED;
- } else {
- return hasQuestProgress(quest) && getQuestProgress(quest).isStarted();
- }
- }
-
- /**
* Gets the remaining cooldown before being able to start a specific quest.
*
* @param quest the quest to test for
@@ -425,6 +159,7 @@ public class QuestProgressFile {
* @param quest the quest to test for
* @return true if they can start the quest
*/
+ //TODO possibly move this
public boolean hasMetRequirements(Quest quest) {
for (String id : quest.getRequirements()) {
Quest q = plugin.getQuestManager().getQuestById(id);
@@ -458,36 +193,25 @@ public class QuestProgressFile {
public QuestProgress getQuestProgress(Quest quest) {
if (questProgress.containsKey(quest.getId())) {
return questProgress.get(quest.getId());
- } else if (generateBlankQuestProgress(quest.getId())) {
- return getQuestProgress(quest);
}
- return null;
+ generateBlankQuestProgress(quest);
+ return getQuestProgress(quest);
}
/**
- * Generate a new blank {@link QuestProgress} for a specified {@code questid}.
- * Has no effect if there is already an existing {@link QuestProgress} for {@code questid}.
+ * Generate a new blank {@link QuestProgress} for a specified {@code quest}.
+ * Has no effect if there is already an existing {@link QuestProgress} for {@code quest}.
*
- * @param questid the quest to generate progress for
- * @return true if successful
+ * @param quest the quest to generate progress for
*/
- public boolean generateBlankQuestProgress(String questid) {
- if (plugin.getQuestManager().getQuestById(questid) != null) {
- Quest quest = plugin.getQuestManager().getQuestById(questid);
- QuestProgress questProgress = new QuestProgress(plugin, quest.getId(), false, false, 0, playerUUID, false, false);
- for (Task task : quest.getTasks()) {
- TaskProgress taskProgress = new TaskProgress(questProgress, task.getId(), null, playerUUID, false, false);
- questProgress.addTaskProgress(taskProgress);
- }
-
- addQuestProgress(questProgress);
- return true;
+ public void generateBlankQuestProgress(Quest quest) {
+ QuestProgress questProgress = new QuestProgress(plugin, quest.getId(), false, false, 0, playerUUID, false, false);
+ for (Task task : quest.getTasks()) {
+ TaskProgress taskProgress = new TaskProgress(questProgress, task.getId(), null, playerUUID, false, false);
+ questProgress.addTaskProgress(taskProgress);
}
- return false;
- }
- public QPlayerPreferences getPlayerPreferences() {
- return playerPreferences;
+ addQuestProgress(questProgress);
}
/**
diff --git a/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/BreedingTaskType.java b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/BreedingTaskType.java
index 752092a1..97b4dc78 100644
--- a/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/BreedingTaskType.java
+++ b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/BreedingTaskType.java
@@ -66,11 +66,9 @@ public final class BreedingTaskType extends TaskType {
continue;
}
- QuestProgressFile questProgressFile = qPlayer.getQuestProgressFile();
-
for (Quest quest : super.getRegisteredQuests()) {
- if (questProgressFile.hasStartedQuest(quest)) {
- QuestProgress questProgress = questProgressFile.getQuestProgress(quest);
+ if (qPlayer.hasStartedQuest(quest)) {
+ QuestProgress questProgress = qPlayer.getQuestProgressFile().getQuestProgress(quest);
for (Task task : quest.getTasksOfType(super.getType())) {
if (!TaskUtils.validateWorld(player, task)) continue;
diff --git a/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/BrewingTaskType.java b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/BrewingTaskType.java
index 6c6c366e..b43a4bd7 100644
--- a/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/BrewingTaskType.java
+++ b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/BrewingTaskType.java
@@ -75,11 +75,9 @@ public final class BrewingTaskType extends TaskType {
return;
}
- QuestProgressFile questProgressFile = qPlayer.getQuestProgressFile();
-
for (Quest quest : super.getRegisteredQuests()) {
- if (questProgressFile.hasStartedQuest(quest)) {
- QuestProgress questProgress = questProgressFile.getQuestProgress(quest);
+ if (qPlayer.hasStartedQuest(quest)) {
+ QuestProgress questProgress = qPlayer.getQuestProgressFile().getQuestProgress(quest);
for (Task task : quest.getTasksOfType(super.getType())) {
if (!TaskUtils.validateWorld(player, task)) continue;
diff --git a/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/BuildingCertainTaskType.java b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/BuildingCertainTaskType.java
index 8484d441..29a2d14c 100644
--- a/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/BuildingCertainTaskType.java
+++ b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/BuildingCertainTaskType.java
@@ -83,11 +83,13 @@ public final class BuildingCertainTaskType extends TaskType {
if (event.getPlayer().hasMetadata("NPC")) return;
QPlayer qPlayer = QuestsAPI.getPlayerManager().getPlayer(event.getPlayer().getUniqueId());
- QuestProgressFile questProgressFile = qPlayer.getQuestProgressFile();
+ if (qPlayer == null) {
+ return;
+ }
for (Quest quest : super.getRegisteredQuests()) {
- if (questProgressFile.hasStartedQuest(quest)) {
- QuestProgress questProgress = questProgressFile.getQuestProgress(quest);
+ if (qPlayer.hasStartedQuest(quest)) {
+ QuestProgress questProgress = qPlayer.getQuestProgressFile().getQuestProgress(quest);
for (Task task : quest.getTasksOfType(super.getType())) {
if (!TaskUtils.validateWorld(event.getPlayer(), task)) continue;
@@ -116,11 +118,9 @@ public final class BuildingCertainTaskType extends TaskType {
return;
}
- QuestProgressFile questProgressFile = qPlayer.getQuestProgressFile();
-
for (Quest quest : super.getRegisteredQuests()) {
- if (questProgressFile.hasStartedQuest(quest)) {
- QuestProgress questProgress = questProgressFile.getQuestProgress(quest);
+ if (qPlayer.hasStartedQuest(quest)) {
+ QuestProgress questProgress = qPlayer.getQuestProgressFile().getQuestProgress(quest);
for (Task task : quest.getTasksOfType(super.getType())) {
TaskProgress taskProgress = questProgress.getTaskProgress(task.getId());
diff --git a/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/BuildingTaskType.java b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/BuildingTaskType.java
index e3c0a32d..4e782baf 100644
--- a/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/BuildingTaskType.java
+++ b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/BuildingTaskType.java
@@ -51,11 +51,9 @@ public final class BuildingTaskType extends TaskType {
return;
}
- QuestProgressFile questProgressFile = qPlayer.getQuestProgressFile();
-
for (Quest quest : super.getRegisteredQuests()) {
- if (questProgressFile.hasStartedQuest(quest)) {
- QuestProgress questProgress = questProgressFile.getQuestProgress(quest);
+ if (qPlayer.hasStartedQuest(quest)) {
+ QuestProgress questProgress = qPlayer.getQuestProgressFile().getQuestProgress(quest);
for (Task task : quest.getTasksOfType(super.getType())) {
if (!TaskUtils.validateWorld(event.getPlayer(), task)) continue;
diff --git a/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/CommandTaskType.java b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/CommandTaskType.java
index 8c2bd081..9e80b102 100644
--- a/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/CommandTaskType.java
+++ b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/CommandTaskType.java
@@ -55,11 +55,9 @@ public final class CommandTaskType extends TaskType {
return;
}
- QuestProgressFile questProgressFile = qPlayer.getQuestProgressFile();
-
for (Quest quest : super.getRegisteredQuests()) {
- if (questProgressFile.hasStartedQuest(quest)) {
- QuestProgress questProgress = questProgressFile.getQuestProgress(quest);
+ if (qPlayer.hasStartedQuest(quest)) {
+ QuestProgress questProgress = qPlayer.getQuestProgressFile().getQuestProgress(quest);
for (Task task : quest.getTasksOfType(super.getType())) {
if (!TaskUtils.validateWorld(player, task)) continue;
diff --git a/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/DealDamageTaskType.java b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/DealDamageTaskType.java
index 8835d69b..8bfd2bba 100644
--- a/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/DealDamageTaskType.java
+++ b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/DealDamageTaskType.java
@@ -59,11 +59,9 @@ public final class DealDamageTaskType extends TaskType {
return;
}
- QuestProgressFile questProgressFile = qPlayer.getQuestProgressFile();
-
for (Quest quest : super.getRegisteredQuests()) {
- if (questProgressFile.hasStartedQuest(quest)) {
- QuestProgress questProgress = questProgressFile.getQuestProgress(quest);
+ if (qPlayer.hasStartedQuest(quest)) {
+ QuestProgress questProgress = qPlayer.getQuestProgressFile().getQuestProgress(quest);
for (Task task : quest.getTasksOfType(super.getType())) {
if (!TaskUtils.validateWorld(player, task)) continue;
diff --git a/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/DistancefromTaskType.java b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/DistancefromTaskType.java
index 0704a9f2..c03a8925 100644
--- a/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/DistancefromTaskType.java
+++ b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/DistancefromTaskType.java
@@ -84,11 +84,9 @@ public final class DistancefromTaskType extends TaskType {
return;
}
- QuestProgressFile questProgressFile = qPlayer.getQuestProgressFile();
-
for (Quest quest : super.getRegisteredQuests()) {
- if (questProgressFile.hasStartedQuest(quest)) {
- QuestProgress questProgress = questProgressFile.getQuestProgress(quest);
+ if (qPlayer.hasStartedQuest(quest)) {
+ QuestProgress questProgress = qPlayer.getQuestProgressFile().getQuestProgress(quest);
for (Task task : quest.getTasksOfType(super.getType())) {
TaskProgress taskProgress = questProgress.getTaskProgress(task.getId());
diff --git a/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/EnchantingTaskType.java b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/EnchantingTaskType.java
index 0ee2a1c4..457e9991 100644
--- a/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/EnchantingTaskType.java
+++ b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/EnchantingTaskType.java
@@ -54,11 +54,9 @@ public final class EnchantingTaskType extends TaskType {
return;
}
- QuestProgressFile questProgressFile = qPlayer.getQuestProgressFile();
-
for (Quest quest : super.getRegisteredQuests()) {
- if (questProgressFile.hasStartedQuest(quest)) {
- QuestProgress questProgress = questProgressFile.getQuestProgress(quest);
+ if (qPlayer.hasStartedQuest(quest)) {
+ QuestProgress questProgress = qPlayer.getQuestProgressFile().getQuestProgress(quest);
for (Task task : quest.getTasksOfType(super.getType())) {
if (!TaskUtils.validateWorld(player, task)) continue;
diff --git a/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/ExpEarnTaskType.java b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/ExpEarnTaskType.java
index 9df8a0ef..c387fe73 100644
--- a/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/ExpEarnTaskType.java
+++ b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/ExpEarnTaskType.java
@@ -51,11 +51,10 @@ public final class ExpEarnTaskType extends TaskType {
return;
}
- QuestProgressFile questProgressFile = qPlayer.getQuestProgressFile();
-
+
for (Quest quest : super.getRegisteredQuests()) {
- if (questProgressFile.hasStartedQuest(quest)) {
- QuestProgress questProgress = questProgressFile.getQuestProgress(quest);
+ if (qPlayer.hasStartedQuest(quest)) {
+ QuestProgress questProgress = qPlayer.getQuestProgressFile().getQuestProgress(quest);
for (Task task : quest.getTasksOfType(super.getType())) {
if (!TaskUtils.validateWorld(e.getPlayer(), task)) continue;
diff --git a/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/FarmingTaskType.java b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/FarmingTaskType.java
index 3eab0955..23f4f561 100644
--- a/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/FarmingTaskType.java
+++ b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/FarmingTaskType.java
@@ -49,11 +49,9 @@ public final class FarmingTaskType extends TaskType {
return;
}
- QuestProgressFile questProgressFile = qPlayer.getQuestProgressFile();
-
for (Quest quest : super.getRegisteredQuests()) {
- if (questProgressFile.hasStartedQuest(quest)) {
- QuestProgress questProgress = questProgressFile.getQuestProgress(quest);
+ if (qPlayer.hasStartedQuest(quest)) {
+ QuestProgress questProgress = qPlayer.getQuestProgressFile().getQuestProgress(quest);
for (Task task : quest.getTasksOfType(super.getType())) {
if (!TaskUtils.validateWorld(event.getPlayer(), task)) continue;
diff --git a/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/FishingTaskType.java b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/FishingTaskType.java
index afe87786..876957a3 100644
--- a/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/FishingTaskType.java
+++ b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/FishingTaskType.java
@@ -63,11 +63,9 @@ public final class FishingTaskType extends TaskType {
return;
}
- QuestProgressFile questProgressFile = qPlayer.getQuestProgressFile();
-
for (Quest quest : super.getRegisteredQuests()) {
- if (questProgressFile.hasStartedQuest(quest)) {
- QuestProgress questProgress = questProgressFile.getQuestProgress(quest);
+ if (qPlayer.hasStartedQuest(quest)) {
+ QuestProgress questProgress = qPlayer.getQuestProgressFile().getQuestProgress(quest);
for (Task task : quest.getTasksOfType(super.getType())) {
if (!TaskUtils.validateWorld(player, task)) continue;
diff --git a/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/InventoryTaskType.java b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/InventoryTaskType.java
index 5db2ee7c..bc7c8534 100644
--- a/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/InventoryTaskType.java
+++ b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/InventoryTaskType.java
@@ -109,11 +109,9 @@ public final class InventoryTaskType extends TaskType {
return;
}
- QuestProgressFile questProgressFile = qPlayer.getQuestProgressFile();
-
for (Quest quest : super.getRegisteredQuests()) {
- if (questProgressFile.hasStartedQuest(quest)) {
- QuestProgress questProgress = questProgressFile.getQuestProgress(quest);
+ if (qPlayer.hasStartedQuest(quest)) {
+ QuestProgress questProgress = qPlayer.getQuestProgressFile().getQuestProgress(quest);
for (Task task : quest.getTasksOfType(super.getType())) {
if (!TaskUtils.validateWorld(player, task)) continue;
diff --git a/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/MilkingTaskType.java b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/MilkingTaskType.java
index fa7df3a2..2528fb02 100644
--- a/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/MilkingTaskType.java
+++ b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/MilkingTaskType.java
@@ -64,8 +64,8 @@ public final class MilkingTaskType extends TaskType {
QuestProgressFile questProgressFile = qPlayer.getQuestProgressFile();
for (Quest quest : super.getRegisteredQuests()) {
- if (questProgressFile.hasStartedQuest(quest)) {
- QuestProgress questProgress = questProgressFile.getQuestProgress(quest);
+ if (qPlayer.hasStartedQuest(quest)) {
+ QuestProgress questProgress = qPlayer.getQuestProgressFile().getQuestProgress(quest);
for (Task task : quest.getTasksOfType(super.getType())) {
if (!TaskUtils.validateWorld(player, task)) continue;
diff --git a/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/MiningCertainTaskType.java b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/MiningCertainTaskType.java
index e3f89ff6..9fe54d7d 100644
--- a/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/MiningCertainTaskType.java
+++ b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/MiningCertainTaskType.java
@@ -95,11 +95,9 @@ public final class MiningCertainTaskType extends TaskType {
return;
}
- QuestProgressFile questProgressFile = qPlayer.getQuestProgressFile();
-
for (Quest quest : super.getRegisteredQuests()) {
- if (questProgressFile.hasStartedQuest(quest)) {
- QuestProgress questProgress = questProgressFile.getQuestProgress(quest);
+ if (qPlayer.hasStartedQuest(quest)) {
+ QuestProgress questProgress = qPlayer.getQuestProgressFile().getQuestProgress(quest);
for (Task task : quest.getTasksOfType(super.getType())) {
TaskProgress taskProgress = questProgress.getTaskProgress(task.getId());
@@ -128,11 +126,10 @@ public final class MiningCertainTaskType extends TaskType {
if (event.getPlayer().hasMetadata("NPC")) return;
QPlayer qPlayer = QuestsAPI.getPlayerManager().getPlayer(event.getPlayer().getUniqueId());
- QuestProgressFile questProgressFile = qPlayer.getQuestProgressFile();
for (Quest quest : super.getRegisteredQuests()) {
- if (questProgressFile.hasStartedQuest(quest)) {
- QuestProgress questProgress = questProgressFile.getQuestProgress(quest);
+ if (qPlayer.hasStartedQuest(quest)) {
+ QuestProgress questProgress = qPlayer.getQuestProgressFile().getQuestProgress(quest);
for (Task task : quest.getTasksOfType(super.getType())) {
if (!TaskUtils.validateWorld(event.getPlayer(), task)) continue;
diff --git a/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/MiningTaskType.java b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/MiningTaskType.java
index 45661bb4..9222e699 100644
--- a/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/MiningTaskType.java
+++ b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/MiningTaskType.java
@@ -54,11 +54,9 @@ public final class MiningTaskType extends TaskType {
return;
}
- QuestProgressFile questProgressFile = qPlayer.getQuestProgressFile(); // the quest progress file stores progress about all quests and tasks
-
for (Quest quest : super.getRegisteredQuests()) { // iterate through all quests which are registered to use this task type
- if (questProgressFile.hasStartedQuest(quest)) { // check if the player has actually started the quest before progressing it
- QuestProgress questProgress = questProgressFile.getQuestProgress(quest); // get their progress for the specific quest
+ if (qPlayer.hasStartedQuest(quest)) {
+ QuestProgress questProgress = qPlayer.getQuestProgressFile().getQuestProgress(quest);
for (Task task : quest.getTasksOfType(super.getType())) { // get all tasks of this type
if (!TaskUtils.validateWorld(event.getPlayer(), task)) continue;
diff --git a/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/MobkillingCertainTaskType.java b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/MobkillingCertainTaskType.java
index 689f7235..47e4a1a4 100644
--- a/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/MobkillingCertainTaskType.java
+++ b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/MobkillingCertainTaskType.java
@@ -76,11 +76,9 @@ public final class MobkillingCertainTaskType extends TaskType {
return;
}
- QuestProgressFile questProgressFile = qPlayer.getQuestProgressFile();
-
for (Quest quest : super.getRegisteredQuests()) {
- if (questProgressFile.hasStartedQuest(quest)) {
- QuestProgress questProgress = questProgressFile.getQuestProgress(quest);
+ if (qPlayer.hasStartedQuest(quest)) {
+ QuestProgress questProgress = qPlayer.getQuestProgressFile().getQuestProgress(quest);
for (Task task : quest.getTasksOfType(super.getType())) {
if (!TaskUtils.validateWorld(killer, task)) continue;
diff --git a/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/MobkillingTaskType.java b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/MobkillingTaskType.java
index e92466b8..8b41f7bd 100644
--- a/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/MobkillingTaskType.java
+++ b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/MobkillingTaskType.java
@@ -67,11 +67,9 @@ public final class MobkillingTaskType extends TaskType {
return;
}
- QuestProgressFile questProgressFile = qPlayer.getQuestProgressFile();
-
for (Quest quest : super.getRegisteredQuests()) {
- if (questProgressFile.hasStartedQuest(quest)) {
- QuestProgress questProgress = questProgressFile.getQuestProgress(quest);
+ if (qPlayer.hasStartedQuest(quest)) {
+ QuestProgress questProgress = qPlayer.getQuestProgressFile().getQuestProgress(quest);
for (Task task : quest.getTasksOfType(super.getType())) {
if (!TaskUtils.validateWorld(killer, task)) continue;
diff --git a/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/PermissionTaskType.java b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/PermissionTaskType.java
index 59e48061..96cb94f7 100644
--- a/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/PermissionTaskType.java
+++ b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/PermissionTaskType.java
@@ -40,10 +40,9 @@ public final class PermissionTaskType extends TaskType {
if (qPlayer == null) {
continue;
}
- QuestProgressFile questProgressFile = qPlayer.getQuestProgressFile();
for (Quest quest : PermissionTaskType.super.getRegisteredQuests()) {
- if (questProgressFile.hasStartedQuest(quest)) {
- QuestProgress questProgress = questProgressFile.getQuestProgress(quest);
+ if (qPlayer.hasStartedQuest(quest)) {
+ QuestProgress questProgress = qPlayer.getQuestProgressFile().getQuestProgress(quest);
for (Task task : quest.getTasksOfType(PermissionTaskType.super.getType())) {
TaskProgress taskProgress = questProgress.getTaskProgress(task.getId());
if (taskProgress.isCompleted()) {
diff --git a/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/PlayerkillingTaskType.java b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/PlayerkillingTaskType.java
index 6b6785a2..3aa326dc 100644
--- a/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/PlayerkillingTaskType.java
+++ b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/PlayerkillingTaskType.java
@@ -63,11 +63,9 @@ public final class PlayerkillingTaskType extends TaskType {
return;
}
- QuestProgressFile questProgressFile = qPlayer.getQuestProgressFile();
-
for (Quest quest : super.getRegisteredQuests()) {
- if (questProgressFile.hasStartedQuest(quest)) {
- QuestProgress questProgress = questProgressFile.getQuestProgress(quest);
+ if (qPlayer.hasStartedQuest(quest)) {
+ QuestProgress questProgress = qPlayer.getQuestProgressFile().getQuestProgress(quest);
for (Task task : quest.getTasksOfType(super.getType())) {
if (!TaskUtils.validateWorld(killer, task)) continue;
diff --git a/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/PlaytimeTaskType.java b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/PlaytimeTaskType.java
index 7fee929b..c3fe7733 100644
--- a/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/PlaytimeTaskType.java
+++ b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/PlaytimeTaskType.java
@@ -54,10 +54,9 @@ public final class PlaytimeTaskType extends TaskType {
continue;
}
- QuestProgressFile questProgressFile = qPlayer.getQuestProgressFile();
for (Quest quest : PlaytimeTaskType.super.getRegisteredQuests()) {
- if (questProgressFile.hasStartedQuest(quest)) {
- QuestProgress questProgress = questProgressFile.getQuestProgress(quest);
+ if (qPlayer.hasStartedQuest(quest)) {
+ QuestProgress questProgress = qPlayer.getQuestProgressFile().getQuestProgress(quest);
for (Task task : quest.getTasksOfType(PlaytimeTaskType.super.getType())) {
if (!TaskUtils.validateWorld(player, task)) continue;
diff --git a/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/PositionTaskType.java b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/PositionTaskType.java
index 5082c43e..862a74e0 100644
--- a/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/PositionTaskType.java
+++ b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/PositionTaskType.java
@@ -70,11 +70,9 @@ public final class PositionTaskType extends TaskType {
return;
}
- QuestProgressFile questProgressFile = qPlayer.getQuestProgressFile();
-
for (Quest quest : super.getRegisteredQuests()) {
- if (questProgressFile.hasStartedQuest(quest)) {
- QuestProgress questProgress = questProgressFile.getQuestProgress(quest);
+ if (qPlayer.hasStartedQuest(quest)) {
+ QuestProgress questProgress = qPlayer.getQuestProgressFile().getQuestProgress(quest);
for (Task task : quest.getTasksOfType(super.getType())) {
TaskProgress taskProgress = questProgress.getTaskProgress(task.getId());
diff --git a/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/ShearingTaskType.java b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/ShearingTaskType.java
index 3c242aa8..2ed0775b 100644
--- a/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/ShearingTaskType.java
+++ b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/ShearingTaskType.java
@@ -59,11 +59,9 @@ public final class ShearingTaskType extends TaskType {
return;
}
- QuestProgressFile questProgressFile = qPlayer.getQuestProgressFile();
-
for (Quest quest : super.getRegisteredQuests()) {
- if (questProgressFile.hasStartedQuest(quest)) {
- QuestProgress questProgress = questProgressFile.getQuestProgress(quest);
+ if (qPlayer.hasStartedQuest(quest)) {
+ QuestProgress questProgress = qPlayer.getQuestProgressFile().getQuestProgress(quest);
for (Task task : quest.getTasksOfType(super.getType())) {
if (!TaskUtils.validateWorld(player, task)) continue;
diff --git a/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/TamingTaskType.java b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/TamingTaskType.java
index 06015448..66f96e9e 100644
--- a/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/TamingTaskType.java
+++ b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/TamingTaskType.java
@@ -58,11 +58,9 @@ public final class TamingTaskType extends TaskType {
return;
}
- QuestProgressFile questProgressFile = qPlayer.getQuestProgressFile();
-
for (Quest quest : super.getRegisteredQuests()) {
- if (questProgressFile.hasStartedQuest(quest)) {
- QuestProgress questProgress = questProgressFile.getQuestProgress(quest);
+ if (qPlayer.hasStartedQuest(quest)) {
+ QuestProgress questProgress = qPlayer.getQuestProgressFile().getQuestProgress(quest);
for (Task task : quest.getTasksOfType(super.getType())) {
if (!TaskUtils.validateWorld(player, task)) continue;
diff --git a/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/WalkingTaskType.java b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/WalkingTaskType.java
index 16e87d9f..be8d08b9 100644
--- a/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/WalkingTaskType.java
+++ b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/WalkingTaskType.java
@@ -58,11 +58,9 @@ public final class WalkingTaskType extends TaskType {
return;
}
- QuestProgressFile questProgressFile = qPlayer.getQuestProgressFile();
-
for (Quest quest : super.getRegisteredQuests()) {
- if (questProgressFile.hasStartedQuest(quest)) {
- QuestProgress questProgress = questProgressFile.getQuestProgress(quest);
+ if (qPlayer.hasStartedQuest(quest)) {
+ QuestProgress questProgress = qPlayer.getQuestProgressFile().getQuestProgress(quest);
for (Task task : quest.getTasksOfType(super.getType())) {
if (!TaskUtils.validateWorld(player, task)) continue;
diff --git a/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/dependent/ASkyBlockLevelType.java b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/dependent/ASkyBlockLevelType.java
index aebe573c..9ebc31c2 100644
--- a/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/dependent/ASkyBlockLevelType.java
+++ b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/dependent/ASkyBlockLevelType.java
@@ -48,11 +48,9 @@ public final class ASkyBlockLevelType extends TaskType {
return;
}
- QuestProgressFile questProgressFile = qPlayer.getQuestProgressFile();
-
for (Quest quest : super.getRegisteredQuests()) {
- if (questProgressFile.hasStartedQuest(quest)) {
- QuestProgress questProgress = questProgressFile.getQuestProgress(quest);
+ if (qPlayer.hasStartedQuest(quest)) {
+ QuestProgress questProgress = qPlayer.getQuestProgressFile().getQuestProgress(quest);
for (Task task : quest.getTasksOfType(super.getType())) {
TaskProgress taskProgress = questProgress.getTaskProgress(task.getId());
diff --git a/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/dependent/BentoBoxLevelTaskType.java b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/dependent/BentoBoxLevelTaskType.java
index ca6f5b61..c6621f97 100644
--- a/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/dependent/BentoBoxLevelTaskType.java
+++ b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/dependent/BentoBoxLevelTaskType.java
@@ -67,11 +67,9 @@ public final class BentoBoxLevelTaskType extends TaskType {
continue;
}
- QuestProgressFile questProgressFile = qPlayer.getQuestProgressFile();
-
for (Quest quest : super.getRegisteredQuests()) {
- if (questProgressFile.hasStartedQuest(quest)) {
- QuestProgress questProgress = questProgressFile.getQuestProgress(quest);
+ if (qPlayer.hasStartedQuest(quest)) {
+ QuestProgress questProgress = qPlayer.getQuestProgressFile().getQuestProgress(quest);
for (Task task : quest.getTasksOfType(super.getType())) {
TaskProgress taskProgress = questProgress.getTaskProgress(task.getId());
diff --git a/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/dependent/CitizensDeliverTaskType.java b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/dependent/CitizensDeliverTaskType.java
index d7d73131..0d17b119 100644
--- a/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/dependent/CitizensDeliverTaskType.java
+++ b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/dependent/CitizensDeliverTaskType.java
@@ -96,11 +96,9 @@ public final class CitizensDeliverTaskType extends TaskType {
return;
}
- QuestProgressFile questProgressFile = qPlayer.getQuestProgressFile();
-
for (Quest quest : super.getRegisteredQuests()) {
- if (questProgressFile.hasStartedQuest(quest)) {
- QuestProgress questProgress = questProgressFile.getQuestProgress(quest);
+ if (qPlayer.hasStartedQuest(quest)) {
+ QuestProgress questProgress = qPlayer.getQuestProgressFile().getQuestProgress(quest);
for (Task task : quest.getTasksOfType(super.getType())) {
if (!ChatColor.stripColor(ChatColor.translateAlternateColorCodes('&', String.valueOf(task.getConfigValue("npc-name")))).equals(ChatColor
diff --git a/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/dependent/CitizensInteractTaskType.java b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/dependent/CitizensInteractTaskType.java
index f3692cee..3ce7bb01 100644
--- a/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/dependent/CitizensInteractTaskType.java
+++ b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/dependent/CitizensInteractTaskType.java
@@ -51,11 +51,9 @@ public final class CitizensInteractTaskType extends TaskType {
return;
}
- QuestProgressFile questProgressFile = qPlayer.getQuestProgressFile();
-
for (Quest quest : super.getRegisteredQuests()) {
- if (questProgressFile.hasStartedQuest(quest)) {
- QuestProgress questProgress = questProgressFile.getQuestProgress(quest);
+ if (qPlayer.hasStartedQuest(quest)) {
+ QuestProgress questProgress = qPlayer.getQuestProgressFile().getQuestProgress(quest);
for (Task task : quest.getTasksOfType(super.getType())) {
if (!TaskUtils.validateWorld(event.getClicker(), task)) continue;
diff --git a/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/dependent/EssentialsBalanceTaskType.java b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/dependent/EssentialsBalanceTaskType.java
index 7a07fc32..b110a038 100644
--- a/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/dependent/EssentialsBalanceTaskType.java
+++ b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/dependent/EssentialsBalanceTaskType.java
@@ -72,11 +72,9 @@ public class EssentialsBalanceTaskType extends TaskType {
return;
}
- QuestProgressFile questProgressFile = qPlayer.getQuestProgressFile();
-
for (Quest quest : super.getRegisteredQuests()) {
- if (questProgressFile.hasStartedQuest(quest)) {
- QuestProgress questProgress = questProgressFile.getQuestProgress(quest);
+ if (qPlayer.hasStartedQuest(quest)) {
+ QuestProgress questProgress = qPlayer.getQuestProgressFile().getQuestProgress(quest);
for (Task task : quest.getTasksOfType(super.getType())) {
TaskProgress taskProgress = questProgress.getTaskProgress(task.getId());
diff --git a/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/dependent/EssentialsMoneyEarnTaskType.java b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/dependent/EssentialsMoneyEarnTaskType.java
index 1a8d6076..ea517e7d 100644
--- a/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/dependent/EssentialsMoneyEarnTaskType.java
+++ b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/dependent/EssentialsMoneyEarnTaskType.java
@@ -50,11 +50,9 @@ public class EssentialsMoneyEarnTaskType extends TaskType {
return;
}
- QuestProgressFile questProgressFile = qPlayer.getQuestProgressFile();
-
for (Quest quest : super.getRegisteredQuests()) {
- if (questProgressFile.hasStartedQuest(quest)) {
- QuestProgress questProgress = questProgressFile.getQuestProgress(quest);
+ if (qPlayer.hasStartedQuest(quest)) {
+ QuestProgress questProgress = qPlayer.getQuestProgressFile().getQuestProgress(quest);
for (Task task : quest.getTasksOfType(super.getType())) {
TaskProgress taskProgress = questProgress.getTaskProgress(task.getId());
diff --git a/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/dependent/IridiumSkyblockValueType.java b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/dependent/IridiumSkyblockValueType.java
index 76b2df1a..611a0d47 100644
--- a/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/dependent/IridiumSkyblockValueType.java
+++ b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/dependent/IridiumSkyblockValueType.java
@@ -53,11 +53,9 @@ public final class IridiumSkyblockValueType extends TaskType {
continue;
}
- QuestProgressFile questProgressFile = qPlayer.getQuestProgressFile();
-
for (Quest quest : IridiumSkyblockValueType.super.getRegisteredQuests()) {
- if (questProgressFile.hasStartedQuest(quest)) {
- QuestProgress questProgress = questProgressFile.getQuestProgress(quest);
+ if (qPlayer.hasStartedQuest(quest)) {
+ QuestProgress questProgress = qPlayer.getQuestProgressFile().getQuestProgress(quest);
for (Task task : quest.getTasksOfType(IridiumSkyblockValueType.super.getType())) {
TaskProgress taskProgress = questProgress.getTaskProgress(task.getId());
diff --git a/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/dependent/MythicMobsKillingType.java b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/dependent/MythicMobsKillingType.java
index f314ca10..e98501cd 100644
--- a/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/dependent/MythicMobsKillingType.java
+++ b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/dependent/MythicMobsKillingType.java
@@ -65,11 +65,9 @@ public final class MythicMobsKillingType extends TaskType {
return;
}
- QuestProgressFile questProgressFile = qPlayer.getQuestProgressFile();
-
for (Quest quest : super.getRegisteredQuests()) {
- if (questProgressFile.hasStartedQuest(quest)) {
- QuestProgress questProgress = questProgressFile.getQuestProgress(quest);
+ if (qPlayer.hasStartedQuest(quest)) {
+ QuestProgress questProgress = qPlayer.getQuestProgressFile().getQuestProgress(quest);
for (Task task : quest.getTasksOfType(super.getType())) {
if (!TaskUtils.validateWorld(killer.getWorld().getName(), task)) continue;
diff --git a/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/dependent/PlaceholderAPIEvaluateTaskType.java b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/dependent/PlaceholderAPIEvaluateTaskType.java
index 9ba9005b..9932ac5a 100644
--- a/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/dependent/PlaceholderAPIEvaluateTaskType.java
+++ b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/dependent/PlaceholderAPIEvaluateTaskType.java
@@ -75,10 +75,9 @@ public final class PlaceholderAPIEvaluateTaskType extends TaskType {
continue;
}
- QuestProgressFile questProgressFile = qPlayer.getQuestProgressFile();
for (Quest quest : PlaceholderAPIEvaluateTaskType.super.getRegisteredQuests()) {
- if (questProgressFile.hasStartedQuest(quest)) {
- QuestProgress questProgress = questProgressFile.getQuestProgress(quest);
+ if (qPlayer.hasStartedQuest(quest)) {
+ QuestProgress questProgress = qPlayer.getQuestProgressFile().getQuestProgress(quest);
for (Task task : quest.getTasksOfType(PlaceholderAPIEvaluateTaskType.super.getType())) {
if (!TaskUtils.validateWorld(player, task)) continue;
TaskProgress taskProgress = questProgress.getTaskProgress(task.getId());
diff --git a/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/dependent/ShopGUIPlusBuyCertainTaskType.java b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/dependent/ShopGUIPlusBuyCertainTaskType.java
index ae757e50..417df314 100644
--- a/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/dependent/ShopGUIPlusBuyCertainTaskType.java
+++ b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/dependent/ShopGUIPlusBuyCertainTaskType.java
@@ -43,11 +43,9 @@ public class ShopGUIPlusBuyCertainTaskType extends TaskType {
return;
}
- QuestProgressFile questProgressFile = qPlayer.getQuestProgressFile();
-
for (Quest quest : super.getRegisteredQuests()) {
- if (questProgressFile.hasStartedQuest(quest)) {
- QuestProgress questProgress = questProgressFile.getQuestProgress(quest);
+ if (qPlayer.hasStartedQuest(quest)) {
+ QuestProgress questProgress = qPlayer.getQuestProgressFile().getQuestProgress(quest);
for (Task task : quest.getTasksOfType(super.getType())) {
if (!TaskUtils.validateWorld(event.getPlayer().getWorld().getName(), task)) continue;
diff --git a/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/dependent/ShopGUIPlusSellCertainTaskType.java b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/dependent/ShopGUIPlusSellCertainTaskType.java
index 1a062393..623b2199 100644
--- a/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/dependent/ShopGUIPlusSellCertainTaskType.java
+++ b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/dependent/ShopGUIPlusSellCertainTaskType.java
@@ -43,11 +43,9 @@ public class ShopGUIPlusSellCertainTaskType extends TaskType {
return;
}
- QuestProgressFile questProgressFile = qPlayer.getQuestProgressFile();
-
for (Quest quest : super.getRegisteredQuests()) {
- if (questProgressFile.hasStartedQuest(quest)) {
- QuestProgress questProgress = questProgressFile.getQuestProgress(quest);
+ if (qPlayer.hasStartedQuest(quest)) {
+ QuestProgress questProgress = qPlayer.getQuestProgressFile().getQuestProgress(quest);
for (Task task : quest.getTasksOfType(super.getType())) {
if (!TaskUtils.validateWorld(event.getPlayer().getWorld().getName(), task)) continue;
diff --git a/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/dependent/uSkyBlockLevelType.java b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/dependent/uSkyBlockLevelType.java
index f6a23e45..a45653dd 100644
--- a/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/dependent/uSkyBlockLevelType.java
+++ b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/dependent/uSkyBlockLevelType.java
@@ -49,11 +49,9 @@ public final class uSkyBlockLevelType extends TaskType {
return;
}
- QuestProgressFile questProgressFile = qPlayer.getQuestProgressFile();
-
for (Quest quest : super.getRegisteredQuests()) {
- if (questProgressFile.hasStartedQuest(quest)) {
- QuestProgress questProgress = questProgressFile.getQuestProgress(quest);
+ if (qPlayer.hasStartedQuest(quest)) {
+ QuestProgress questProgress = qPlayer.getQuestProgressFile().getQuestProgress(quest);
for (Task task : quest.getTasksOfType(super.getType())) {
TaskProgress taskProgress = questProgress.getTaskProgress(task.getId());