Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

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

Poyalnik

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

Из материалов нашел только Material.Potion. Пытался экспериментировать с data предметов, но получилась ерунда.
Подскажите свои варианты.
 
Код:
Potion potion = new Potion(PotionType.STRENGTH);
potion.setLevel(1);//Уровень эффекта
potion.setSplash(false);//Взрывное или нет
ItemStack potionItem = potion.toItemStack(1);//1 - кол-во
 
Как выдать предмет со сложным id(например зелье 373:8204)
У меня получилось выдать только зелье без эффектов, а как быть дальше не знаю.

Из материалов нашел только Material.Potion. Пытался экспериментировать с data предметов, но получилась ерунда.
Подскажите свои варианты.
ItemStack potion = new ItemStack(Material.POTION);
potion.setDurability((short) 8204);
 
Спасибо, все работает.
В документации было написано short damage (
ItemStack(Material type, int amount, short damage)
)
Я думал это прочность:lol:
 
Костыльно, сабайдишники знать надо.
Если используется конфиг, их узнать легче, чем STRENGTH, level и тд. Но и первый вариант тоже норм. Я написал до того, как страница обновилась, так что варианта выше не видел.
 
Код:
Potion potion = new Potion(PotionType.STRENGTH);
potion.setLevel(1);//Уровень эффекта
potion.setSplash(false);//Взрывное или нет
ItemStack potionItem = potion.toItemStack(1);//1 - кол-во
Какое ...? Вы в каком году живете? Эта реализация изжила своё, сейчас все делается сухо тремя строками. Deprecated, потрачено.

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

Недавно очень сильно пришлось себя посвятить зельям и я в них разобрался. Все решения кал.
Момент истины...
Java:
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(). Финальный вариант:

Java:
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);

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

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

Таковы последние версии Майнкрафта
Что-же, будем менять методы)
Что с нами делает старая закалка))
 
Какое ...? Вы в каком году живете? Эта реализация изжила своё, сейчас все делается сухо тремя строками. Deprecated, потрачено.


Давно отвалился short, уже бутылку с водой красит в розовый.

Недавно очень сильно пришлось себя посвятить зельям и я в них разобрался. Все решения кал.
Момент истины...
Java:
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(). Финальный вариант:

Java:
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);

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

В чем именно ЧСВ?
 
Чувак, поделись своим ЧСВ, у тебя явно излишки.
Все написанно обсолютно по делу, никакого ЧСВ тут нет. Даже я признаю, что я - дино
Какое ...? Вы в каком году живете? Эта реализация изжила своё, сейчас все делается сухо тремя строками. Deprecated, потрачено.
 
Это я хотел отвлечь ТС'а от этого варианта. Потому что обычно выбираешь из нескольких, и надо было вовремя предостеречь. Поэтому с таким всплеском написал
 
Java:
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(). Финальный вариант:

Java:
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);

Все типы зелий здесь

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

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

Назад
Верх