Войти или зарегистрироваться

Помогите Как можно проверять какое зелье пьет игрок?

  • Автор темы Автор темы Rion_GM
  • Дата начала Дата начала

Rion_GM

Активный участник
Пользователь
Баллы
66
Имя в Minecraft
Rion_GM
Мне нужно что бы если игрок пил именно зелье исцеления выполнялся код, как это можно сделать?
 
а можно пример если есть?
Ну, я вроде уже описал, что нужно. На java 17 можно в одну строку написать так
PHP:
@EventHandler
public void onConsume(PlayerItemConsumeEvent event) {
    if (event.getItem().getItemMeta() instanceof PotionMeta potionMeta && potionMeta.getBasePotionData().getType() == PotionType.INSTANT_HEAL) {
        // TODO
    }
}
 
Ну, я вроде уже описал, что нужно. На java 17 можно в одну строку написать так
PHP:
@EventHandler
public void onConsume(PlayerItemConsumeEvent event) {
    if (event.getItem().getItemMeta() instanceof PotionMeta potionMeta && potionMeta.getBasePotionData().getType() == PotionType.INSTANT_HEAL) {
        // TODO
    }
}
говорит
шаблоны в instanceof не поддерживаются на уровне языка 8
что делать?
 
говорит
шаблоны в instanceof не поддерживаются на уровне языка 8
что делать?
Как уже сказал, это фича Java 17.
PHP:
if (meta instanceof PotionMeta potionMeta) {
    // TODO
}
тоже самое, что
PHP:
if (meta instanceof PotionMeta) {
    PotionMeta potionMeta = (PotionMeta) meta;
}
 
Как уже сказал, это фича Java 17.
PHP:
if (meta instanceof PotionMeta potionMeta) {
    // TODO
}
тоже самое, что
PHP:
if (meta instanceof PotionMeta) {
    PotionMeta potionMeta = (PotionMeta) meta;
}
не я все равно тупой не пойму как сделать, типа оно теперь работает но работает оно со всеми зельями
 
не я все равно тупой не пойму как сделать, типа оно теперь работает но работает оно со всеми зельями
Ты вторую половину проверки из моего первого сообщения то посмотри.
 
дак ты проверку допиши на тип зелья potionMeta.getBasePotionData().getType()
 
Советую изначально выучить яп java а потом уже кодить плагины, не повторяй моих ошибок)
 
я так и пытался

if (meta instanceof PotionMeta && potionMeta.getBasePotionData().getType() == PotionType.INSTANT_HEAL){
potionMeta = (PotionMeta) meta;
}
Ну дак potionMeta у тебя недоступен во время проверки. Тебе нужно написать эту проверку отдельно уже после получения меты.
 
Ну дак potionMeta у тебя недоступен во время проверки. Тебе нужно написать эту проверку отдельно уже после получения меты.
if (meta instanceof PotionMeta){
potionMeta = (PotionMeta) meta;
potionMeta.getBasePotionData().getType() == PotionType.INSTANT_HEAL;
}
так?)
 
может я тут где то накосячил?

Код:
public void onPotionDrink(PlayerItemConsumeEvent event) {
            Player player = (Player) event.getPlayer();

            Object meta = null;
            PotionMeta potionMeta;
            if (meta instanceof PotionMeta){
                potionMeta = (PotionMeta) meta;
                if (potionMeta.getBasePotionData().getType() == PotionType.SPEED){
                    player.sendMessage(ChatColor.GOLD + "Текст ");
                }
            }
        }
 
может я тут где то накосячил?

Код:
public void onPotionDrink(PlayerItemConsumeEvent event) {
            Player player = (Player) event.getPlayer();

            Object meta = null;
            PotionMeta potionMeta;
            if (meta instanceof PotionMeta){
                potionMeta = (PotionMeta) meta;
                if (potionMeta.getBasePotionData().getType() == PotionType.SPEED){
                    player.sendMessage(ChatColor.GOLD + "Текст ");
                }
            }
        }
Да. meta должна быть взята с употребляемого предмета.
 
можешь исправить и скинуть код если не сложно пожалуйста?
PHP:
public void onPotionDrink(PlayerItemConsumeEvent event) {
    Player player = event.getPlayer();
    ItemMeta meta = event.getItem().getItemMeta();
    if (meta instanceof PotionMeta) {
        PotionMeta potionMeta = (PotionMeta) meta;
        if (potionMeta.getBasePotionData().getType() == PotionType.SPEED){
            player.sendMessage(ChatColor.GOLD + "Текст ");
        }
    }
}
Ну, и если будешь расширять плагин, настоятельно советую прислушаться к @0xLairon1 :D
 
Назад
Верх