Тогда не судьба - устаревшая версия. Тогда проще всего будет воспользоваться регуляркой и конвертировать это дело в пригодную для формата Spigot'а строку.
Что-нибудь типа
Код:
Pattern GRADIENT_PATTERN = Pattern.compile("<#([0-9a-f]{6})>(.+?)</#([0-9a-f]{6})>");
Получаем начальный и конечный цвета и сам текст.
Код:
Matcher matcher = GRADIENT_PATTERN.matcher(str);
Color startColor = new Color(Integer.parseInt(matcher.group(1), 16), false);
String text = matcher.group(2);
Color endColor = new Color(Integer.parseInt(matcher.group(3), 16), false);
И собираем это в формат Spigot'а.
Код:
StringBuilder builder = new StringBuilder(text.length()*15);
for (int i = 0; i < text.length(); i++) {
Color blend = blend(startColor, endColor, i / text.length());
builder.append(ChatColor.COLOR_CHAR).append('x');
for (char ch : Integer.toHexString(blend.getRGB()).toCharArray()) {
builer.append(ChatColor.COLOR_CHAR).append(ch);
}
builder.append(text.charAt(i));
}
return builder.toString();
Это всё писалось на коленке, так что советую проверить самостоятельно всё.
Останется по сути только метод blend(Color, Color, double) сделать, который будет смешивать два цвета. Это сделать несложно, наверняка загуглится по запросу что-то вроде java color gradient.