diff options
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()); |
