1Love_Artix001
Пользователь
- Сообщения
- 40
Разрешается выкладывание кода, файлов конфигураций, логов и т.д. только под BB-код CODE
Всем здравствуйте, у меня в плагине есть метод InventoryClickEvent который отвечает за запрет перемещения некоторых предметов (шалкеровых ящиков) в инвентаре. вот код:
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 руке предмет, то этот метод попросту не работает.
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 руке предмет, то этот метод попросту не работает.