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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Баллы:
    76
    Имя в Minecraft:
    Dan_Ender
    Костыльно, сабайдишники знать надо.
     
  7. _MasterCapeXD_

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

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

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

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

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

    Баллы:
    173
    Имя в Minecraft:
    Notcz
    Какое ...? Вы в каком году живете? Эта реализация изжила своё, сейчас все делается сухо тремя строками. 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 в 23:03
  10. Bars

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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