Помогите Добавить поддержку hex цветов (градиент) на версии 1.16.5.

  • Автор темы Автор темы ZDCoder
  • Дата начала Дата начала

ZDCoder

Активный участник
Пользователь
Баллы
76
Хочу добавить поддержку градиента в свой плагин.
Допустим у меня есть вот такой градиент:
&#084cfbт&#1357fbе&#1e62fbс&#296dfbт&#3479fcо&#3f84fcв&#4a8ffcы&#559afcй &#60a5fcг&#6bb0fcр&#76bbfcа&#81c6fcд&#8cd2fdи&#97ddfdе&#a2e8fdн&#adf3fdт

upload_2022-6-1_11-53-20.png
Сайт где я создавал этот градиент: https://rgb.birdflop.com (не реклама)

Я нашёл был вот такой метод, но к сожалению оно не работало. Выкидывало исключение. Может я что то не так делаю ? Помогите пожалуйста.
Код:
    public String hexColor(String text) {
        Pattern pattern = Pattern.compile("#[a-fA-f0-9]{6}");
        Matcher matcher = pattern.matcher(text);
        while (matcher.find()) {
            String color = text.substring(matcher.start(), matcher.end());
            text = text.replace(color, net.md_5.bungee.api.ChatColor.of(color) + "");
        }
        return net.md_5.bungee.api.ChatColor.translateAlternateColorCodes('&', text);
    }
 

Вложения

  • upload_2022-6-1_11-53-11.png
    upload_2022-6-1_11-53-11.png
    51,4 КБ · Просмотры: 15
Код:
private String prefix(String from) {
        Pattern pattern = Pattern.compile("#[a-fA-F0-9]{6}");
        Matcher matcher = pattern.matcher(from);
        while (matcher.find()) {
            String hexCode = from.substring(matcher.start(), matcher.end());
            String replaceSharp = hexCode.replace('#', 'x');
            char[] ch = replaceSharp.toCharArray();
            StringBuilder builder = new StringBuilder("");
            for (char c : ch)
                builder.append("&" + c);
            from = from.replace(hexCode, builder.toString());
            matcher = pattern.matcher(from);
        }
        String pref = ChatColor.translateAlternateColorCodes('&', from);
        return pref;
    }
у меня работало
 
Код:
private String prefix(String from) {
        Pattern pattern = Pattern.compile("#[a-fA-F0-9]{6}");
        Matcher matcher = pattern.matcher(from);
        while (matcher.find()) {
            String hexCode = from.substring(matcher.start(), matcher.end());
            String replaceSharp = hexCode.replace('#', 'x');
            char[] ch = replaceSharp.toCharArray();
            StringBuilder builder = new StringBuilder("");
            for (char c : ch)
                builder.append("&" + c);
            from = from.replace(hexCode, builder.toString());
            matcher = pattern.matcher(from);
        }
        String pref = ChatColor.translateAlternateColorCodes('&', from);
        return pref;
    }
у меня работало
Только Pattern.compile лучше один раз делать, так быстрее.
 
Как-то такой метод делал. Там ещё есть неплохие комментарии от других юзеров, да md_5 оставлял свой максимально-короткий вариант. С последними версиями Java можно (и скорей даже нужно) использовать StringBuilder вместо StringBuffer.
 
Назад
Верх