From 67ea50ea7280688aa508fb133e25038e1cc167e3 Mon Sep 17 00:00:00 2001 From: Zak Ford Date: Thu, 24 Jan 2013 14:34:35 -0500 Subject: [PATCH] Prevent replacement of {\d+} sequences in chat.format and remove stray ' --- Essentials/src/com/earth2me/essentials/Settings.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Essentials/src/com/earth2me/essentials/Settings.java b/Essentials/src/com/earth2me/essentials/Settings.java index b88ba9e63a..9df8b6291e 100644 --- a/Essentials/src/com/earth2me/essentials/Settings.java +++ b/Essentials/src/com/earth2me/essentials/Settings.java @@ -410,13 +410,15 @@ public MessageFormat getChatFormat(String group) String format = config.getString("chat.group-formats." + (group == null ? "Default" : group), config.getString("chat.format", "&7[{GROUP}]&f {DISPLAYNAME}&7:&f {MESSAGE}")); format = Util.replaceFormat(format); + format = format.replaceAll("'", "''"); // escape quotes + format = format.replaceAll("\\{(\\d+)\\}", "'{'$1'}'"); // quote {\d+} sequences format = format.replace("{DISPLAYNAME}", "%1$s"); format = format.replace("{GROUP}", "{0}"); format = format.replace("{MESSAGE}", "%2$s"); format = format.replace("{WORLDNAME}", "{1}"); format = format.replace("{SHORTWORLDNAME}", "{2}"); - format = format.replaceAll("'", "''"); - format = format.replaceAll("\\{(\\D*?)\\}", "\\'{$1\\}'"); + format = format.replaceAll("(?:^|(?<=[^\\d'])|(?<=\\d'\\}'))([{}][{}']*)(?:$|(?=[^\\d'])|(?<='\\{'\\d))", "'$1'"); // quote the rest of the braces + format = format.replaceAll("'([}{])''('*)([}{])'", "'$1$2$3'"); // cleanup extra '' format = "§r".concat(format); mFormat = new MessageFormat(format); chatFormats.put(group, mFormat);