Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

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

Метки:
Теги Теги
bukkit paper помогите

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);
}
}
}
}
}
 
Если тебе нужно получить предмет которым кликается, то тебе нужен getCurrentItem()
 
Код нечитабельный, прикрепляй по-человечески:
upload_2024-10-4_17-40-58.png
 

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

Назад
Верх