Помогите itemMeta.displayName(kyori component)

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

ryfi

Активный участник
Пользователь
Баллы
61
Имя в Minecraft
Ryfi_Coder
шрифт устанавливается на italic (предмет как будто переименован)
upload_2022-3-26_17-52-35.png
upload_2022-3-26_17-52-53.png
А нужно:
upload_2022-3-26_17-56-35.png
Версия сервера Paper 1.16.5 794
 

Вложения

  • upload_2022-3-26_17-51-23.png
    upload_2022-3-26_17-51-23.png
    14,3 КБ · Просмотры: 7
шрифт устанавливается на italic (предмет как будто переименован)
Посмотреть вложение 62213
Посмотреть вложение 62214
А нужно:
Посмотреть вложение 62215
Версия сервера Paper 1.16.5 794
Попробуй создать переменную String с ChatColor:
String test = ChatColor.of("#0xFF3700") + "Test123";
 
В моём случае я могу использовать только kyori component
А это обезательно использовать компонент из Paper? Не проще выбрать ядро для кода Spigot, а потом просто поставить этот плагин на Paper?
 
Я обычно всегда использую готовый API
 
шрифт устанавливается на italic (предмет как будто переименован)
Я знаю, что ваниль показывает названия переименованных предметов в курсиве, если не стоит форматирование. По идее, с установкой цвета должно было пропасть, но на скрине в шапке видно, что не помогло. (Мб дело в том, что это rgb, а не обычный?)

Проверь, установлен ли в названии предмета курсив вообще, после создания.
 
Короткий ответ:

Установи своему компоненту значение italic в false:
Component.text("Название").decoration(TextDecoration.ITALIC, false)


Длинный ответ (почему так происходит):

Влияет не только то, что предмет переименован, влияет ещё и наличие тега italic у компонента названия. По-умолчанию у названий предметов значение italic равно true (это значение подставляется на клиенте). Поэтому для отключения курсива необходимо явным образом перевести значение в false.

Устаревший ItemMeta.setDisplayName(String) вызывает следующий код:
CraftChatMessage.fromStringOrNullToJSON(name)
Он накладывает значения false на все возможные типы форматирования.

А вот при использовании ItemMeta.displayName(Component) выполняется следующий код:
GsonComponentSerializer.gson().serialize(displayName)
Данный сериализатор не добавляет теги форматирования полученным компонентам, поэтому и имеем такое поведение.

upload_2022-3-29_3-54-13.png

Аналогичное поведение будет получено при:
1) Установке названия предметов
2) Установке описания предметов
3) Установке страниц книг (но, скорее всего, в этом случае клиент не добавляет italic)

Ожидаемый ответ конрибьютора Adventure по поводу такого поведения:upload_2022-3-29_4-18-5.png

Возможно стоило бы зарепортить это в Paper. Но сомневаюсь, что они согласятся исправлять
 
Последнее редактирование:
Назад
Верх