Войти или зарегистрироваться

Помогите Kyori minimessage совместить с translatable

  • Автор темы Автор темы reZero
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

reZero

Активный участник
Пользователь
Баллы
76
Нужно отправлять игроку строку с плейсхолдерами, одним из которых будет является какой-то айтемстак.
Вся сложность в том, что строка настраивается в конфиге как обычное сообщение с применением плейсхолдеров, которые я в коде свапаю на нужные значения.
И вот, когда я имею уже готовый компонент, созданный из строки конфига, мне осталось всего-лишь заменить %resource% на сам айтемстак. Делаю всё так
Код:
 @Override
    public Component getResourceComponent(ItemStack itemStack, int value) {
        return ColorUtil.colorizeComponent(resourceText)
                .replaceText(builder -> builder
                        .match(AMOUNT)
                        .replacement(String.valueOf(value)))
                .replaceText(builder -> builder
                        .match(TYPE)
                        .replacement(itemStack.getType().name().toLowerCase(Locale.ROOT)))
                .replaceText(builder -> builder
                        .match(RESOURCE)
                        .replacement(Component.translatable(itemStack.getTranslationKey())));
    }
но проблема в том, что компонент с названием предмета отправляется без применения к нему окраски и остальных плюшек kyori minimessage, в отличии от остальной строки.
И вот у меня такой вопросик... Как можно применить к компоненту с названием предмета такие же minimessage, как и к остальной строке, при этом вставив его к первому компоненту как свап плейсхолдера?
upload_2022-10-18_23-38-2.png
upload_2022-10-18_23-38-31.png
 
Скорее всего баг старого adventure. На adventure 4.11.0 (paper 1.19.2) выглядит так
npAqu1i.png

Замечу, что число и не должно быть красным, т.к. тег цвета стоит внутри другого тега - здесь, видимо, уже какой-то баг старого MiniMessage. Вот так выглядит <#D41365><hover:show_text:"<red>%type%">%resource%</hover> x%amount%
scK0J5h.png


Могу лишь предложить вместо замены постфактум сделать это до обработки MiniMessage - благо, тег lang имеется.
 
Могу лишь предложить вместо замены постфактум сделать это до обработки MiniMessage - благо, тег lang имеется.
Действительно, это сработало. Правда, появился новый, не такой значительный как прошлый, но косяк. Сейчас моя строка выглядит вот так: <hover:show_text:"<red>%type%"><#D41365><lang:%resource%></hover> x%amount%
Почему-то ховер перестал отображаться при наведении, хотя если я убираю закрывающий тег "</hover>", оно работает. Суть в том, что мне бы желательно иметь возможность делать ховер у определенной части сообщения, а не у всей сразу.
Это очередной баг adventure той версии или моя криворукость?
 
Действительно, это сработало. Правда, появился новый, не такой значительный как прошлый, но косяк. Сейчас моя строка выглядит вот так: <hover:show_text:"<red>%type%"><#D41365><lang:%resource%></hover> x%amount%
Почему-то ховер перестал отображаться при наведении, хотя если я убираю закрывающий тег "</hover>", оно работает. Суть в том, что мне бы желательно иметь возможность делать ховер у определенной части сообщения, а не у всей сразу.
Это очередной баг adventure той версии или моя криворукость?
Наверняка тоже баг. На моих скриншотах не видно, но там hover работал.
 
Хорошо, большое спасибо за помощь
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх