Помогите Как проверить какой тип предмета в руке - блок, итем и т.д.

  • Автор темы Автор темы Kirpich
  • Дата начала Дата начала

Kirpich

Новичок
Пользователь
Баллы
6
Мне нужна какая-то проверка можно ли использовать предмет в руке.
Использую PlayerInteractEvent и, если в руке нужный мне предмет, то действие проходит, если же ненужный, то нет.

Задумка такая. Мне нужно запретить заряжать мушкет (переделанный арбалет) стрелами. Он должен заряжаться только специальными фейерверками (сделанными под пули). Это я сделал с помощью PlayerInteractEvent, но только с правой рукой.

Проблема начинается с левой, так как если в правой руке предмет, который нельзя использовать (для примера - уголь), то арбалет в левой руке начнет заряжаться стрелой, если конечно она есть в инвентаре. Мне нужно отменять зарядку, если в правой руке предмет, который нельзя использовать (уголь). И не отменять действие, если предмет в правой руке можно как-то использовать (любой блок).

Понимаю, что скорее всего ничего не понятно, но правда не знаю как написать это более доступно. Скину еще код для случая, если мушкет у нас в правой руке.
Код:
public void booleanPatron(PlayerInteractEvent e) {   
        ItemMeta itemInMainHand =    e.getPlayer().getInventory().getItemInMainHand().getItemMeta();
        if (itemInMainHand.getDisplayName().equals(ChatColor.AQUA + "Пуля для Мушкета") || e.getPlayer().getInventory().getItemInOffHand().getItemMeta().getDisplayName().equals(ChatColor.AQUA + "Пуля для Мушкета")) {
            if (e.getPlayer().getInventory().getItemInMainHand().getType() == Material.FIREWORK_ROCKET) {
                if ((e.getAction() != Action.RIGHT_CLICK_AIR) && (e.getAction() != Action.RIGHT_CLICK_BLOCK)) return; //действие в событие ПКМ по блоку или воздуху
                e.setCancelled(true);
            }
        }
    }
Пока что получалось только полностью отменять действия, если в правой руке не пуля.
 
Делать проверку на предмет по DisplayName, разве игроки не могут его сами переименовать?
 
Назад
Верх