Add support for legacy color formats &#RRGGBB and #RRGGBB in YAML configs
This commit is contained in:
parent
4494c457a4
commit
000f1962e0
3 changed files with 46 additions and 6 deletions
|
|
@ -123,7 +123,23 @@ public class TextDisplayManager {
|
||||||
.replace("{player}", playerName)
|
.replace("{player}", playerName)
|
||||||
.replace("{name}", 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("(?<!<)#([0-9a-fA-F]{6})(?![^<]*>)", "<#$1>");
|
||||||
|
|
||||||
|
return message;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,9 @@ public final class ChatFormatter {
|
||||||
|
|
||||||
public static Component parse(String message) {
|
public static Component parse(String message) {
|
||||||
if (message == null) return Component.empty();
|
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) {
|
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) {
|
for (int i = 0; i + 1 < replacements.length; i += 2) {
|
||||||
result = result.replace(replacements[i], replacements[i + 1]);
|
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("(?<!<)#([0-9a-fA-F]{6})(?![^<]*>)", "<#$1>");
|
||||||
|
|
||||||
|
return message;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String stripTags(String message) {
|
public static String stripTags(String message) {
|
||||||
|
|
@ -41,11 +60,11 @@ public final class ChatFormatter {
|
||||||
/* ===================== COLORS ===================== */
|
/* ===================== COLORS ===================== */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Возвращает строку как есть, так как теперь градиенты генерируются в MiniMessage формате
|
* Конвертирует различные форматы цветов в MiniMessage формат
|
||||||
*/
|
*/
|
||||||
public static String convertAllColors(String message) {
|
public static String convertAllColors(String message) {
|
||||||
if (message == null) return "";
|
if (message == null) return "";
|
||||||
return message;
|
return convertLegacyFormats(message);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ===================== EMOJIS ===================== */
|
/* ===================== EMOJIS ===================== */
|
||||||
|
|
|
||||||
|
|
@ -57,7 +57,12 @@ display:
|
||||||
text-display-scale: 0.8
|
text-display-scale: 0.8
|
||||||
# Видно ли TextDisplay через стены
|
# Видно ли TextDisplay через стены
|
||||||
text-display-see-through: false
|
text-display-see-through: false
|
||||||
# Формат TextDisplay (поддерживает плейсхолдеры)
|
# Формат TextDisplay (поддерживает плейсхолдеры и различные форматы цветов)
|
||||||
|
# Поддерживаемые форматы:
|
||||||
|
# <#RRGGBB> - MiniMessage HEX
|
||||||
|
# &#RRGGBB - Legacy HEX
|
||||||
|
# #RRGGBB - Простой HEX
|
||||||
|
# <red>, <blue> и т.д. - именованные цвета
|
||||||
text-display-format: "{prefix}{player}"
|
text-display-format: "{prefix}{player}"
|
||||||
|
|
||||||
# Тип хранилища: YAML или SQLITE
|
# Тип хранилища: YAML или SQLITE
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue