- Баллы
- 66
- Имя в Minecraft
- just_l0fe
Я разрабатываю небольшой плагин на меню, и мне нужно у одного из предмета в описании сделать градиентный текст, есть варианты как это сделать?
Просто ранее я использовал градиенты только в чате создавая с помощью API.
Я пробовал при создании методом Component.text(String content); в content помещать метод из API, но ничего не получилось, цвета просто ломались.
P.s. Желательно ещё возможность добавить компонент к существующему в котором уже прописан другой текст без градиента.
Просто ранее я использовал градиенты только в чате создавая с помощью API.
Код:
public static String gradientText(String message, Color startColor, Color endColor) {
StringBuilder finalizedMessage = new StringBuilder();
for(int messageChar = 0; messageChar < message.toCharArray().length; messageChar++) {
float ratio = (float) messageChar / (float) message.toCharArray().length;
int red = (int) (endColor.getRed() * ratio + startColor.getRed() * (1 - ratio));
int green = (int) (endColor.getGreen() * ratio + startColor.getGreen() * (1 - ratio));
int blue = (int) (endColor.getBlue() * ratio + startColor.getBlue() * (1 - ratio));
Color stepColor = new Color(red, green, blue);
String redHex = Integer.toHexString(stepColor.getRed());
String greenHex = Integer.toHexString(stepColor.getGreen());
String blueHex = Integer.toHexString(stepColor.getBlue());
String hexColor = "!#" + (redHex.length() <= 2 ? StringUtils.repeat( "0",2-redHex.length()) + redHex : redHex) +
(greenHex.length() <= 2 ? StringUtils.repeat( "0",2-greenHex.length()) + greenHex : greenHex) +
(blueHex.length() <= 2 ? StringUtils.repeat( "0",2-blueHex.length()) + blueHex : blueHex);
finalizedMessage.append(hexColor).append(message.toCharArray()[messageChar]);
}
return colorHex(finalizedMessage.toString());
}
Код:
public static String colorHex(String s) {
s = ChatColor.translateAlternateColorCodes(ChatColor.COLOR_CHAR, s);
s = findAndReplaceRegex("!#[0-9,a-f,A-F]{6}", s);
s = findAndReplaceRegex("&#[0-9,a-f,A-F]{6}", s);
s = ChatColor.translateAlternateColorCodes('&', s);
return s;
}
P.s. Желательно ещё возможность добавить компонент к существующему в котором уже прописан другой текст без градиента.
Последнее редактирование: