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

Помогите Добавить NBT (Tags[]) в предмет

Тема в разделе "Разработка плагинов для новичков", создана пользователем koliab, 9 фев 2019.

  1. Автор темы
    koliab

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

    Баллы:
    76
    Имя в Minecraft:
    kolia1_1
    Есть предмет надо добавить теги как в ванилька {display:[Tags:["musor"]} ну или типа того, и как получить тег
     
  2. AbstractCoder

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

    Баллы:
    76
    Имя в Minecraft:
    AbstractCoder
    Получаешь NBTTagList по пути "display.Tags" NBTTagCompound предмета и редактируешь, как надо.
     
  3. Автор темы
    koliab

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

    Баллы:
    76
    Имя в Minecraft:
    kolia1_1
    В виде примера можно?
     
  4. AbstractCoder

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

    Баллы:
    76
    Имя в Minecraft:
    AbstractCoder
    CraftItemStack.asNmsCopy(item) - получаешь нмс копию предмета
    у него вызываешь getTag() - если вернуло null, значит сам создаешь NBTTagCompound и сетаешь предмету (конструктор без параметров).
    дальше у NBTTagCompount вызываешь get("display.Tags") и кастишь к NBTTagList. После редактирования конвертируешь нмс предмет в бакитовский CraftItemStack.
    asBukkitCopy(нмс_предмет)
     
  5. Автор темы
    koliab

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

    Баллы:
    76
    Имя в Minecraft:
    kolia1_1
    Ну все таки можно пример в коде :D?
     
  6. AbstractCoder

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

    Баллы:
    76
    Имя в Minecraft:
    AbstractCoder
    Готовый пример кидать не буду, я не работаю напрямую с нмс, а через прокси классы. Погугли на изичах найдешь, как редактировать нбт теги предмета (поисковой запрос пиши всегда на англ).
    За тебя код писать не будем, я максимально внятно объяснил.
     
  7. Dymeth

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

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Использую это апи и не парюсь о версии
     
  8. AbstractCoder

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

    Баллы:
    76
    Имя в Minecraft:
    AbstractCoder
    Дичь какая-то)
     
  9. Dymeth

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

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Работает, есть и пить не просит, регулярно обновляется. Что ещё надо?
    Зато сам во всяком дерьме не копаешься.
    Правда использую у себя только для предметов, для мобов вообще никакие апи не нужны
     
  10. AbstractCoder

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

    Баллы:
    76
    Имя в Minecraft:
    AbstractCoder
    Ну ты хоть смотрел что там за дичь в коде? Все кешируется ручками, но вызывается обычной рефлексией.
    Проще по-нормальному накатать себе либу для проксирования любых нмс классов и сделать готовые прокси интерфейсы для нбт и прочей часто используемой хрени, а не таскать эту огромную либу.
     
  11. Evgeny Petrov

    Evgeny Petrov Новичок Пользователь

    Баллы:
    6
    Имя в Minecraft:
    Evgeny
    Какая разница сколько либа весит, я юзаю либо протокол либ, либо powernbt плагин-либу, там удобное api.
     
  12. AbstractCoder

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

    Баллы:
    76
    Имя в Minecraft:
    AbstractCoder
    Ну так суть не только в размере, а в том, что там вызовы через обычную рефлексию и апи неудобное. + своя либа может проксить любые нмс классы, а не нбт, смысла юзать эту парашу из спигот мс вообще никакого.
    Тоже самое с ProtocolLib, для паб плагинов мб сойдет, но у себя юзать не оч, слишком оверхедно, свои врапперы над пакетами можно сделать или голые нмс пакеты использовать, у себя на мультиверсионность может быть пофиг.
     
  13. Dymeth

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

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Накодишь нормальную либу - поставлю. Сам ничего делать не планирую, у меня и без этого работы полно :)
     
  14. alexandrage

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

    Баллы:
    173
    Да че там кодить? Версия раз в полгода меняется лол.
     
  15. Evgeny Petrov

    Evgeny Petrov Новичок Пользователь

    Баллы:
    6
    Имя в Minecraft:
    Evgeny
    Не знаю какая там оверхедность на современном дедике, может наносекунды. У меня при 100 онлайне на одном спиготе самописные плагины (а их в общем более 100) ничего не жрут в таймингах.
     
  16. AbstractCoder

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

    Баллы:
    76
    Имя в Minecraft:
    AbstractCoder
    Ну я понял твою позицию, не продолжай.
     
  17. Dymeth

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

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Ну, сделай, раз ерунда. И раз в полгода обновляй. Тогда и поговорим.
    У меня не так много времени заниматься всякой ерундой.
    Я NMS стараюсь вообще больше не касаться, к чёрту его.
     
  18. _Nanit_

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

    Баллы:
    76
    Имя в Minecraft:
    _Nanit_
    Не знаю когда этот класс появился в ItemMeta, но в 1.13 его можно использовать. По крайней мере для своих тегов, не стандартных
     
  19. alexandrage

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

    Баллы:
    173
    Ну и все, можете выкидывать свои костыли с nms.
     
  20. AbstractCoder

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

    Баллы:
    76
    Имя в Minecraft:
    AbstractCoder
    Ну я не собираюсь пока свою либу выкладывать, в пабе обычно только и гуляют парашные либы. Вроде у Lucko есть норм апи для проксирования нмс классов, чекни его Helper. Да и самому сделать апи легко, долго делать, если как тот челик на спиготе, все ручками.
     

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