Вопрос Запретить перенос из своего инвентаря в другой

Версия Minecraft
1.19.X

manul694

Premium
Сообщения
1,034
Решения
31
Я при помощи Player.openinventory открываю игроку инвентарь (назовём его инвентарь наград), в который ничего нельзя положить, но с него можно взять. PlayerMoveItemEvent не вызывается, он вообще для другого. Пробовал вот это: if (e.cursor != null && e.cursor!!.type != Material.AIR && e.inventory.holder is ForpostInventoryHolder) e.isCancelled = true, но тогда можно зажав ЛКМ перенести свой предмет в инвентарь наград. Как мне сделать так, чтобы я ничего не мог положить в этот инвентарь, но смог взять оттуда?

P. S. Я в выживании, это не из-за креатива
 
Решение
Должно идеально работать
Java:
    @EventHandler
    public void onInventoryClick(InventoryClickEvent event) {
        if (event.getClickedInventory() == null) return;

        if (event.getClickedInventory() == event.getInventory()) {
            if (event.getHotbarButton() != -1 &&
                    event.getWhoClicked().getInventory().getItem(event.getHotbarButton()) != null) {
                event.setCancelled(true);
                
            } else if (event.getClick() == ClickType.SWAP_OFFHAND) {
                ItemStack off = event.getWhoClicked().getInventory().getItemInOffHand();
                if (!off.getType().isEmpty()) {
                    event.setCancelled(true);
                }
            }
        } else...
Должно идеально работать
Java:
    @EventHandler
    public void onInventoryClick(InventoryClickEvent event) {
        if (event.getClickedInventory() == null) return;

        if (event.getClickedInventory() == event.getInventory()) {
            if (event.getHotbarButton() != -1 &&
                    event.getWhoClicked().getInventory().getItem(event.getHotbarButton()) != null) {
                event.setCancelled(true);
                
            } else if (event.getClick() == ClickType.SWAP_OFFHAND) {
                ItemStack off = event.getWhoClicked().getInventory().getItemInOffHand();
                if (!off.getType().isEmpty()) {
                    event.setCancelled(true);
                }
            }
        } else if (event.getCurrentItem() != null ||
                event.getAction() == InventoryAction.MOVE_TO_OTHER_INVENTORY){
            event.setCancelled(true);
        }
    }
 
Назад
Сверху Снизу