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

Помогите Получение Material по id в 1.14

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

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

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

    Баллы:
    123
    Skype:
    vanya.studenikin
    Имя в Minecraft:
    stuvanya
    Всем привет. Переписываю плагин под 1.14, и столкнулся с проблемой, что нельзя получить Material по id предмета (getById(int id) больше нет)
    Есть ли другие варианты получения Material по id предмета?
     
  2. Mr Hosting
  3. Meltionix

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

    Баллы:
    16
    Так предметы не имеют числовых id в 1.14. Название material = id предмета.
     
  4. alexandrage

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

    Баллы:
    173
    Забудь про id. Нету больше такого. Material.matchMaterial(name)
     
  5. Автор темы
    Studenikin

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

    Баллы:
    123
    Skype:
    vanya.studenikin
    Имя в Minecraft:
    stuvanya
    а в чем разница между matchMaterial и getMaterial?
     
  6. alexandrage

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

    Баллы:
    173
    В том что первый вернет null если нету, второй ексепшен кинет.
     
  7. Автор темы
    Studenikin

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

    Баллы:
    123
    Skype:
    vanya.studenikin
    Имя в Minecraft:
    stuvanya
    ок, спасибо
     
  8. Автор темы
    Studenikin

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

    Баллы:
    123
    Skype:
    vanya.studenikin
    Имя в Minecraft:
    stuvanya
    слушай, еще вопрос
    было
    net.minecraft.server.v1_12_R1.Block.getByName(String name)
    сейчас в v1_14_R1 вообще ничего похожего нет, только
    getByCombinedId(int id)
    Как быть?
     
  9. alexandrage

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

    Баллы:
    173
    Bukkit.createBlockData(material или minecraft:name)
     
  10. Dymeth

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

    Баллы:
    96
    Имя в Minecraft:
    Dymeth
    Вообще, в классе Material присутствуют материалы с префиксами LEGACY_ и старыми id (по крайней мере в 1.13).
    Но вот в Material.values() их нет. Видимо ядро удаляет их из энама прямо при загрузке.
    Однако, возможно, это получится как-то обойти...
     
  11. alexandrage

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

    Баллы:
    173
    Не поможет, у новых стаков нет LEGACY, а id с потолка будете брать и эту затычку для старых плагинов потом уберут со временем.
     
  12. Dymeth

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

    Баллы:
    96
    Имя в Minecraft:
    Dymeth
    Legacy + derability можно без проблем конвертировать в новый материал. Тут вопрос в том, как его получить этот legacy.
    Да понятно.
    Но для самых упёртых можно записать список материалов в конфиг с их легаси-айдишниками.
    И потом уже оттуда читать хоть до посинения.
    Подозреваю, всё это можно получить, если не указывать api-version в plugin.yml
     
  13. imDaniX

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

    Баллы:
    76
    Имя в Minecraft:
    imDaniX
    Добавить boolean после названия. Material.matchMaterial(name, legacy).
     
  14. alexandrage

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

    Баллы:
    173
    Вот вам делать то нечего. Юзать имена и не парится.
     
  15. imDaniX

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

    Баллы:
    76
    Имя в Minecraft:
    imDaniX
    Тут я согласен. Если пишешь для 1.13+, резона в подобном - сущий 0.
     
  16. alexandrage

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

    Баллы:
    173
    Оно давно не имеет резона, когда можно name+durability версиям ниже.
     
  17. Dymeth

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

    Баллы:
    96
    Имя в Minecraft:
    Dymeth
    Точно. Можно написать конвертер из числовых айдишников в названия! И шобы автоматом конфиги всех плагинов на сервере обновило по преуказанным регуляркам
     
  18. Ission

    Ission Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    lokivava
    Пишу под 1.7.5, использую названия, я думал это неактуально уже лет 5...
     

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