1. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Помогите Не работает ItemInOffHand в PlayerInteractEvent

Тема в разделе "Разработка плагинов для новичков", создана пользователем Kirpich, 21 мар 2022.

  1. Автор темы
    Kirpich

    Kirpich Новичок Пользователь

    Баллы:
    6
    Есть у меня такой код. Проблема в том, что с правой рукой работает проверка, а с левой нет. Задача такая - отменять запуск фейерверка или же зарядку арбалета, если в ЛЕВОЙ руке у меня специальный мушкет или фейерверк (со специальными названиями).

    Для правой руки все работает как я хочу, если патрон в левой руке есть, то арбалет заряжается, если же нет, то нет. Теперь вот не могу с левой решить проблему. Я даже пытался в чат выводить предмет в левой руке, но он либо выводит null, либо не выводит вообще ничего.

    Помогите пожалуйста.

    Код:
    @EventHandler
        public void booleanPatron(PlayerInteractEvent e) {
            ItemMeta itemInMainHand = e.getPlayer().getInventory().getItemInMainHand().getItemMeta();
            ItemMeta itemInOffHand = e.getPlayer().getInventory().getItemInOffHand().getItemMeta();
            if (itemInMainHand.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 + "Пуля для Мушкета"));
            }
            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 + "Мушкет"));
            }
    
            if (itemInOffHand.getDisplayName().equals(ChatColor.AQUA + "Мушкет")) {
                e.getPlayer().sendMessage("в левой руке у тебя мушкет");
                e.setCancelled(true);
            }
            if (itemInOffHand.getDisplayName().equals(ChatColor.AQUA + "Пуля для Мушкета")) {
                e.getPlayer().sendMessage("в левой руке у тебя пуля");
                e.setCancelled(true);
            }
        }
     
  2. ZDCoder

    ZDCoder Активный участник Пользователь

    Баллы:
    76
    Если выводит null - предмета в руке нет.
     
  3. OJIEKCAHDP

    OJIEKCAHDP Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    OJIEKCAHDP
  4. Автор темы
    Kirpich

    Kirpich Новичок Пользователь

    Баллы:
    6
    Я сейчас про левую руку пишу. Та тема закрыта, в правой все работает отлично, но вот теперь происходит что-то не то, из-за чего и не работает. Ищу с чем это связано, ведь раньше все работало.
     
  5. OJIEKCAHDP

    OJIEKCAHDP Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    OJIEKCAHDP
    Ну так если тебе нужно то же самое только наоборот, то замени везде проверки с правой руки на левую и с левой на правую, по тому примеру. В чём проблема?
     
  6. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Код:
        @EventHandler
        public void booleanPatron(PlayerInteractEvent e) {
            if (e.getHand() == EquipmentSlot.HAND) {
                Использовался предмет в правой руке
            } else {
                Использовался предмет в левой руке
            }
        }
    
     
    Последнее редактирование: 22 мар 2022
  7. Автор темы
    Kirpich

    Kirpich Новичок Пользователь

    Баллы:
    6
    В том то и дело, что этот способ не работает. Майнкрафт просто ничего не видит. Причем с main hand все идеально, а вот off hand он будто даже не проверяет.
     
  8. Zuif

    Zuif Активный участник Пользователь

    Баллы:
    76
    в чем проблема посмотреть что не так дебагом, а не гадать? присылай игроку название предмета, может с ним проблема, присылай сообщения по коду чтобы понять, где он перестал работать
     
  9. Автор темы
    Kirpich

    Kirpich Новичок Пользователь

    Баллы:
    6
    Огромное спасибо, то что нужно!
     
  10. Автор темы
    Kirpich

    Kirpich Новичок Пользователь

    Баллы:
    6
    Так и делал, выше писал. Ничего не выводилось, но проблема уже решена.
     

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