diff options
Diffstat (limited to 'bukkit/src')
4 files changed, 111 insertions, 14 deletions
diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/config/BukkitQuestsLoader.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/config/BukkitQuestsLoader.java index d1f56b2b..029c2110 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/config/BukkitQuestsLoader.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/config/BukkitQuestsLoader.java @@ -302,6 +302,22 @@ public class BukkitQuestsLoader implements QuestsLoader { questManager.registerQuest(quest); taskTypeManager.registerQuestTasksWithTaskTypes(quest); qItemStackRegistry.register(quest, displayItem); + if (config.isConfigurationSection("options.started-display")) { + qItemStackRegistry.registerQuestLocked(quest, + plugin.getItemGetter().getItem("options.locked-display", config)); + } + if (config.isConfigurationSection("options.completed-display")) { + qItemStackRegistry.registerQuestCompleted(quest, + plugin.getItemGetter().getItem("options.completed-display", config)); + } + if (config.isConfigurationSection("options.cooldown-display")) { + qItemStackRegistry.registerQuestCooldown(quest, + plugin.getItemGetter().getItem("options.cooldown-display", config)); + } + if (config.isConfigurationSection("options.permission-display")) { + qItemStackRegistry.registerQuestPermission(quest, + plugin.getItemGetter().getItem("options.permission-display", config)); + } pathToQuest.put(relativeLocation.getPath(), quest); } if (!problems.isEmpty()) { diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/menu/QuestQMenu.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/menu/QuestQMenu.java index 36b744b9..39e22845 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/menu/QuestQMenu.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/menu/QuestQMenu.java @@ -103,7 +103,7 @@ public class QuestQMenu implements QMenu { continue; } } - menuElements.put(slot, new QuestMenuElement(plugin, owner, quest.getId())); + menuElements.put(slot, new QuestMenuElement(plugin, owner, quest)); slot++; } @@ -227,7 +227,7 @@ public class QuestQMenu implements QMenu { MenuElement menuElement = menuElements.get(event.getSlot() + ((currentPage - 1) * pageSize)); if (menuElement instanceof QuestMenuElement) { QuestMenuElement questMenuElement = (QuestMenuElement) menuElement; - Quest quest = plugin.getQuestManager().getQuestById(questMenuElement.getQuestId()); + Quest quest = questMenuElement.getQuest(); if (event.getClick() == startClickType) { if (config.getBoolean("options.quest-autostart") || quest.isAutoStartEnabled()) return false; if (owner.startQuest(quest) == QuestStartResult.QUEST_SUCCESS) { diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/menu/element/QuestMenuElement.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/menu/element/QuestMenuElement.java index 7065127a..6f380622 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/menu/element/QuestMenuElement.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/menu/element/QuestMenuElement.java @@ -24,13 +24,13 @@ public class QuestMenuElement extends MenuElement { private final BukkitQuestsPlugin plugin; private final BukkitQuestsConfig config; private final QPlayer owner; - private final String questId; + private final Quest quest; - public QuestMenuElement(BukkitQuestsPlugin plugin, QPlayer owner, String questId) { + public QuestMenuElement(BukkitQuestsPlugin plugin, QPlayer owner, Quest quest) { this.plugin = plugin; this.config = (BukkitQuestsConfig) plugin.getQuestsConfig(); this.owner = owner; - this.questId = questId; + this.quest = quest; } public QPlayer getOwner() { @@ -38,12 +38,15 @@ public class QuestMenuElement extends MenuElement { } public String getQuestId() { - return questId; + return quest.getId(); + } + + public Quest getQuest() { + return quest; } @Override public ItemStack asItemStack() { - Quest quest = plugin.getQuestManager().getQuestById(questId); QuestProgress questProgress = owner.getQuestProgressFile().getQuestProgress(quest); QuestStartResult status = owner.canStartQuest(quest); long cooldown = owner.getQuestProgressFile().getCooldownFor(quest); @@ -61,28 +64,53 @@ public class QuestMenuElement extends MenuElement { } Map<String, String> placeholders = new HashMap<>(); placeholders.put("{quest}", Chat.strip(qItemStack.getName())); + placeholders.put("{questid}", quest.getId()); if (quests.size() > 1 && plugin.getConfig().getBoolean("options.gui-truncate-requirements", true)) { placeholders.put("{requirements}", quests.get(0) + Messages.UI_PLACEHOLDERS_TRUNCATED.getMessage().replace("{amount}", String.valueOf(quests.size() - 1))); } else { placeholders.put("{requirements}", String.join(", ", quests)); } - return MenuUtils.applyPlaceholders(plugin, owner.getPlayerUUID(), config.getItem("gui.quest-locked-display"), placeholders); + ItemStack display; + if (plugin.getQItemStackRegistry().hasQuestLockedItemStack(quest)) { + display = plugin.getQItemStackRegistry().getQuestLockedItemStack(quest); + } else { + display = config.getItem("gui.quest-locked-display"); + } + return MenuUtils.applyPlaceholders(plugin, owner.getPlayerUUID(), display, placeholders); } else if (status == QuestStartResult.QUEST_ALREADY_COMPLETED) { Map<String, String> placeholders = new HashMap<>(); placeholders.put("{quest}", Chat.strip(qItemStack.getName())); - placeholders.put("{questid}", questId); - return MenuUtils.applyPlaceholders(plugin, owner.getPlayerUUID(), config.getItem("gui.quest-completed-display"), placeholders); + placeholders.put("{questid}", quest.getId()); + ItemStack display; + if (plugin.getQItemStackRegistry().hasQuestCompletedItemStack(quest)) { + display = plugin.getQItemStackRegistry().getQuestCompletedItemStack(quest); + } else { + display = config.getItem("gui.quest-completed-display"); + } + return MenuUtils.applyPlaceholders(plugin, owner.getPlayerUUID(), display, placeholders); } else if (status == QuestStartResult.QUEST_NO_PERMISSION) { Map<String, String> placeholders = new HashMap<>(); placeholders.put("{quest}", Chat.strip(qItemStack.getName())); - placeholders.put("{questid}", questId); - return MenuUtils.applyPlaceholders(plugin, owner.getPlayerUUID(), config.getItem("gui.quest-permission-display"), placeholders); + placeholders.put("{questid}", quest.getId()); + ItemStack display; + if (plugin.getQItemStackRegistry().hasQuestPermissionItemStack(quest)) { + display = plugin.getQItemStackRegistry().getQuestPermissionItemStack(quest); + } else { + display = config.getItem("gui.quest-permission-display"); + } + return MenuUtils.applyPlaceholders(plugin, owner.getPlayerUUID(), display, placeholders); } else if (cooldown > 0) { Map<String, String> placeholders = new HashMap<>(); placeholders.put("{time}", Format.formatTime(TimeUnit.SECONDS.convert(cooldown, TimeUnit.MILLISECONDS))); placeholders.put("{quest}", Chat.strip(qItemStack.getName())); - placeholders.put("{questid}", questId); - return MenuUtils.applyPlaceholders(plugin, owner.getPlayerUUID(), config.getItem("gui.quest-cooldown-display"), placeholders); + placeholders.put("{questid}", quest.getId()); + ItemStack display; + if (plugin.getQItemStackRegistry().hasQuestCooldownItemStack(quest)) { + display = plugin.getQItemStackRegistry().getQuestCooldownItemStack(quest); + } else { + display = config.getItem("gui.quest-cooldown-display"); + } + return MenuUtils.applyPlaceholders(plugin, owner.getPlayerUUID(), display, placeholders); } else { return MenuUtils.applyPlaceholders(plugin, owner.getPlayerUUID(), qItemStack.toItemStack(quest, owner, questProgress)); } diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/menu/itemstack/QItemStackRegistry.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/menu/itemstack/QItemStackRegistry.java index f00cd36b..483b5bb2 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/menu/itemstack/QItemStackRegistry.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/menu/itemstack/QItemStackRegistry.java @@ -15,10 +15,47 @@ public class QItemStackRegistry { private final Map<String, QItemStack> questRegistry = new HashMap<>(); private final Map<String, ItemStack> categoryRegistry = new HashMap<>(); + private final Map<String, ItemStack> questLockedRegistry = new HashMap<>(); + private final Map<String, ItemStack> questCompletedRegistry = new HashMap<>(); + private final Map<String, ItemStack> questCooldownRegistry = new HashMap<>(); + private final Map<String, ItemStack> questPermissionRegistry = new HashMap<>(); + public QItemStack getQuestItemStack(Quest quest) { return questRegistry.get(quest.getId()); } + public ItemStack getQuestLockedItemStack(Quest quest) { + return questLockedRegistry.get(quest.getId()); + } + + public ItemStack getQuestCompletedItemStack(Quest quest) { + return questCompletedRegistry.get(quest.getId()); + } + + public ItemStack getQuestCooldownItemStack(Quest quest) { + return questCooldownRegistry.get(quest.getId()); + } + + public ItemStack getQuestPermissionItemStack(Quest quest) { + return questPermissionRegistry.get(quest.getId()); + } + + public boolean hasQuestLockedItemStack(Quest quest) { + return questLockedRegistry.containsKey(quest.getId()); + } + + public boolean hasQuestCompletedItemStack(Quest quest) { + return questCompletedRegistry.containsKey(quest.getId()); + } + + public boolean hasQuestCooldownItemStack(Quest quest) { + return questCooldownRegistry.containsKey(quest.getId()); + } + + public boolean hasQuestPermissionItemStack(Quest quest) { + return questPermissionRegistry.containsKey(quest.getId()); + } + public ItemStack getCategoryItemStack(Category category) { return categoryRegistry.get(category.getId()); } @@ -32,6 +69,22 @@ public class QItemStackRegistry { questRegistry.put(quest.getId(), qItemStack); } + public void registerQuestLocked(Quest quest, ItemStack itemStack) { + questLockedRegistry.put(quest.getId(), itemStack); + } + + public void registerQuestCompleted(Quest quest, ItemStack itemStack) { + questCompletedRegistry.put(quest.getId(), itemStack); + } + + public void registerQuestCooldown(Quest quest, ItemStack itemStack) { + questCooldownRegistry.put(quest.getId(), itemStack); + } + + public void registerQuestPermission(Quest quest, ItemStack itemStack) { + questPermissionRegistry.put(quest.getId(), itemStack); + } + public void register(Category quest, ItemStack itemStack) { categoryRegistry.put(quest.getId(), itemStack); } |
