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

Помогите Как получить кастомное имя предмета

Тема в разделе "Разработка плагинов для новичков", создана пользователем RoyalCraft, 26 мар 2024.

Статус темы:
Закрыта.
  1. Автор темы
    RoyalCraft

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

    Баллы:
    68
    Имя в Minecraft:
    Stressless
    В гугле не смог найти информации. Суть в чем:

    Через код предмету задается имя через
    Код:
    meta.setDisplayName("name");
    и пихается игроку в инвентарь

    Далее при определенных действиях (например, клике на него) пытаюсь получить его имя уже в игре через
    Код:
    meta.getDisplayName();
    и это возвращает null. Читал, что это работает в том случае, если имя предмету было дано через наковальню или что то в том роде. Как тогда получить название ? Пихать значение в PersistentDataContainer ?
     
  2. Dymeth

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

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Нет никакой разницы в установке названия через наковальню и через апи.
    У тебя нулл, потому что ты получаешь мету не у того предмета
     
  3. Автор темы
    RoyalCraft

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

    Баллы:
    68
    Имя в Minecraft:
    Stressless
    У того т.к. из того же предмета я тяну данные из PersistentDataContainer. Пример ниже



    Код:
           
    if (event.getSlotType().equals(InventoryType.SlotType.ARMOR)) {
    
                NamespacedKey searchKey = new NamespacedKey(MyPlugin.getInstance(), "hiddenTag");
                ItemMeta meta = event.getCurrentItem().getItemMeta();
                if (meta != null) {
                    event.getWhoClicked().sendMessage(meta.getDisplayName()); <-- NULL
                    PersistentDataContainer data = meta.getPersistentDataContainer();
                    if (data.has(searchKey)) {
                          event.getWhoClicked().sendMessage(data.get(searchKey, PersistentDataType.STRING)); <--- РАБОТАЕТ НОРМАЛЬНО
                    }
                }
    
            }
     
    Последнее редактирование: 26 мар 2024
  4. alexandrage

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

    Баллы:
    173
    Есть же meta.hasDisplayName() для проверки на отсутствие дисплейнейма.
     
  5. Dymeth

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

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Название, которое ты устанавливаешь программно, отображается на предмете? Показывай скриншот и код, которым устанавливаешь
     
  6. Автор темы
    RoyalCraft

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

    Баллы:
    68
    Имя в Minecraft:
    Stressless
    Всем спасибо за ответы. Проблема была в моей невнимательности. Кастомное имя задаю через yml, но в этот раз его не задал, хотя был уверен до последнего, что задал )
     
Статус темы:
Закрыта.

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