Помогите Как узнать какой предмет выпал из игрока при смерти.

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

Ryazha_

Активный участник
Пользователь
Баллы
76
Имя в Minecraft
Ryazha_
Мне нужно узнать выпал ли с игрока барьер и если выпал то отменить его выпадение. Желательно пример кода. Буду очень признателен. Я понял что это делать через спавнэнтети. Примерно так if (event.getEntityType() == EntityType.DROPPED_ITEM), а как узнать какой предмет хз.
 
Чего??

Тебе нужен EntityDeathEvent или PlayerDeathEvent.

Код:
List<ItemStack> drop = event.getDrops(); //дроп

Ну смотри я определил, что EntityType.DROPPED_ITEM. И из этого нужо уже узнать какой предмет выпал. Нужен баррьер
 
Ну смотри я определил, что EntityType.DROPPED_ITEM. И из этого нужо уже узнать какой предмет выпал. Нужен баррьер
Где ты определяешь?

Тебе нужно по списку List<ItemStack> drop пройтись циклом и найти барьер
 
Где ты определяешь?

Тебе нужно по списку List<ItemStack> drop пройтись циклом и найти барьер

Можно код пж. Я недавно начал писать на джаве плагины. Буду благодарен. И всё же по примеру легче понять.
 
так есть варианты кода?
Вот, попробуй (на сервере не проверял, но в теории должно работать):
Код:
    @EventHandler
    public void onPlayerDeath(PlayerDeathEvent e) {
        List<ItemStack> drop = e.getDrops();
        drop.removeIf(item -> item.getType() == Material.BARRIER);
    }
 
Вот, попробуй (на сервере не проверял, но в теории должно работать):
Код:
    @EventHandler
    public void onPlayerDeath(PlayerDeathEvent e) {
        List<ItemStack> drop = e.getDrops();
        drop.removeIf(item -> item.getType() == Material.BARRIER);
    }
Не робит
правда
 
@EventHandler
public void onPlayerDeath(PlayerDeathEvent event) {
List<ItemStack> drop = event.getDrops();
drop.removeIf(item -> item.getType() == Material.BARRIER);
}

баррьеры всё же выпадают
 
Шо не робит то? Ивент зарегал?
 
вот
 

Вложения

  • Снимок экрана (1250).png
    Снимок экрана (1250).png
    210,8 КБ · Просмотры: 9
класс с самим ивентом
 

Вложения

  • Снимок экрана (1251).png
    Снимок экрана (1251).png
    203 КБ · Просмотры: 8
по сути всё правильно
 
Ты предмет то от туда удаляешь?
 
Попробуй зарегать барьер как ItemStack, и уже его убирать
 
Попробуй зарегать барьер как ItemStack, и уже его убирать
Код:
   @EventHandler
   public void onPlayerDeath(PlayerDeathEvent e) {
       ItemStack barrier = new ItemStack(Material.BARRIER);
       List<ItemStack> drop = e.getDrops();
       drop.removeIf(item -> item.getType() == barrier);
   }
 
Назад
Верх