aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/com/leonardobishop
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/leonardobishop')
-rw-r--r--src/main/java/com/leonardobishop/quests/Quests.java26
-rw-r--r--src/main/java/com/leonardobishop/quests/QuestsConfigLoader.java4
-rw-r--r--src/main/java/com/leonardobishop/quests/hooks/itemgetter/ItemGetter.java (renamed from src/main/java/com/leonardobishop/quests/itemgetter/ItemGetter.java)2
-rw-r--r--src/main/java/com/leonardobishop/quests/hooks/itemgetter/ItemGetterLatest.java (renamed from src/main/java/com/leonardobishop/quests/itemgetter/ItemGetterLatest.java)2
-rw-r--r--src/main/java/com/leonardobishop/quests/hooks/itemgetter/ItemGetter_1_13.java (renamed from src/main/java/com/leonardobishop/quests/itemgetter/ItemGetter_1_13.java)2
-rw-r--r--src/main/java/com/leonardobishop/quests/hooks/itemgetter/ItemGetter_Late_1_8.java (renamed from src/main/java/com/leonardobishop/quests/itemgetter/ItemGetter_Late_1_8.java)2
-rw-r--r--src/main/java/com/leonardobishop/quests/hooks/papi/PlaceholderAPIHook.java12
-rw-r--r--src/main/java/com/leonardobishop/quests/hooks/title/Title.java (renamed from src/main/java/com/leonardobishop/quests/title/Title.java)2
-rw-r--r--src/main/java/com/leonardobishop/quests/hooks/title/Title_Bukkit.java (renamed from src/main/java/com/leonardobishop/quests/title/Title_Bukkit.java)2
-rw-r--r--src/main/java/com/leonardobishop/quests/hooks/title/Title_BukkitNoTimings.java (renamed from src/main/java/com/leonardobishop/quests/title/Title_BukkitNoTimings.java)2
-rw-r--r--src/main/java/com/leonardobishop/quests/hooks/title/Title_Other.java (renamed from src/main/java/com/leonardobishop/quests/title/Title_Other.java)2
-rw-r--r--src/main/java/com/leonardobishop/quests/obj/Options.java1
-rw-r--r--src/main/java/com/leonardobishop/quests/obj/misc/QItemStack.java17
-rw-r--r--src/main/java/com/leonardobishop/quests/obj/misc/QMenuCancel.java18
-rw-r--r--src/main/java/com/leonardobishop/quests/obj/misc/QMenuCategory.java34
-rw-r--r--src/main/java/com/leonardobishop/quests/obj/misc/QMenuDaily.java16
-rw-r--r--src/main/java/com/leonardobishop/quests/obj/misc/QMenuQuest.java23
-rw-r--r--src/main/java/com/leonardobishop/quests/player/QPlayer.java8
18 files changed, 111 insertions, 64 deletions
diff --git a/src/main/java/com/leonardobishop/quests/Quests.java b/src/main/java/com/leonardobishop/quests/Quests.java
index ad5a1798..d03d0a1b 100644
--- a/src/main/java/com/leonardobishop/quests/Quests.java
+++ b/src/main/java/com/leonardobishop/quests/Quests.java
@@ -6,10 +6,11 @@ import com.leonardobishop.quests.commands.CommandQuests;
import com.leonardobishop.quests.events.EventInventory;
import com.leonardobishop.quests.events.EventPlayerJoin;
import com.leonardobishop.quests.events.EventPlayerLeave;
-import com.leonardobishop.quests.itemgetter.ItemGetter;
-import com.leonardobishop.quests.itemgetter.ItemGetterLatest;
-import com.leonardobishop.quests.itemgetter.ItemGetter_1_13;
-import com.leonardobishop.quests.itemgetter.ItemGetter_Late_1_8;
+import com.leonardobishop.quests.hooks.itemgetter.ItemGetter;
+import com.leonardobishop.quests.hooks.itemgetter.ItemGetterLatest;
+import com.leonardobishop.quests.hooks.itemgetter.ItemGetter_1_13;
+import com.leonardobishop.quests.hooks.itemgetter.ItemGetter_Late_1_8;
+import com.leonardobishop.quests.hooks.papi.PlaceholderAPIHook;
import com.leonardobishop.quests.obj.Messages;
import com.leonardobishop.quests.player.QPlayer;
import com.leonardobishop.quests.player.QPlayerManager;
@@ -18,10 +19,10 @@ import com.leonardobishop.quests.quests.tasktypes.TaskType;
import com.leonardobishop.quests.quests.tasktypes.TaskTypeManager;
import com.leonardobishop.quests.quests.tasktypes.types.*;
import com.leonardobishop.quests.quests.tasktypes.types.dependent.*;
-import com.leonardobishop.quests.title.Title;
-import com.leonardobishop.quests.title.Title_Bukkit;
-import com.leonardobishop.quests.title.Title_BukkitNoTimings;
-import com.leonardobishop.quests.title.Title_Other;
+import com.leonardobishop.quests.hooks.title.Title;
+import com.leonardobishop.quests.hooks.title.Title_Bukkit;
+import com.leonardobishop.quests.hooks.title.Title_BukkitNoTimings;
+import com.leonardobishop.quests.hooks.title.Title_Other;
import com.leonardobishop.quests.updater.Updater;
import me.clip.placeholderapi.expansion.PlaceholderExpansion;
import org.bukkit.Bukkit;
@@ -47,6 +48,7 @@ public class Quests extends JavaPlugin {
private QuestsConfigLoader questsConfigLoader;
private QuestsLogger questsLogger;
private PlaceholderExpansion placeholder;
+ private PlaceholderAPIHook placeholderAPIHook;
private boolean brokenConfig = false;
private BukkitTask questAutosaveTask;
@@ -195,6 +197,10 @@ public class Quests extends JavaPlugin {
}
});
+ if (Bukkit.getPluginManager().isPluginEnabled("PlaceholderAPI")) {
+ this.placeholderAPIHook = new PlaceholderAPIHook();
+ }
+
// this intentionally should not be documented
boolean ignoreUpdates = false;
try {
@@ -211,6 +217,10 @@ public class Quests extends JavaPlugin {
}
}
+ public PlaceholderAPIHook getPlaceholderAPIHook() {
+ return placeholderAPIHook;
+ }
+
@Override
public void onDisable() {
for (TaskType taskType : getTaskTypeManager().getTaskTypes()) {
diff --git a/src/main/java/com/leonardobishop/quests/QuestsConfigLoader.java b/src/main/java/com/leonardobishop/quests/QuestsConfigLoader.java
index cd9c1345..b6517e5e 100644
--- a/src/main/java/com/leonardobishop/quests/QuestsConfigLoader.java
+++ b/src/main/java/com/leonardobishop/quests/QuestsConfigLoader.java
@@ -1,6 +1,6 @@
package com.leonardobishop.quests;
-import com.leonardobishop.quests.itemgetter.ItemGetter;
+import com.leonardobishop.quests.hooks.itemgetter.ItemGetter;
import com.leonardobishop.quests.obj.Options;
import com.leonardobishop.quests.obj.misc.QItemStack;
import com.leonardobishop.quests.quests.Category;
@@ -301,7 +301,7 @@ public class QuestsConfigLoader {
ItemStack is = plugin.getItemStack(path, config,
ItemGetter.Filter.DISPLAY_NAME, ItemGetter.Filter.LORE, ItemGetter.Filter.ENCHANTMENTS, ItemGetter.Filter.ITEM_FLAGS);
- return new QItemStack(name, loreNormal, loreStarted, is);
+ return new QItemStack(plugin, name, loreNormal, loreStarted, is);
}
public enum ConfigProblemDescriptions {
diff --git a/src/main/java/com/leonardobishop/quests/itemgetter/ItemGetter.java b/src/main/java/com/leonardobishop/quests/hooks/itemgetter/ItemGetter.java
index 444d63dc..a0d7545e 100644
--- a/src/main/java/com/leonardobishop/quests/itemgetter/ItemGetter.java
+++ b/src/main/java/com/leonardobishop/quests/hooks/itemgetter/ItemGetter.java
@@ -1,4 +1,4 @@
-package com.leonardobishop.quests.itemgetter;
+package com.leonardobishop.quests.hooks.itemgetter;
import com.leonardobishop.quests.Quests;
import org.bukkit.configuration.ConfigurationSection;
diff --git a/src/main/java/com/leonardobishop/quests/itemgetter/ItemGetterLatest.java b/src/main/java/com/leonardobishop/quests/hooks/itemgetter/ItemGetterLatest.java
index 8208417f..c33baac7 100644
--- a/src/main/java/com/leonardobishop/quests/itemgetter/ItemGetterLatest.java
+++ b/src/main/java/com/leonardobishop/quests/hooks/itemgetter/ItemGetterLatest.java
@@ -1,4 +1,4 @@
-package com.leonardobishop.quests.itemgetter;
+package com.leonardobishop.quests.hooks.itemgetter;
import com.leonardobishop.quests.Quests;
import org.bukkit.ChatColor;
diff --git a/src/main/java/com/leonardobishop/quests/itemgetter/ItemGetter_1_13.java b/src/main/java/com/leonardobishop/quests/hooks/itemgetter/ItemGetter_1_13.java
index 08a48e2e..0e0850cd 100644
--- a/src/main/java/com/leonardobishop/quests/itemgetter/ItemGetter_1_13.java
+++ b/src/main/java/com/leonardobishop/quests/hooks/itemgetter/ItemGetter_1_13.java
@@ -1,4 +1,4 @@
-package com.leonardobishop.quests.itemgetter;
+package com.leonardobishop.quests.hooks.itemgetter;
import com.leonardobishop.quests.Quests;
import org.bukkit.ChatColor;
diff --git a/src/main/java/com/leonardobishop/quests/itemgetter/ItemGetter_Late_1_8.java b/src/main/java/com/leonardobishop/quests/hooks/itemgetter/ItemGetter_Late_1_8.java
index 33389165..f3523b70 100644
--- a/src/main/java/com/leonardobishop/quests/itemgetter/ItemGetter_Late_1_8.java
+++ b/src/main/java/com/leonardobishop/quests/hooks/itemgetter/ItemGetter_Late_1_8.java
@@ -1,4 +1,4 @@
-package com.leonardobishop.quests.itemgetter;
+package com.leonardobishop.quests.hooks.itemgetter;
import com.leonardobishop.quests.Quests;
import org.apache.commons.lang.StringUtils;
diff --git a/src/main/java/com/leonardobishop/quests/hooks/papi/PlaceholderAPIHook.java b/src/main/java/com/leonardobishop/quests/hooks/papi/PlaceholderAPIHook.java
new file mode 100644
index 00000000..4612d0af
--- /dev/null
+++ b/src/main/java/com/leonardobishop/quests/hooks/papi/PlaceholderAPIHook.java
@@ -0,0 +1,12 @@
+package com.leonardobishop.quests.hooks.papi;
+
+import me.clip.placeholderapi.PlaceholderAPI;
+import org.bukkit.entity.Player;
+
+public class PlaceholderAPIHook {
+
+ public String replacePlaceholders(Player player, String text) {
+ return PlaceholderAPI.setPlaceholders(player, text);
+ }
+
+}
diff --git a/src/main/java/com/leonardobishop/quests/title/Title.java b/src/main/java/com/leonardobishop/quests/hooks/title/Title.java
index 232c3b36..030d7455 100644
--- a/src/main/java/com/leonardobishop/quests/title/Title.java
+++ b/src/main/java/com/leonardobishop/quests/hooks/title/Title.java
@@ -1,4 +1,4 @@
-package com.leonardobishop.quests.title;
+package com.leonardobishop.quests.hooks.title;
import org.bukkit.entity.Player;
diff --git a/src/main/java/com/leonardobishop/quests/title/Title_Bukkit.java b/src/main/java/com/leonardobishop/quests/hooks/title/Title_Bukkit.java
index d05f815b..0f46771a 100644
--- a/src/main/java/com/leonardobishop/quests/title/Title_Bukkit.java
+++ b/src/main/java/com/leonardobishop/quests/hooks/title/Title_Bukkit.java
@@ -1,4 +1,4 @@
-package com.leonardobishop.quests.title;
+package com.leonardobishop.quests.hooks.title;
import org.bukkit.entity.Player;
diff --git a/src/main/java/com/leonardobishop/quests/title/Title_BukkitNoTimings.java b/src/main/java/com/leonardobishop/quests/hooks/title/Title_BukkitNoTimings.java
index 6bbbc32f..92ffdd16 100644
--- a/src/main/java/com/leonardobishop/quests/title/Title_BukkitNoTimings.java
+++ b/src/main/java/com/leonardobishop/quests/hooks/title/Title_BukkitNoTimings.java
@@ -1,4 +1,4 @@
-package com.leonardobishop.quests.title;
+package com.leonardobishop.quests.hooks.title;
import org.bukkit.entity.Player;
diff --git a/src/main/java/com/leonardobishop/quests/title/Title_Other.java b/src/main/java/com/leonardobishop/quests/hooks/title/Title_Other.java
index e4e998b9..ab7b7bf2 100644
--- a/src/main/java/com/leonardobishop/quests/title/Title_Other.java
+++ b/src/main/java/com/leonardobishop/quests/hooks/title/Title_Other.java
@@ -1,4 +1,4 @@
-package com.leonardobishop.quests.title;
+package com.leonardobishop.quests.hooks.title;
import org.bukkit.entity.Player;
diff --git a/src/main/java/com/leonardobishop/quests/obj/Options.java b/src/main/java/com/leonardobishop/quests/obj/Options.java
index 807269bd..b3afc73f 100644
--- a/src/main/java/com/leonardobishop/quests/obj/Options.java
+++ b/src/main/java/com/leonardobishop/quests/obj/Options.java
@@ -15,6 +15,7 @@ public enum Options {
GUI_HIDE_LOCKED("options.gui-hide-locked"),
GUI_HIDE_QUESTS_NOPERMISSION("options.gui-hide-quests-nopermission"),
GUI_HIDE_CATEGORIES_NOPERMISSION("options.gui-hide-categories-nopermission"),
+ GUI_USE_PLACEHOLDERAPI("options.gui-use-placeholderapi"),
GUITITLE_QUESTS_CATEGORY("options.guinames.quests-category"),
GUITITLE_QUESTS("options.guinames.quests-menu"),
GUITITLE_DAILY_QUESTS("options.guinames.daily-quests"),
diff --git a/src/main/java/com/leonardobishop/quests/obj/misc/QItemStack.java b/src/main/java/com/leonardobishop/quests/obj/misc/QItemStack.java
index f7eca148..20bb3eb7 100644
--- a/src/main/java/com/leonardobishop/quests/obj/misc/QItemStack.java
+++ b/src/main/java/com/leonardobishop/quests/obj/misc/QItemStack.java
@@ -1,9 +1,13 @@
package com.leonardobishop.quests.obj.misc;
+import com.leonardobishop.quests.Quests;
+import com.leonardobishop.quests.obj.Options;
import com.leonardobishop.quests.player.questprogressfile.QuestProgress;
import com.leonardobishop.quests.player.questprogressfile.QuestProgressFile;
import com.leonardobishop.quests.quests.Quest;
+import org.bukkit.Bukkit;
import org.bukkit.enchantments.Enchantment;
+import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemFlag;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
@@ -15,12 +19,15 @@ import java.util.regex.Pattern;
public class QItemStack {
+ private final Quests plugin;
+
private String name;
private List<String> loreNormal;
private List<String> loreStarted;
private ItemStack startingItemStack;
- public QItemStack(String name, List<String> loreNormal, List<String> loreStarted, ItemStack startingItemStack) {
+ public QItemStack(Quests plugin, String name, List<String> loreNormal, List<String> loreStarted, ItemStack startingItemStack) {
+ this.plugin = plugin;
this.name = name;
this.loreNormal = loreNormal;
this.loreStarted = loreStarted;
@@ -66,6 +73,8 @@ public class QItemStack {
ism.setDisplayName(name);
List<String> formattedLore = new ArrayList<>();
List<String> tempLore = new ArrayList<>(loreNormal);
+
+ Player player = Bukkit.getPlayer(questProgressFile.getPlayerUUID());
if (questProgressFile.hasStartedQuest(quest)) {
tempLore.addAll(loreStarted);
ism.addEnchant(Enchantment.ARROW_INFINITE, 1, true);
@@ -76,6 +85,9 @@ public class QItemStack {
}
}
+ if (plugin.getPlaceholderAPIHook() != null && Options.GUI_USE_PLACEHOLDERAPI.getBooleanValue()) {
+ ism.setDisplayName(plugin.getPlaceholderAPIHook().replacePlaceholders(player, ism.getDisplayName()));
+ }
if (questProgress != null) {
for (String s : tempLore) {
Matcher m = Pattern.compile("\\{([^}]+)}").matcher(s);
@@ -95,6 +107,9 @@ public class QItemStack {
}
}
}
+ if (plugin.getPlaceholderAPIHook() != null && Options.GUI_USE_PLACEHOLDERAPI.getBooleanValue()) {
+ s = plugin.getPlaceholderAPIHook().replacePlaceholders(player, s);
+ }
formattedLore.add(s);
}
}
diff --git a/src/main/java/com/leonardobishop/quests/obj/misc/QMenuCancel.java b/src/main/java/com/leonardobishop/quests/obj/misc/QMenuCancel.java
index 703827fd..72445aaf 100644
--- a/src/main/java/com/leonardobishop/quests/obj/misc/QMenuCancel.java
+++ b/src/main/java/com/leonardobishop/quests/obj/misc/QMenuCancel.java
@@ -77,22 +77,4 @@ public class QMenuCancel implements QMenu {
return superMenu;
}
- public ItemStack replaceItemStack(ItemStack is, Map<String, String> placeholders) {
- ItemStack newItemStack = is.clone();
- List<String> lore = newItemStack.getItemMeta().getLore();
- List<String> newLore = new ArrayList<>();
- ItemMeta ism = newItemStack.getItemMeta();
- if (lore != null) {
- for (String s : lore) {
- for (Map.Entry<String, String> entry : placeholders.entrySet()) {
- s = s.replace(entry.getKey(), entry.getValue());
- ism.setDisplayName(ism.getDisplayName().replace(entry.getKey(), entry.getValue()));
- }
- newLore.add(s);
- }
- }
- ism.setLore(newLore);
- newItemStack.setItemMeta(ism);
- return newItemStack;
- }
}
diff --git a/src/main/java/com/leonardobishop/quests/obj/misc/QMenuCategory.java b/src/main/java/com/leonardobishop/quests/obj/misc/QMenuCategory.java
index 24d708e2..86f4d57f 100644
--- a/src/main/java/com/leonardobishop/quests/obj/misc/QMenuCategory.java
+++ b/src/main/java/com/leonardobishop/quests/obj/misc/QMenuCategory.java
@@ -6,9 +6,12 @@ import com.leonardobishop.quests.player.QPlayer;
import com.leonardobishop.quests.quests.Category;
import org.bukkit.Bukkit;
import org.bukkit.Material;
+import org.bukkit.entity.Player;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
+import org.bukkit.inventory.meta.ItemMeta;
+import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@@ -17,11 +20,13 @@ import java.util.List;
*/
public class QMenuCategory implements QMenu {
+ private final Quests plugin;
private final int pageSize = 45;
private final HashMap<Integer, QMenuQuest> slotsToMenuQuest = new HashMap<>();
private final QPlayer owner;
- public QMenuCategory(QPlayer owner) {
+ public QMenuCategory(Quests plugin, QPlayer owner) {
+ this.plugin = plugin;
this.owner = owner;
}
@@ -61,12 +66,12 @@ public class QMenuCategory implements QMenu {
if (slotsToMenuQuest.containsKey(pointer)) {
Category category = Quests.get().getQuestManager().getCategoryById(slotsToMenuQuest.get(pointer).getCategoryName());
if (category != null) {
- inventory.setItem(pointer, category.getDisplayItem());
+ inventory.setItem(pointer, replaceItemStack(category.getDisplayItem()));
}
}
}
- inventory.setItem(49, pageIs);
+ inventory.setItem(49, replaceItemStack(pageIs));
if (Options.TRIM_GUI_SIZE.getBooleanValue() && page == 1) {
int slotsUsed = 0;
@@ -85,7 +90,7 @@ public class QMenuCategory implements QMenu {
Inventory trimmedInventory = Bukkit.createInventory(null, inventorySize, title);
for (int slot = 0; slot < pageMax; slot++) {
- if (slot >= trimmedInventory.getSize()){
+ if (slot >= trimmedInventory.getSize()) {
break;
}
trimmedInventory.setItem(slot, inventory.getItem(slot));
@@ -97,4 +102,25 @@ public class QMenuCategory implements QMenu {
}
+ public ItemStack replaceItemStack(ItemStack is) {
+ if (plugin.getPlaceholderAPIHook() != null && Options.GUI_USE_PLACEHOLDERAPI.getBooleanValue()) {
+ ItemStack newItemStack = is.clone();
+ List<String> lore = newItemStack.getItemMeta().getLore();
+ List<String> newLore = new ArrayList<>();
+ ItemMeta ism = newItemStack.getItemMeta();
+ Player player = Bukkit.getPlayer(owner.getUuid());
+ ism.setDisplayName(plugin.getPlaceholderAPIHook().replacePlaceholders(player, ism.getDisplayName()));
+ if (lore != null) {
+ for (String s : lore) {
+ s = plugin.getPlaceholderAPIHook().replacePlaceholders(player, s);
+ newLore.add(s);
+ }
+ }
+ ism.setLore(newLore);
+ newItemStack.setItemMeta(ism);
+ return newItemStack;
+ }
+ return is;
+ }
+
}
diff --git a/src/main/java/com/leonardobishop/quests/obj/misc/QMenuDaily.java b/src/main/java/com/leonardobishop/quests/obj/misc/QMenuDaily.java
index 5277d195..0e0cc132 100644
--- a/src/main/java/com/leonardobishop/quests/obj/misc/QMenuDaily.java
+++ b/src/main/java/com/leonardobishop/quests/obj/misc/QMenuDaily.java
@@ -99,22 +99,6 @@ public class QMenuDaily implements QMenu {
return Bukkit.createInventory(null, 27, title);
}
- public ItemStack replaceItemStack(ItemStack is, Map<String, String> placeholders) {
- ItemStack newItemStack = is.clone();
- List<String> lore = newItemStack.getItemMeta().getLore();
- List<String> newLore = new ArrayList<>();
- for (String s : lore) {
- for (Map.Entry<String, String> entry : placeholders.entrySet()) {
- s = s.replace(entry.getKey(), entry.getValue());
- }
- newLore.add(s);
- }
- ItemMeta ism = newItemStack.getItemMeta();
- ism.setLore(newLore);
- newItemStack.setItemMeta(ism);
- return newItemStack;
- }
-
//Implement too
public QMenuCategory getSuperMenu() {
return this.superMenu;
diff --git a/src/main/java/com/leonardobishop/quests/obj/misc/QMenuQuest.java b/src/main/java/com/leonardobishop/quests/obj/misc/QMenuQuest.java
index 243e08d2..dbaf23ff 100644
--- a/src/main/java/com/leonardobishop/quests/obj/misc/QMenuQuest.java
+++ b/src/main/java/com/leonardobishop/quests/obj/misc/QMenuQuest.java
@@ -7,6 +7,7 @@ import com.leonardobishop.quests.player.QPlayer;
import com.leonardobishop.quests.player.questprogressfile.QuestProgress;
import com.leonardobishop.quests.quests.Quest;
import org.bukkit.Bukkit;
+import org.bukkit.entity.Player;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
@@ -19,6 +20,7 @@ import java.util.concurrent.TimeUnit;
*/
public class QMenuQuest implements QMenu {
+ private final Quests plugin;
private final HashMap<Integer, String> slotsToQuestIds = new HashMap<>();
private final QMenuCategory superMenu;
private final String categoryName;
@@ -31,7 +33,8 @@ public class QMenuQuest implements QMenu {
private int currentPage = -1;
private boolean backButtonEnabled = true;
- public QMenuQuest(QPlayer owner, String categoryName, QMenuCategory superMenu) {
+ public QMenuQuest(Quests plugin, QPlayer owner, String categoryName, QMenuCategory superMenu) {
+ this.plugin = plugin;
this.owner = owner;
this.categoryName = categoryName;
this.superMenu = superMenu;
@@ -134,7 +137,8 @@ public class QMenuQuest implements QMenu {
ItemStack is = replaceItemStack(Items.QUEST_COOLDOWN.getItem(), placeholders);
inventory.setItem(invSlot, is);
} else {
- inventory.setItem(invSlot, Quests.get().getQuestManager().getQuestById(quest.getId()).getDisplayItem().toItemStack(quest, owner.getQuestProgressFile(), questProgress));
+ inventory.setItem(invSlot, replaceItemStack(Quests.get().getQuestManager().getQuestById(
+ quest.getId()).getDisplayItem().toItemStack(quest, owner.getQuestProgressFile(), questProgress)));
}
}
invSlot++;
@@ -215,20 +219,33 @@ public class QMenuQuest implements QMenu {
return superMenu;
}
+ public ItemStack replaceItemStack(ItemStack is) {
+ return replaceItemStack(is, Collections.emptyMap());
+ }
+
public ItemStack replaceItemStack(ItemStack is, Map<String, String> placeholders) {
ItemStack newItemStack = is.clone();
List<String> lore = newItemStack.getItemMeta().getLore();
List<String> newLore = new ArrayList<>();
ItemMeta ism = newItemStack.getItemMeta();
+ Player player = Bukkit.getPlayer(owner.getUuid());
if (lore != null) {
for (String s : lore) {
for (Map.Entry<String, String> entry : placeholders.entrySet()) {
s = s.replace(entry.getKey(), entry.getValue());
- ism.setDisplayName(ism.getDisplayName().replace(entry.getKey(), entry.getValue()));
+ if (plugin.getPlaceholderAPIHook() != null && Options.GUI_USE_PLACEHOLDERAPI.getBooleanValue()) {
+ s = plugin.getPlaceholderAPIHook().replacePlaceholders(player, s);
+ }
}
newLore.add(s);
}
}
+ for (Map.Entry<String, String> entry : placeholders.entrySet()) {
+ ism.setDisplayName(ism.getDisplayName().replace(entry.getKey(), entry.getValue()));
+ if (plugin.getPlaceholderAPIHook() != null && Options.GUI_USE_PLACEHOLDERAPI.getBooleanValue()) {
+ ism.setDisplayName(plugin.getPlaceholderAPIHook().replacePlaceholders(player, ism.getDisplayName()));
+ }
+ }
ism.setLore(newLore);
newItemStack.setItemMeta(ism);
return newItemStack;
diff --git a/src/main/java/com/leonardobishop/quests/player/QPlayer.java b/src/main/java/com/leonardobishop/quests/player/QPlayer.java
index 84653040..6c270fa1 100644
--- a/src/main/java/com/leonardobishop/quests/player/QPlayer.java
+++ b/src/main/java/com/leonardobishop/quests/player/QPlayer.java
@@ -46,7 +46,7 @@ public class QPlayer {
}
// Using `this` instead of searching again for this QPlayer
- QMenuQuest qMenuQuest = new QMenuQuest(this, category.getId(), superMenu);
+ QMenuQuest qMenuQuest = new QMenuQuest(plugin, this, category.getId(), superMenu);
List<Quest> quests = new ArrayList<>();
for (String questid : category.getRegisteredQuestIds()) {
Quest quest = plugin.getQuestManager().getQuestById(questid);
@@ -87,10 +87,10 @@ public class QPlayer {
}
if (Options.CATEGORIES_ENABLED.getBooleanValue()) {
- QMenuCategory qMenuCategory = new QMenuCategory(plugin.getPlayerManager().getPlayer(player.getUniqueId()));
+ QMenuCategory qMenuCategory = new QMenuCategory(plugin, plugin.getPlayerManager().getPlayer(player.getUniqueId()));
List<QMenuQuest> questMenus = new ArrayList<>();
for (Category category : plugin.getQuestManager().getCategories()) {
- QMenuQuest qMenuQuest = new QMenuQuest(plugin.getPlayerManager().getPlayer(player.getUniqueId()), category.getId(), qMenuCategory);
+ QMenuQuest qMenuQuest = new QMenuQuest(plugin, plugin.getPlayerManager().getPlayer(player.getUniqueId()), category.getId(), qMenuCategory);
List<Quest> quests = new ArrayList<>();
for (String questid : category.getRegisteredQuestIds()) {
Quest quest = plugin.getQuestManager().getQuestById(questid);
@@ -106,7 +106,7 @@ public class QPlayer {
player.openInventory(qMenuCategory.toInventory(1));
EventInventory.track(player.getUniqueId(), qMenuCategory);
} else {
- QMenuQuest qMenuQuest = new QMenuQuest(plugin.getPlayerManager().getPlayer(player.getUniqueId()), "", null);
+ QMenuQuest qMenuQuest = new QMenuQuest(plugin, plugin.getPlayerManager().getPlayer(player.getUniqueId()), "", null);
List<Quest> quests = new ArrayList<>();
for (Map.Entry<String, Quest> entry : plugin.getQuestManager().getQuests().entrySet()) {
quests.add(entry.getValue());