From d35301d1e5da19b7ff9b9245f0397ea1b264bffd Mon Sep 17 00:00:00 2001 From: PikaMug <2267126+PikaMug@users.noreply.github.com> Date: Thu, 15 Feb 2024 12:31:34 -0500 Subject: [PATCH] Process custom requirement display placeholders --- .../pikamug/quests/player/BukkitQuester.java | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/core/src/main/java/me/pikamug/quests/player/BukkitQuester.java b/core/src/main/java/me/pikamug/quests/player/BukkitQuester.java index dcf9d76f0..ad53d750b 100644 --- a/core/src/main/java/me/pikamug/quests/player/BukkitQuester.java +++ b/core/src/main/java/me/pikamug/quests/player/BukkitQuester.java @@ -1129,12 +1129,23 @@ public class BukkitQuester implements Quester { for (final Entry> m : requirements.getCustomRequirements().entrySet()) { for (final CustomRequirement cr : plugin.getCustomRequirements()) { if (cr.getName().equalsIgnoreCase(m.getKey())) { + String message = cr.getDisplay() != null ? cr.getDisplay() : m.getKey(); + for (Entry prompt : cr.getData().entrySet()) { + final String replacement = "%" + prompt.getKey() + "%"; + try { + if (message.contains(replacement)) { + message = message.replace(replacement, String.valueOf(m.getValue().get(prompt.getKey()))); + } + } catch (final NullPointerException ne) { + plugin.getLogger().severe("Unable to gather display for " + cr.getName() + " on " + + quest.getName()); + ne.printStackTrace(); + } + } if (cr.testRequirement(getPlayer().getUniqueId(), m.getValue())) { - finishedRequirements.add(ChatColor.GREEN + "" - + (cr.getDisplay() != null ? cr.getDisplay() : m.getKey())); + finishedRequirements.add(ChatColor.GREEN + "" + message); } else { - unfinishedRequirements.add(ChatColor.GRAY + "" - + (cr.getDisplay() != null ? cr.getDisplay() : m.getKey())); + unfinishedRequirements.add(ChatColor.GRAY + "" + message); } } }