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

Помогите Дроп из сундука

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

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

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

    Баллы:
    11
    Имя в Minecraft:
    EvgeniyND
    Подскажите как получить то что было в сундуке при его разбитие?
     
  2. Mr Hosting
  3. AtomicScience

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

    Баллы:
    76
    Имя в Minecraft:
    AtomicScience
    e.getBlock().getDrops()
    Где e - твой BlockBreakEvent
     
  4. Автор темы
    EvgeniyND

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

    Баллы:
    11
    Имя в Minecraft:
    EvgeniyND
    Эта процедура возвращает сам разбитый сундук
     
  5. AtomicScience

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

    Баллы:
    76
    Имя в Minecraft:
    AtomicScience
    Ну, тогда попробуй получать из блока объект сундука, из него - инвентарь сундука, дальше сообразишь
     
  6. Автор темы
    EvgeniyND

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

    Баллы:
    11
    Имя в Minecraft:
    EvgeniyND
    Тоже не получается. Когда создаю объект сундука и беру инвентарь, то он уже пустой на тот момент. Событие onbreakevent уже произошло и дроп вылетел.
    Похоже получится только через костыль.
    Код:
    e.setCancelled(true);
    //тут получить инвентарь
    e.getBlock().breakNaturally(new ItemStack(Material.AIR));
     
    Последнее редактирование: 13 фев 2018
  7. Rider3217

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

    Баллы:
    98
    Имя в Minecraft:
    Planet0111
    Ну хз хз...

    Код:
    @EventHandler
        public void onBreak(BlockBreakEvent e) {
            if (e.getBlock().getType() == Material.CHEST) {
                Chest box = (Chest) e.getBlock().getState();
                Inventory inven = box.getInventory();
                for (ItemStack i : inven.getContents()) {
                    if(i != null)System.out.println(i.getType().name());
                }
            }
        }
     
  8. Автор темы
    EvgeniyND

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

    Баллы:
    11
    Имя в Minecraft:
    EvgeniyND
    Да спасибо. Проверил, перебрал итемсы все есть. Но когда я записываю инвентарь в переменную и потом создав сундук применяю из переменной то все итемсы почему то AIR
     
  9. Dexel

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

    Баллы:
    76
    Попробуй создать список<ItemStack> и записать туда каждый предмет в твоём инвентаре.
    Думаю, это будет выглядеть как-то так:
    Код:
    List<ItemStack> items = new ArrayList<>();
    inven.forEach(items::add);
     

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