v1.5.3: Улучшена обработка цветовых кодов
This commit is contained in:
parent
821a65e15a
commit
4f88f09d21
4 changed files with 33 additions and 6 deletions
|
|
@ -3,7 +3,7 @@ plugins {
|
||||||
}
|
}
|
||||||
|
|
||||||
group = 'com.loki'
|
group = 'com.loki'
|
||||||
version = '1.5.2'
|
version = '1.5.3'
|
||||||
|
|
||||||
repositories {
|
repositories {
|
||||||
mavenCentral()
|
mavenCentral()
|
||||||
|
|
@ -42,7 +42,7 @@ test {
|
||||||
}
|
}
|
||||||
|
|
||||||
jar {
|
jar {
|
||||||
archiveFileName = 'LoChat-1.5.2.jar'
|
archiveFileName = 'LoChat-1.5.3.jar'
|
||||||
from {
|
from {
|
||||||
configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
|
configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -39,8 +39,8 @@ public class MessageConfig {
|
||||||
for (int i = 0; i < replacements.length - 1; i += 2) {
|
for (int i = 0; i < replacements.length - 1; i += 2) {
|
||||||
message = message.replace(replacements[i], replacements[i + 1]);
|
message = message.replace(replacements[i], replacements[i + 1]);
|
||||||
}
|
}
|
||||||
// Убираем legacy коды если они есть
|
// Убираем все цветовые коды и конвертируем заново
|
||||||
message = ChatFormatter.convertAllColors(message);
|
message = ChatFormatter.stripAllColors(message);
|
||||||
return message;
|
return message;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,7 @@ public class ChatFormatter {
|
||||||
// Паттерны для цветов
|
// Паттерны для цветов
|
||||||
private static final Pattern HEX_PATTERN = Pattern.compile("&#([A-Fa-f0-9]{6})");
|
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 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() {}
|
private ChatFormatter() {}
|
||||||
|
|
||||||
|
|
@ -25,9 +26,11 @@ public class ChatFormatter {
|
||||||
* Поддерживает: &коды, &#HEX, MiniMessage теги
|
* Поддерживает: &коды, &#HEX, MiniMessage теги
|
||||||
*/
|
*/
|
||||||
public static String convertAllColors(String message) {
|
public static String convertAllColors(String message) {
|
||||||
|
if (message == null) return "";
|
||||||
|
|
||||||
String result = message;
|
String result = message;
|
||||||
|
|
||||||
// 1. Конвертируем &#RRGGBB -> <#RRGGBB>
|
// 1. Конвертируем &#RRGGBB -> <#RRGGBB> (только если еще не в MiniMessage формате)
|
||||||
result = convertHexColors(result);
|
result = convertHexColors(result);
|
||||||
|
|
||||||
// 2. Конвертируем &коды -> MiniMessage теги
|
// 2. Конвертируем &коды -> MiniMessage теги
|
||||||
|
|
@ -172,10 +175,34 @@ public class ChatFormatter {
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String stripTags(String message) {
|
public static String stripTags(String message) {
|
||||||
|
if (message == null) return "";
|
||||||
// Убираем MiniMessage теги и legacy коды
|
// Убираем MiniMessage теги и legacy коды
|
||||||
String result = MINI_MESSAGE.stripTags(message);
|
String result = MINI_MESSAGE.stripTags(message);
|
||||||
result = stripLegacyColors(result);
|
result = stripLegacyColors(result);
|
||||||
result = HEX_PATTERN.matcher(result).replaceAll("");
|
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;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
name: LoChat
|
name: LoChat
|
||||||
version: '1.5.2'
|
version: '1.5.3'
|
||||||
main: com.loki.lochat.LoChat
|
main: com.loki.lochat.LoChat
|
||||||
api-version: '1.21'
|
api-version: '1.21'
|
||||||
folia-supported: true
|
folia-supported: true
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue