Помогите Как проверить заряжен ли арбалет?

BayForWhom

Ньюби
Пользователь
Баллы
1
Код:
@EventHandler
    public void booleanPatron(PlayerInteractEvent e) {
        if (e.getHand() == EquipmentSlot.HAND) {
            boolean itemIsOne = true;
            ItemMeta itemInMainHand = e.getPlayer().getInventory().getItemInMainHand().getItemMeta();
            if (itemInMainHand == null) return;
            if (e.getItem().getItemMeta().getDisplayName().equals(ChatColor.AQUA + "Мушкет")) {
                ItemStack item = e.getPlayer().getInventory().getItemInOffHand();
                e.setCancelled(item == null || item.getType() != Material.FIREWORK_ROCKET  || !item.getItemMeta().getDisplayName().equals(ChatColor.AQUA + "Пуля для Мушкета") & !itemIsOne);
            }
            if (itemInMainHand.getDisplayName().equals(ChatColor.AQUA + "Пуля для Мушкета")) {
                ItemStack item = e.getPlayer().getInventory().getItemInOffHand();
                e.setCancelled(item == null || item.getType() != Material.CROSSBOW || !item.getItemMeta().getDisplayName().equals(ChatColor.AQUA + "Мушкет"));
            }
        }
        else {
            if (e.getItem() == null) return;

            if (e.getItem().getItemMeta().getDisplayName().equals(ChatColor.AQUA + "Мушкет")) {
                ItemStack item = e.getPlayer().getInventory().getItemInMainHand();
                e.setCancelled(item == null || item.getType() != Material.FIREWORK_ROCKET || !item.getItemMeta().getDisplayName().equals(ChatColor.AQUA + "Пуля для Мушкета"));
            }
            if (e.getItem().getItemMeta().getDisplayName().equals(ChatColor.AQUA + "Пуля для Мушкета")) {
                ItemStack item = e.getPlayer().getInventory().getItemInMainHand();
                e.setCancelled(item == null || item.getType() != Material.CROSSBOW || !item.getItemMeta().getDisplayName().equals(ChatColor.AQUA + "Мушкет"));
            }
        }
    }

Есть у меня такой код, вкратце он нужен, чтобы вводить мушкет и пулю для него в игру. Этот код проверяет есть ли в левой руке пуля и если есть, то заряжает мушкет, если же нет, то отменяет зарядку. Это работает и если мушкет и пуля в разных руках.

Дело в том, что если пуля лишь одна, то происходит зарядка, после чего в левой руке ничего не остается, из-за чего действие отменяется, так как в левой нет пули. В этот момент эта пуля в мушкете.

Надеюсь, понятно объяснил. Я хочу перед всем этим кодом проверять, заряжен ли мушкет. Если заряжен - то просто возвращать функцию, чтобы действие не отменялось и можно было выстрелить. Видел, что есть CrossbowMeta, пытался ее использовать, но не понимаю как ее функции работают.

Помогите пожалуйста
 
мне кажется подобные вопросы задавали на этом форуме уже 200 раз
 
Да, это же у CrossbowMeta?
Я как раз-таки не понимаю как использовать его. Как это проверять?

Пытался объявить такой тип переменной, а мне выдался огромный перечень функций. Как с этим работать?
 
Да, это же у CrossbowMeta?
Я как раз-таки не понимаю как использовать его. Как это проверять?

Пытался объявить такой тип переменной, а мне выдался огромный перечень функций. Как с этим работать?
CrossbowMeta meta = (CrossbowMeta) item.getItemMeta();
 
Назад
Верх