1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов 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. Meltionix

    Meltionix Участник Пользователь

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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