aboutsummaryrefslogtreecommitdiffstats
path: root/bukkit/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'bukkit/src/main')
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/config/BukkitQuestsLoader.java16
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/menu/QuestQMenu.java4
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/menu/element/QuestMenuElement.java52
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/menu/itemstack/QItemStackRegistry.java53
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);
}