1. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Помогите InventoryClickEvent триггерится через раз

Тема в разделе "Разработка плагинов для новичков", создана пользователем Kerskiy, 18 авг 2022.

Статус темы:
Закрыта.
  1. Автор темы
    Kerskiy

    Kerskiy Новичок

    Баллы:
    6
    Хочу в своём плагине запретить ложить определенный предмет в сундук(Именно если игрок ложит предмет в сундук, а не просто берёт его в курсор). Пробую самый простой код:
    Код:
    @EventHandler
    public void onInventoryClick(InventoryClickEvent e) {
      e.getWhoClicked().sendMessage(e.getCursor().getType().toString());
    }
    Если, к примеру, 5-7 раз кликать по одному и тому же слоту(Необязательно быстро), а затем кликнуть на другой слот - событие просто напросто не вызовется. Оно не вернёт ни null, ни AIR. Ничего, просто пропуск. Ещё раз кликаешь - и уже выводится материал предмета.

    Пробовал отслеживать два ивента: InventoryDragEvent и InventoryClickEvent. Та же ситуация, ни один ивент не выводит в такой ситуации сообщение в чат
     
  2. OJIEKCAHDP

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

    Баллы:
    76
    Имя в Minecraft:
    OJIEKCAHDP
  3. Автор темы
    Kerskiy

    Kerskiy Новичок

    Баллы:
    6
    Я же написал, что пробовал отслеживать два события одновременно: и InventoryDrag, и InventoryClick. И ничего не выходило, InventoryDragEvent так же пропускал этот клик
     
  4. Sturm_PT

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

    Баллы:
    76
    А существует ещё InventoryMoveItemEvent
    Слушай все три ивента и будет тебе счастье
     
  5. Автор темы
    Kerskiy

    Kerskiy Новичок

    Баллы:
    6
    Думаешь? Я слушал 4 ивента сразу, 2 для запрета воронок(InventoryPickupItem и InventoryMoveItem), где стояло e.setCancelled(true). Остальные 2 - с сообщением, и InventoryMoveItem ниразу не сработал в этой ситуации
     
  6. Автор темы
    Kerskiy

    Kerskiy Новичок

    Баллы:
    6
    Кажется, проблема решена. Заключалась в коде выше, подозреваю e.getView()...
     
Статус темы:
Закрыта.

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