From d83bc55eec5e4fb4832ce75766c5c308f2ca4c50 Mon Sep 17 00:00:00 2001 From: sebampuero Date: Sat, 15 Mar 2025 20:39:12 +0100 Subject: [PATCH] feat: fix function for several placeholders. It was appending wrongly. Use version11 class for updater. --- .../toolstats/tools/config/ConfigTools.java | 41 +++++++------------ .../tools/config/versions/Version11.java | 4 +- 2 files changed, 17 insertions(+), 28 deletions(-) diff --git a/src/main/java/lol/hyper/toolstats/tools/config/ConfigTools.java b/src/main/java/lol/hyper/toolstats/tools/config/ConfigTools.java index a6d89fe..a176dc1 100644 --- a/src/main/java/lol/hyper/toolstats/tools/config/ConfigTools.java +++ b/src/main/java/lol/hyper/toolstats/tools/config/ConfigTools.java @@ -152,39 +152,28 @@ public class ConfigTools { return null; } - Pattern pattern = Pattern.compile("\\{([^}]+)\\}"); + Pattern pattern = Pattern.compile("\\{([^}]+)\\}(\\S*)\\s*"); Matcher matcher = pattern.matcher(lore); - StringBuffer result = new StringBuffer(); - + StringBuilder result = new StringBuilder(); + int lastEnd = 0; + while (matcher.find()) { String placeholder = matcher.group(1); + String unit = matcher.group(2); + + result.append(lore, lastEnd, matcher.start()); + if (placeHoldersValues.containsKey(placeholder)) { - matcher.appendReplacement(result, placeHoldersValues.get(placeholder)); - } else { - // Placeholder not found in our time values, so remove it and any unit suffix - // Find the next non-alphanumeric character after this placeholder to remove the unit - int end = matcher.end(); - while (end < lore.length() && - !Character.isWhitespace(lore.charAt(end)) && - !lore.substring(end, end + 1).matches("[^a-zA-Z]")) { - end++; - } - - matcher.appendReplacement(result, ""); - - // Remove trailing space if there is one - if (end < lore.length() && Character.isWhitespace(lore.charAt(end))) { - // Skip this space in the next append - end++; - } - - // Adjust region to char after skipped placeholder - matcher.region(end, lore.length()); + result.append(placeHoldersValues.get(placeholder)).append(unit).append(" "); } + + // Update lastEnd to end of the match + lastEnd = matcher.end(); + } + if (lastEnd < lore.length()) { + result.append(lore.substring(lastEnd)); } - - matcher.appendTail(result); Component component; // Clean output text diff --git a/src/main/java/lol/hyper/toolstats/tools/config/versions/Version11.java b/src/main/java/lol/hyper/toolstats/tools/config/versions/Version11.java index 68266e8..b433add 100644 --- a/src/main/java/lol/hyper/toolstats/tools/config/versions/Version11.java +++ b/src/main/java/lol/hyper/toolstats/tools/config/versions/Version11.java @@ -86,9 +86,9 @@ public class Version11 { toolStats.logger.info("Adding enabled.damage-done.bow to config.yml"); toolStats.logger.info("Adding enabled.damage-done.mace to config.yml"); - toolStats.logger.info("Changing messages.flight-time to new format"); + toolStats.logger.info("Updating entry for messages.flight-time"); toolStats.config.set("messages.flight-time", "&7Flight time: &8{years}y {months}m {days}d {hours}h {minutes}m {seconds}s"); - + // save the config and reload it try { toolStats.config.save("plugins" + File.separator + "ToolStats" + File.separator + "config.yml");