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

Помогите Как выдать предмет со сложным id(например зелье)

Тема в разделе "Разработка плагинов для новичков", создана пользователем Poyalnik, 14 май 2018.

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

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

    Баллы:
    66
    Как выдать предмет со сложным id(например зелье 373:8204)
    У меня получилось выдать только зелье без эффектов, а как быть дальше не знаю.

    Из материалов нашел только Material.Potion. Пытался экспериментировать с data предметов, но получилась ерунда.
    Подскажите свои варианты.
     
  2. Dan_Ender

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

    Баллы:
    76
    Код:
    Potion potion = new Potion(PotionType.STRENGTH);
    potion.setLevel(1);//Уровень эффекта
    potion.setSplash(false);//Взрывное или нет
    ItemStack potionItem = potion.toItemStack(1);//1 - кол-во
     
  3. _MasterCapeXD_

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

    Баллы:
    76
    Имя в Minecraft:
    _MasterCapeXD_
    ItemStack potion = new ItemStack(Material.POTION);
    potion.setDurability((short) 8204);
     
  4. Автор темы
    Poyalnik

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

    Баллы:
    66
    Спасибо, все работает.
    В документации было написано short damage (
    ItemStack(Material type, int amount, short damage)
    )
    Я думал это прочность:lol:
     
  5. Dan_Ender

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

    Баллы:
    76
    Костыльно, сабайдишники знать надо.
     
  6. _MasterCapeXD_

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

    Баллы:
    76
    Имя в Minecraft:
    _MasterCapeXD_
    Если используется конфиг, их узнать легче, чем STRENGTH, level и тд. Но и первый вариант тоже норм. Я написал до того, как страница обновилась, так что варианта выше не видел.
     
  7. Cool_boy

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

    Баллы:
    96
    Имя в Minecraft:
    prettydude
    Отвалится в 1.13, нет?
     
  8. Bars

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

    Баллы:
    173
    Какое ...? Вы в каком году живете? Эта реализация изжила своё, сейчас все делается сухо тремя строками. Deprecated, потрачено.

    Он уже давно отвалился. Даже обычный итем бутылки с водой почему-то окрашен в розовый вместо синего.

    Недавно очень сильно пришлось себя посвятить зельям и я в них разобрался. Все решения кал.
    Момент истины...
    Код:
    PotionMeta meta = (PotionMeta) stack.getItemMeta();
    meta.setBasePotionData(new PotionData(PotionType type, boolean extendable, boolean upgraded));
    stack.setItemMeta(meta);
    Где:
    stack - ItemStack с зельем
    extendable - boolean - продолжительное или нет время действия зелья
    upgraded - boolean - удвоенная сила зелья (II) или нет (а других левелов, собственно, и не существует)

    Вот так просто все задается. Но не у всех зелий extendable/upgraded может быть true, поэтому зелья будут испорченными, а в консоли будут ошибки. Поэтому надо делать проверку на type.isExtendable() и type.isUpgradable(). Финальный вариант:

    Код:
    ItemStack stack = new ItemStack(Material.POTION, 1);
    PotionType type = PotionType.valueOf("STRING_ТИПА_ЗЕЛЬЯ");
    if (type == null) type = PotionType.WATER;
    boolean extended = true/false;
    boolean upgraded = true/false;
    
    PotionMeta meta = (PotionMeta) stack.getItemMeta();
    meta.setBasePotionData(new PotionData(type, type.isExtendable() ? extended : false, type.isUpgradable() ? upgraded : false));
    stack.setItemMeta(meta);
    Все типы зелий здесь
     
    Последнее редактирование: 16 май 2018
  9. Bars

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

    Баллы:
    173
    Кстати, даже если вы хотите создать итем простой воды, теперь нельзя просто выдать предмет POTION (или ID 383), надо ему еще принудительно задавать тип зелья PotionType.WATER, просто так больше нельзя. Повторюсь: даже если это не зелье, а простая вода. Иначе бутылка с водой будет не синей, а розовой

    Таковы последние версии Майнкрафта
     
    Последнее редактирование: 16 май 2018
  10. _MasterCapeXD_

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

    Баллы:
    76
    Имя в Minecraft:
    _MasterCapeXD_
    Что-же, будем менять методы)
    Что с нами делает старая закалка))
     
  11. alexandrage

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

    Баллы:
    173
    Капец сборише динозавров :D. Барс красавчик.
     
  12. Slavkaa

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

    Баллы:
    76
    Имя в Minecraft:
    Slavok2001
    Чувак, поделись своим ЧСВ, у тебя явно излишки.
     
  13. Bars

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

    Баллы:
    173
    Я написал что варианты старые и неюзабельные. Мне просто надо было привлечь внимание к своему посту, потому что это самый верный вариант и потому главный ответ на вопрос. Просто чтобы не вдаваться в изучение усложненного и устаревшего, когда в будущем все равно придется переходить на новый вариант.
    Будь у меня ЧСВ, я бы не раписал так подробно реализацию, а прошел мимо по типу: "нефиг мне тратить драгоценное время на помощь этим конкурентам, пускай сами ищут решение"

    В чем именно ЧСВ?
     
  14. Dan_Ender

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

    Баллы:
    76
    Все написанно обсолютно по делу, никакого ЧСВ тут нет. Даже я признаю, что я - дино
     
  15. Bars

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

    Баллы:
    173
    Это я хотел отвлечь ТС'а от этого варианта. Потому что обычно выбираешь из нескольких, и надо было вовремя предостеречь. Поэтому с таким всплеском написал
     
  16. saidul

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

    Баллы:
    66
    Имя в Minecraft:
    saidul
    как сделать с помощью этого в меню здачу зелий? проверку на зелье и потом чтоб при клике забирало
     
  17. Bars

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

    Баллы:
    173
    Уже давно не писал плагины... Вряд ли что-то смогу подсказать, тем более по версиям выше 1.12. Мне еще предстоит в них вникнуть, так как занимаюсь другим
     

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