diff options
| author | LMBishop <13875753+LMBishop@users.noreply.github.com> | 2021-03-07 14:56:07 +0000 |
|---|---|---|
| committer | LMBishop <13875753+LMBishop@users.noreply.github.com> | 2021-03-07 14:56:07 +0000 |
| commit | be8fef67a388db2e2ccade068cfb3b11621e527a (patch) | |
| tree | cdbf532a1d2b77abcab9b915813d6c9764f2d466 /src | |
| parent | 7f639c9f84967c4ffffcba9b9bb8fc921106278a (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')
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()); |
