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

Помогите Закрытие инвентаря

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

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

    arseniy2 Ньюби

    Баллы:
    1
    Как можно отменить ивент закрытия инвентаря?
    InventoryCloseEvent не имеет setCancelled

    В случае, если я делаю:
    Код:
    @EventHandler
        public void onInventoryClose(InventoryCloseEvent event) {
            Player player = (Player) event.getPlayer();
    
            if (event.getView().getTitle().equalsIgnoreCase("Выбор класса") && player.hasPlayedBefore()) {
                player.openInventory(event.getInventory());
            }
        }
    Сервер крашится.
    Прикрепляю crash-report.
     

    Вложения:

  2. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Ну логично лол, у тебя StackOverflowError, бесконечный цикл.
     
  3. imDaniX

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

    Баллы:
    96
    Имя в Minecraft:
    imDaniX
    Как выше alexandrage сказал, у тебя код циклично себя выполняет. В момент InventoryCloseEvent предыдущий инвентарь фактически ещё не закрыт, а при открытии нового посредством openInventory закрывается старый. В итоге у тебя раз за разом открывается и закрывается один и тот же инвентарь.
    Как и советуется в JavaDoc'е ивента, отложи его выполнение. Небольшая статейка по пользованию тут.
     
  4. SashaBrine

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

    Баллы:
    76
    Имя в Minecraft:
    IJustFortiLive
    event.setCancelled(true) для кого придумали???
     
  5. OJIEKCAHDP

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

    Баллы:
    76
    Имя в Minecraft:
    OJIEKCAHDP
    Перед тем как писать, стоит хотя бы вникнуть. InventoryCloseEvent не Cancellable, следовательно - неотменяемый.
     

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