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

Помогите Баг с InventoryClickEvent

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

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

    1Love_Artix001 Участник

    Баллы:
    31
    Имя в Minecraft:
    1Love_Artix001
    Всем здравствуйте!
    В чём проблема: я пишу плагин на рюкзаки, и по сути, это шалкера которые открываются через ПКМ, но их нельзя поставить на землю. Так вот, если у меня во второй руке есть любой предмет, то событие InventoryClickEvent не срабатывает (оно если что ограничивает перемещение шалкеровых ящиков при открытом шалкере через ПКМ).

    Код:

    private void handleInventoryEvent(InventoryClickEvent event) {
    Player player = (Player) event.getWhoClicked();
    UUID uuid = player.getUniqueId();

    if (backpacks.containsKey(uuid)) {
    ItemStack item = openedShulkers.get(uuid); // Получаем шалкеровый ящик, который был открыт
    if (!isBackpack(item) || (!player.getInventory().containsAtLeast(item, 1) && !player.getInventory().getItemInOffHand().equals(item))) {
    event.setCancelled(true);
    player.closeInventory();
    backpacks.remove(uuid);
    openedShulkers.remove(uuid); // Удаляем ссылку на шалкеровый ящик
    } else {
    ItemStack clickedItem = event.getCurrentItem();
    if (isShulkerBox(clickedItem) || isShulkerBox(event.getCursor())) {
    event.setCancelled(true);
    }

    // Проверка на -1 перед тем, как пытаться получить предмет из горячей клавиши
    int hotbarButton = event.getHotbarButton();
    if (hotbarButton != -1) {
    ItemStack hotbarItem = player.getInventory().getItem(hotbarButton);
    if (isShulkerBox(hotbarItem)) {
    event.setCancelled(true);
    }
    }
    }
    }
    }
     
  2. alexandrage

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

    Баллы:
    173
    Если тебе нужно получить предмет которым кликается, то тебе нужен getCurrentItem()
     
  3. Dymeth

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

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Код нечитабельный, прикрепляй по-человечески:
    upload_2024-10-4_17-40-58.png
     

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