diff --git a/multichat/releases/1.9.5/multichat-1.9.5-dev.1.jar b/multichat/releases/1.9.5/multichat-1.9.5-dev.1.jar new file mode 100644 index 00000000..01a62b3c Binary files /dev/null and b/multichat/releases/1.9.5/multichat-1.9.5-dev.1.jar differ diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/MultiChat.java b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/MultiChat.java index bc043ef1..22ca0b7f 100644 --- a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/MultiChat.java +++ b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/MultiChat.java @@ -54,6 +54,7 @@ public class MultiChat extends Plugin implements Listener { public static final String[] ALLOWED_VERSIONS = new String[] { LATEST_VERSION, + "1.9.5", "1.9.4", "1.9.3", "1.9.2", diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/local/spigot/LocalSpigotMetaManager.java b/multichat/src/main/java/xyz/olivermartin/multichat/local/spigot/LocalSpigotMetaManager.java index 2c5a0f01..9ceebfdf 100644 --- a/multichat/src/main/java/xyz/olivermartin/multichat/local/spigot/LocalSpigotMetaManager.java +++ b/multichat/src/main/java/xyz/olivermartin/multichat/local/spigot/LocalSpigotMetaManager.java @@ -8,6 +8,7 @@ import net.milkbowl.vault.chat.Chat; import xyz.olivermartin.multichat.bungee.MultiChatUtil; +import xyz.olivermartin.multichat.local.common.LocalConsoleLogger; import xyz.olivermartin.multichat.local.common.LocalMetaManager; import xyz.olivermartin.multichat.local.common.MultiChatLocal; import xyz.olivermartin.multichat.local.spigot.hooks.LocalSpigotVaultHook; @@ -72,6 +73,8 @@ public String getWorld(UUID uuid) { @Override public String getDisplayName(UUID uuid) { + LocalConsoleLogger logger = MultiChatLocal.getInstance().getConsoleLogger(); + Player player = Bukkit.getPlayer(uuid); if (player == null) return ""; @@ -79,15 +82,31 @@ public String getDisplayName(UUID uuid) { // If MultiChat is setting the display name... if (MultiChatLocal.getInstance().getDataStore().isSetDisplayName()) { + logger.debug("[LocalSpigotMetaManager] We are setting the display name!"); + String displayNameFormat = MultiChatLocal.getInstance().getDataStore().getDisplayNameFormatLastVal(); + logger.debug("[LocalSpigotMetaManager] Format = " + displayNameFormat); + logger.debug("[LocalSpigotMetaManager] Format (using & only) = " + displayNameFormat.replaceAll("(?i)§(?=[a-f,0-9,k-o,r,x])", "&")); + // TODO This stuff could be refactored as it is duplicated between Spigot and Sponge displayNameFormat = displayNameFormat.replaceAll("%NICK%", getNick(uuid)); displayNameFormat = displayNameFormat.replaceAll("%NAME%", player.getName()); displayNameFormat = displayNameFormat.replaceAll("%PREFIX%", getPrefix(uuid)); displayNameFormat = displayNameFormat.replaceAll("%SUFFIX%", getSuffix(uuid)); + + logger.debug("[LocalSpigotMetaManager] Format with placeholders = " + displayNameFormat); + logger.debug("[LocalSpigotMetaManager] Format with placeholders (using & only) = " + displayNameFormat.replaceAll("(?i)§(?=[a-f,0-9,k-o,r,x])", "&")); + displayNameFormat = MultiChatUtil.reformatRGB(displayNameFormat); - displayNameFormat = displayNameFormat.replaceAll("&(?=[a-f,0-9,k-o,r,x])", "§"); + + logger.debug("[LocalSpigotMetaManager] Format after reformatting RGB = " + displayNameFormat); + logger.debug("[LocalSpigotMetaManager] Format after reformatting RGB (using & only) = " + displayNameFormat.replaceAll("(?i)§(?=[a-f,0-9,k-o,r,x])", "&")); + + displayNameFormat = displayNameFormat.replaceAll("(?i)&(?=[a-f,0-9,k-o,r,x])", "§"); + + logger.debug("[LocalSpigotMetaManager] FINAL = " + displayNameFormat); + logger.debug("[LocalSpigotMetaManager] FINAL (using & only) = " + displayNameFormat.replaceAll("(?i)§(?=[a-f,0-9,k-o,r,x])", "&")); // LEGACY HACK if (MultiChatLocal.getInstance().getDataStore().isLegacy()) { diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/local/spigot/LocalSpigotPlaceholderManager.java b/multichat/src/main/java/xyz/olivermartin/multichat/local/spigot/LocalSpigotPlaceholderManager.java index 10a56029..cf9975ae 100644 --- a/multichat/src/main/java/xyz/olivermartin/multichat/local/spigot/LocalSpigotPlaceholderManager.java +++ b/multichat/src/main/java/xyz/olivermartin/multichat/local/spigot/LocalSpigotPlaceholderManager.java @@ -2,6 +2,7 @@ import java.util.UUID; +import xyz.olivermartin.multichat.bungee.MultiChatUtil; import xyz.olivermartin.multichat.local.common.LocalPlaceholderManager; import xyz.olivermartin.multichat.local.common.MultiChatLocalPlatform; @@ -14,6 +15,9 @@ public LocalSpigotPlaceholderManager() { @Override public String buildChatFormat(UUID uuid, String format) { + // Reformat any hex codes in the format + format = MultiChatUtil.reformatRGB(format); + // RESPECT OTHER PLUGIN'S DISPLAY NAMES FIRST! (Allows for factions etc.) format = format.replace("%DISPLAYNAME%", "%1$s"); diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/local/sponge/LocalSpongeMetaManager.java b/multichat/src/main/java/xyz/olivermartin/multichat/local/sponge/LocalSpongeMetaManager.java index bcb10967..18acdbcf 100644 --- a/multichat/src/main/java/xyz/olivermartin/multichat/local/sponge/LocalSpongeMetaManager.java +++ b/multichat/src/main/java/xyz/olivermartin/multichat/local/sponge/LocalSpongeMetaManager.java @@ -93,7 +93,7 @@ public String getDisplayName(UUID uuid) { displayNameFormat = displayNameFormat.replaceAll("%PREFIX%", getPrefix(uuid)); displayNameFormat = displayNameFormat.replaceAll("%SUFFIX%", getSuffix(uuid)); displayNameFormat = MultiChatUtil.reformatRGB(displayNameFormat); - displayNameFormat = displayNameFormat.replaceAll("&(?=[a-f,0-9,k-o,r,x])", "§"); + displayNameFormat = displayNameFormat.replaceAll("(?i)&(?=[a-f,0-9,k-o,r,x])", "§"); displayNameFormat = MultiChatUtil.approximateHexCodes(displayNameFormat); diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/local/sponge/LocalSpongePlaceholderManager.java b/multichat/src/main/java/xyz/olivermartin/multichat/local/sponge/LocalSpongePlaceholderManager.java index 2dad6278..ad5963e7 100644 --- a/multichat/src/main/java/xyz/olivermartin/multichat/local/sponge/LocalSpongePlaceholderManager.java +++ b/multichat/src/main/java/xyz/olivermartin/multichat/local/sponge/LocalSpongePlaceholderManager.java @@ -2,6 +2,7 @@ import java.util.UUID; +import xyz.olivermartin.multichat.bungee.MultiChatUtil; import xyz.olivermartin.multichat.local.common.LocalPlaceholderManager; import xyz.olivermartin.multichat.local.common.MultiChatLocalPlatform; @@ -13,7 +14,11 @@ public LocalSpongePlaceholderManager() { @Override public String buildChatFormat(UUID uuid, String format) { - return processMultiChatPlaceholders(uuid, format).replaceAll("&(?=[a-f,0-9,k-o,r])", "§"); + // Reformat any hex codes in the format + format = MultiChatUtil.reformatRGB(format); + format = processMultiChatPlaceholders(uuid, format).replaceAll("(?i)&(?=[a-f,0-9,k-o,r,x])", "§"); + format = MultiChatUtil.approximateHexCodes(format); + return format; } }