Помогите Работа с инвентарями. Как ложить в инвентарь определенную вещь?

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

KoreeeZ

Активный участник
Пользователь
Баллы
66
Имя в Minecraft
KoreeeZ
Здравствуйте!
Задача: мы получаем с помощью команды инвентарь ̶в̶ ̶к̶о̶т̶о̶р̶ы̶й̶ ̶м̶о̶ж̶е̶м̶ ̶п̶о̶л̶о̶ж̶и̶т̶ь̶ ̶Т̶О̶Л̶Ь̶К̶О̶ ̶з̶а̶д̶а̶н̶н̶ы̶й̶ ̶н̶а̶м̶и̶ ̶п̶р̶е̶д̶м̶е̶т̶, так же нужно считывать что и сколько лежит в этом инвентаре (и выводить в чат) при выходе из него.

Я создал инвентарь и запретил какие либо-действия с ним.
Код:
    @EventHandler
    public void onInventoryClick (InventoryClickEvent e){
        Player p = (Player) e.getWhoClicked();
        ItemStack itemmelon = new ItemStack(Material.MELON);
      
        if (e.getInventory().getName().equalsIgnoreCase("Продажа арбузов")){
            e.setCancelled(true);
           //скорее всего здесь нужна доработка, но какая сам не понимаю
        } 
    }

Возможно я выбрал не столь подходящий Евент, ну не знаю... Помогите, пожалуйста
 
Последнее редактирование:
Ну так-то, если ты закрываешь инвентарь, то тебе нужен InventoryCloseEvent...
 
Последнее редактирование:
Ну так-то, если ты закрываешь инвентарь, то тебе нужен InventoryCloseEvent...
А остальное? Как мне разрешить взаимодействие только определенному предмету, а также подсчитывать его?
 
А остальное? Как мне разрешить взаимодействие только определенному предмету, а также подсчитывать его?
Если ты на счет того, чтобы нельзя было засовывать ничего, кроме арбузов, то
Java:
if(e.getCurrentItem().getType() != Material.MELON) e.setCancelled(true);
 
Если ты на счет того, чтобы нельзя было засовывать ничего, кроме арбузов, то
Java:
if(e.getCurrentItem().getType() != Material.MELON) e.setCancelled(true);
Ненадежно, кладем предмет в равслот и жмякаем number_key. Наипали систему.
 
Эмм.. В каком смысле? :D. Что за rawSlot? Как то его держать нужно особенно!?
Java:
        if(e.getAction() == InventoryAction.HOTBAR_SWAP) {
            ItemStack item = e.getWhoClicked().getInventory().getItem(e.getHotbarButton());
            Тут проверяем наш предмет.
        }
Осторожно, нулл если ничего нет.
 
Ах да, есть же еще один тп перемещения, PICKUP_ALL и PLACE_ONE. Там нужно смотреть e.getCursor() Ну и PLACE_SOME на всякий, ибо я хз когда оно юзается.
Насколько я помню, PLACE_SOME используется, когда кладётся часть предметов, которой не хватает до полного стака. Например в руке 10 предметов, а в слоте 60, таким образом только 4 положится в слот.
Но это не точно.
 
Назад
Верх