1. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

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

Тема в разделе "Разработка плагинов для новичков", создана пользователем ZDCoder, 1 июн 2022.

  1. Автор темы
    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);
        }
     

    Вложения:

  2. Sturm_PT

    Sturm_PT Активный участник Пользователь

    Баллы:
    76
    Код:
    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;
        }
    у меня работало
     
  3. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Только Pattern.compile лучше один раз делать, так быстрее.
     
  4. Автор темы
    ZDCoder

    ZDCoder Активный участник Пользователь

    Баллы:
    76
    Сейчас проверю.
    Спасибо, буду инициализировать 1 раз.
     
  5. imDaniX

    imDaniX Активный участник Пользователь

    Баллы:
    96
    Имя в Minecraft:
    imDaniX
    Как-то такой метод делал. Там ещё есть неплохие комментарии от других юзеров, да md_5 оставлял свой максимально-короткий вариант. С последними версиями Java можно (и скорей даже нужно) использовать StringBuilder вместо StringBuffer.
     

Поделиться этой страницей