From ed796a426475cf8d8892a81fdcb8e8554d03c308 Mon Sep 17 00:00:00 2001 From: loki5512344 Date: Tue, 30 Dec 2025 13:05:16 +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 --- .../com/loki/lochat/utils/ChatFormatter.java | 23 +++++++++++++++---- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/loki/lochat/utils/ChatFormatter.java b/src/main/java/com/loki/lochat/utils/ChatFormatter.java index 666cd0f..e6bdf9a 100644 --- a/src/main/java/com/loki/lochat/utils/ChatFormatter.java +++ b/src/main/java/com/loki/lochat/utils/ChatFormatter.java @@ -17,27 +17,39 @@ 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 SECTION_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() {} /** * Конвертирует все форматы цветов в MiniMessage - * Поддерживает: &коды, &#HEX, MiniMessage теги + * Поддерживает: &коды, §коды, &#HEX, MiniMessage теги */ public static String convertAllColors(String message) { if (message == null) return ""; String result = message; - // 1. Конвертируем &#RRGGBB -> <#RRGGBB> (только если еще не в MiniMessage формате) + // 1. Конвертируем §коды -> &коды (для унификации) + result = convertSectionToAmpersand(result); + + // 2. Конвертируем &#RRGGBB -> <#RRGGBB> (только если еще не в MiniMessage формате) result = convertHexColors(result); - // 2. Конвертируем &коды -> MiniMessage теги + // 3. Конвертируем &коды -> MiniMessage теги result = convertLegacyColors(result); return result; } + + /** + * Конвертирует §коды в &коды + */ + public static String convertSectionToAmpersand(String message) { + if (message == null) return ""; + return SECTION_COLOR_PATTERN.matcher(message).replaceAll("&$1"); + } /** * Конвертирует &#RRGGBB в MiniMessage формат <#RRGGBB> @@ -152,10 +164,11 @@ public class ChatFormatter { } /** - * Убирает &коды из сообщения + * Убирает &коды и §коды из сообщения */ public static String stripLegacyColors(String message) { - return LEGACY_COLOR_PATTERN.matcher(message).replaceAll(""); + String result = LEGACY_COLOR_PATTERN.matcher(message).replaceAll(""); + return SECTION_COLOR_PATTERN.matcher(result).replaceAll(""); } public static Component parse(String message) {