diff --git a/build.gradle b/build.gradle index beb25b4..d34f034 100644 --- a/build.gradle +++ b/build.gradle @@ -3,7 +3,7 @@ plugins { } group = 'com.loki' -version = '1.5.2' +version = '1.5.3' repositories { mavenCentral() @@ -42,7 +42,7 @@ test { } jar { - archiveFileName = 'LoChat-1.5.2.jar' + archiveFileName = 'LoChat-1.5.3.jar' from { configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) } } diff --git a/src/main/java/com/loki/lochat/config/MessageConfig.java b/src/main/java/com/loki/lochat/config/MessageConfig.java index 322877a..70ec06f 100644 --- a/src/main/java/com/loki/lochat/config/MessageConfig.java +++ b/src/main/java/com/loki/lochat/config/MessageConfig.java @@ -39,8 +39,8 @@ public class MessageConfig { for (int i = 0; i < replacements.length - 1; i += 2) { message = message.replace(replacements[i], replacements[i + 1]); } - // Убираем legacy коды если они есть - message = ChatFormatter.convertAllColors(message); + // Убираем все цветовые коды и конвертируем заново + message = ChatFormatter.stripAllColors(message); return message; } diff --git a/src/main/java/com/loki/lochat/utils/ChatFormatter.java b/src/main/java/com/loki/lochat/utils/ChatFormatter.java index ee80853..666cd0f 100644 --- a/src/main/java/com/loki/lochat/utils/ChatFormatter.java +++ b/src/main/java/com/loki/lochat/utils/ChatFormatter.java @@ -17,6 +17,7 @@ public class ChatFormatter { // Паттерны для цветов private static final Pattern HEX_PATTERN = Pattern.compile("&#([A-Fa-f0-9]{6})"); private static final Pattern LEGACY_COLOR_PATTERN = Pattern.compile("&([0-9a-fk-orA-FK-OR])"); + private static final Pattern MINIMESSAGE_HEX_PATTERN = Pattern.compile("<#([A-Fa-f0-9]{6})>"); private ChatFormatter() {} @@ -25,9 +26,11 @@ public class ChatFormatter { * Поддерживает: &коды, &#HEX, MiniMessage теги */ public static String convertAllColors(String message) { + if (message == null) return ""; + String result = message; - // 1. Конвертируем &#RRGGBB -> <#RRGGBB> + // 1. Конвертируем &#RRGGBB -> <#RRGGBB> (только если еще не в MiniMessage формате) result = convertHexColors(result); // 2. Конвертируем &коды -> MiniMessage теги @@ -172,10 +175,34 @@ public class ChatFormatter { } public static String stripTags(String message) { + if (message == null) return ""; // Убираем MiniMessage теги и legacy коды String result = MINI_MESSAGE.stripTags(message); result = stripLegacyColors(result); result = HEX_PATTERN.matcher(result).replaceAll(""); + result = MINIMESSAGE_HEX_PATTERN.matcher(result).replaceAll(""); + return result; + } + + /** + * Полностью очищает все цветовые коды из строки + */ + public static String stripAllColors(String message) { + if (message == null) return ""; + String result = message; + + // Убираем MiniMessage HEX теги <#RRGGBB> + result = MINIMESSAGE_HEX_PATTERN.matcher(result).replaceAll(""); + + // Убираем &#RRGGBB + result = HEX_PATTERN.matcher(result).replaceAll(""); + + // Убираем &коды + result = stripLegacyColors(result); + + // Убираем MiniMessage теги + result = MINI_MESSAGE.stripTags(result); + return result; } diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 9144713..9ade0a2 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,5 +1,5 @@ name: LoChat -version: '1.5.2' +version: '1.5.3' main: com.loki.lochat.LoChat api-version: '1.21' folia-supported: true