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()); }