diff --git a/src/main/java/com/loki/lochat/gradient/util/TextDisplayManager.java b/src/main/java/com/loki/lochat/gradient/util/TextDisplayManager.java index 76b3e3b..96dbe64 100644 --- a/src/main/java/com/loki/lochat/gradient/util/TextDisplayManager.java +++ b/src/main/java/com/loki/lochat/gradient/util/TextDisplayManager.java @@ -123,7 +123,23 @@ public class TextDisplayManager { .replace("{player}", playerName) .replace("{name}", playerName); // Альтернативный плейсхолдер - return result; + // Конвертируем legacy форматы в MiniMessage + return convertLegacyFormats(result); + } + + /** + * Конвертирует legacy форматы цветов в MiniMessage формат + */ + private String convertLegacyFormats(String message) { + if (message == null) return ""; + + // Конвертируем &#RRGGBB в <#RRGGBB> + message = message.replaceAll("&#([0-9a-fA-F]{6})", "<#$1>"); + + // Конвертируем #RRGGBB в <#RRGGBB> (только если не внутри тегов) + message = message.replaceAll("(?)", "<#$1>"); + + 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 b353512..9b7f4f3 100644 --- a/src/main/java/com/loki/lochat/utils/ChatFormatter.java +++ b/src/main/java/com/loki/lochat/utils/ChatFormatter.java @@ -17,7 +17,9 @@ public final class ChatFormatter { public static Component parse(String message) { if (message == null) return Component.empty(); - return MM.deserialize(message); + // Конвертируем legacy форматы в MiniMessage перед парсингом + String converted = convertLegacyFormats(message); + return MM.deserialize(converted); } public static Component parse(String message, String... replacements) { @@ -26,7 +28,24 @@ public final class ChatFormatter { for (int i = 0; i + 1 < replacements.length; i += 2) { result = result.replace(replacements[i], replacements[i + 1]); } - return MM.deserialize(result); + // Конвертируем legacy форматы в MiniMessage перед парсингом + String converted = convertLegacyFormats(result); + return MM.deserialize(converted); + } + + /** + * Конвертирует legacy форматы цветов в MiniMessage формат + */ + private static String convertLegacyFormats(String message) { + if (message == null) return ""; + + // Конвертируем &#RRGGBB в <#RRGGBB> + message = message.replaceAll("&#([0-9a-fA-F]{6})", "<#$1>"); + + // Конвертируем #RRGGBB в <#RRGGBB> (только если не внутри тегов) + message = message.replaceAll("(?)", "<#$1>"); + + return message; } public static String stripTags(String message) { @@ -41,11 +60,11 @@ public final class ChatFormatter { /* ===================== COLORS ===================== */ /** - * Возвращает строку как есть, так как теперь градиенты генерируются в MiniMessage формате + * Конвертирует различные форматы цветов в MiniMessage формат */ public static String convertAllColors(String message) { if (message == null) return ""; - return message; + return convertLegacyFormats(message); } /* ===================== EMOJIS ===================== */ diff --git a/src/main/resources/gradient-config.yml b/src/main/resources/gradient-config.yml index ed36eec..58a40d6 100644 --- a/src/main/resources/gradient-config.yml +++ b/src/main/resources/gradient-config.yml @@ -57,7 +57,12 @@ display: text-display-scale: 0.8 # Видно ли TextDisplay через стены text-display-see-through: false - # Формат TextDisplay (поддерживает плейсхолдеры) + # Формат TextDisplay (поддерживает плейсхолдеры и различные форматы цветов) + # Поддерживаемые форматы: + # <#RRGGBB> - MiniMessage HEX + # &#RRGGBB - Legacy HEX + # #RRGGBB - Простой HEX + # , и т.д. - именованные цвета text-display-format: "{prefix}{player}" # Тип хранилища: YAML или SQLITE