From 90bf0286244ef0523131a5652dad1ab6a0592d29 Mon Sep 17 00:00:00 2001
From: PikaMug <2267126+PikaMug@users.noreply.github.com>
Date: Tue, 6 Jun 2023 22:51:28 -0400
Subject: [PATCH] Reveal display names and update library, fixes #2116
---
core/pom.xml | 2 +-
.../java/me/blackvein/quests/Quester.java | 27 +++++++++----------
.../quests/convo/generic/ItemStackPrompt.java | 6 +++--
.../me/blackvein/quests/util/ItemUtil.java | 3 +++
4 files changed, 21 insertions(+), 17 deletions(-)
diff --git a/core/pom.xml b/core/pom.xml
index a69adb276..80e7af6be 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -149,7 +149,7 @@
com.github.PikaMug
LocaleLib
- 3.4
+ 3.5
xyz.upperlevel.spigot.book
diff --git a/core/src/main/java/me/blackvein/quests/Quester.java b/core/src/main/java/me/blackvein/quests/Quester.java
index 79cfb4f99..17dbb9f2f 100644
--- a/core/src/main/java/me/blackvein/quests/Quester.java
+++ b/core/src/main/java/me/blackvein/quests/Quester.java
@@ -2181,29 +2181,28 @@ public class Quester implements IQuester {
}
return;
}
- final Settings settings = plugin.getSettings();
final LocaleManager localeManager = plugin.getLocaleManager();
- if (settings.canTranslateNames() && localeManager == null) {
+ final Settings settings = plugin.getSettings();
+ if (localeManager == null && settings.canTranslateNames()) {
settings.setTranslateNames(false);
plugin.getLogger().severe("Problem with locale manager! Item name translation disabled.");
}
- for (BukkitObjective objective : q.getCurrentObjectivesTemp(quest, false, false)) {
+ for (final BukkitObjective objective : q.getCurrentObjectivesTemp(quest, false, false)) {
final String message = "- " + objective.getMessage();
if (objective.getProgressAsItem() != null && objective.getGoalAsItem() != null) {
- ItemStack progress = objective.getProgressAsItem();
- ItemStack goal = objective.getGoalAsItem();
+ final ItemStack progress = objective.getProgressAsItem();
+ final ItemStack goal = objective.getGoalAsItem();
if (!settings.canShowCompletedObjs() && progress.getAmount() >= goal.getAmount()) {
continue;
}
- if (settings.canTranslateNames() && goal.hasItemMeta()) {
- // Bukkit version is 1.9+
- localeManager.sendMessage(quester.getPlayer(), message, goal.getType(), goal.getDurability(),
- goal.getEnchantments(), goal.getItemMeta());
- } else if (settings.canTranslateNames() && !goal.hasItemMeta()
+ if (localeManager != null && settings.canTranslateNames() && !goal.hasItemMeta()
&& Material.getMaterial("LINGERING_POTION") == null) {
- // Bukkit version is below 1.9
- localeManager.sendMessage(quester.getPlayer(), message, goal.getType(), goal.getDurability(),
- goal.getEnchantments());
+ // Bukkit version is below 1.9 and item has no metadata
+ localeManager.sendMessage(quester.getPlayer(), message, goal);
+ } else if (localeManager != null && settings.canTranslateNames() && goal.getItemMeta() != null
+ && !goal.getItemMeta().hasDisplayName() && !goal.getType().equals(Material.WRITTEN_BOOK)) {
+ // Bukkit version is 1.9+ and item lacks custom name
+ localeManager.sendMessage(quester.getPlayer(), message, goal);
} else {
if (goal.getEnchantments().isEmpty()) {
quester.sendMessage(message.replace("- ", ItemUtil.getName(goal))
@@ -2224,7 +2223,7 @@ public class Quester implements IQuester {
if (!settings.canShowCompletedObjs() && progress.getCount() >= goal.getCount()) {
continue;
}
- if (settings.canTranslateNames()) {
+ if (localeManager != null && settings.canTranslateNames()) {
localeManager.sendMessage(quester.getPlayer(), message, goal.getEntityType(), null);
} else {
quester.sendMessage(message.replace("", MiscUtil.getProperMobName(goal.getEntityType())));
diff --git a/core/src/main/java/me/blackvein/quests/convo/generic/ItemStackPrompt.java b/core/src/main/java/me/blackvein/quests/convo/generic/ItemStackPrompt.java
index 5e51fbfa4..a8261e233 100644
--- a/core/src/main/java/me/blackvein/quests/convo/generic/ItemStackPrompt.java
+++ b/core/src/main/java/me/blackvein/quests/convo/generic/ItemStackPrompt.java
@@ -293,8 +293,10 @@ public class ItemStackPrompt extends QuestsEditorNumericPrompt {
if (is.hasItemMeta()) {
final ItemMeta meta = is.getItemMeta();
if (meta != null) {
- final String display = meta.getDisplayName().replace(ChatColor.COLOR_CHAR, '&');
- context.setSessionData("tempDisplay", display);
+ if (meta.hasDisplayName()) {
+ final String display = meta.getDisplayName().replace(ChatColor.COLOR_CHAR, '&');
+ context.setSessionData("tempDisplay", display);
+ }
if (meta.getLore() != null) {
final LinkedList lore = new LinkedList<>(meta.getLore());
context.setSessionData("tempLore", lore);
diff --git a/core/src/main/java/me/blackvein/quests/util/ItemUtil.java b/core/src/main/java/me/blackvein/quests/util/ItemUtil.java
index 59dbd03a7..b054de6e0 100644
--- a/core/src/main/java/me/blackvein/quests/util/ItemUtil.java
+++ b/core/src/main/java/me/blackvein/quests/util/ItemUtil.java
@@ -600,6 +600,9 @@ public class ItemUtil {
final String text;
if (is.getItemMeta() != null && is.getItemMeta().hasDisplayName()) {
text = "" + ChatColor.DARK_AQUA + ChatColor.ITALIC + is.getItemMeta().getDisplayName();
+ } else if (is.getType().equals(Material.WRITTEN_BOOK)) {
+ final BookMeta bookMeta = (BookMeta) is.getItemMeta();
+ text = "" + ChatColor.DARK_AQUA + ChatColor.LIGHT_PURPLE + bookMeta.getTitle();
} else {
text = ChatColor.AQUA + getPrettyItemName(is.getType().name());
}