From 4f88f09d2141a039deff615b9131bcbe2bef6fa3 Mon Sep 17 00:00:00 2001 From: loki5512344 Date: Tue, 30 Dec 2025 12:52:51 +0100 Subject: [PATCH] =?UTF-8?q?v1.5.3:=20=D0=A3=D0=BB=D1=83=D1=87=D1=88=D0=B5?= =?UTF-8?q?=D0=BD=D0=B0=20=D0=BE=D0=B1=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=BA?= =?UTF-8?q?=D0=B0=20=D1=86=D0=B2=D0=B5=D1=82=D0=BE=D0=B2=D1=8B=D1=85=20?= =?UTF-8?q?=D0=BA=D0=BE=D0=B4=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle | 4 +-- .../com/loki/lochat/config/MessageConfig.java | 4 +-- .../com/loki/lochat/utils/ChatFormatter.java | 29 ++++++++++++++++++- src/main/resources/plugin.yml | 2 +- 4 files changed, 33 insertions(+), 6 deletions(-) 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