Помогите Эффект при наличии определенного предмета в руке.

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

Kloper

Активный участник
Пользователь
Баллы
76
Имя в Minecraft
f3azzy
Привет ребята, пишу плагин и нужно на предмет когда он в руке наложить эффект. Пробовал через PlayerInteractEvent, вот что получилось :

@EventHandler
public void use(PlayerInteractEvent e){
if(e.getAction() != Action.RIGHT_CLICK_AIR && e.getAction() != Action.RIGHT_CLICK_BLOCK) return;
if(e.getPlayer().getInventory().getItemInMainHand().getType() != Material.DIAMOND) return;
Player p = e.getPlayer();
p.addPotionEffect(new PotionEffect(PotionEffectType.REGENERATION, 10, 3));

Но тут когда кликаешь по воздуху получилось, а мне нужно именно когда держишь, буду благодарен всем кто мне поможет.
 
Если не ошибаюсь, ивент называется PlayerItemHeldEvent. Он отвечает за смену активного слота в инвентаре (прокрутку колёсика мышки)
 
Если не ошибаюсь, ивент называется PlayerItemHeldEvent. Он отвечает за смену активного слота в инвентаре (прокрутку колёсика мышки)
надо чтобы именно при держании предмета в руке.
 
надо чтобы именно при держании предмета в руке.
Ну ты глуп что ли ору? Если после смены слота предмет тот, который тебе нужен, включаешь свою ***ню, после следующей смены отключаешь.
 
надо чтобы именно при держании предмета в руке.
Код:
@EventHandler
public void onItemHeld(PlayerItemHeldEvent event)
{
    Player player = event.getPlayer();
    int slotIndex = event.getNewSlot();
    ItemStack slotItem = player.getInventory().getItem(slotIndex); //Получение предмета в новом слоте
    if(slotItem == null || slotItem.getType() != Material.DIAMOND)    
        player.removePotionEffect(PotionEffectType.REGENERATION); //Если предмет в руке не равен алмазу, убрать эффект
    else
        player.addPotionEffect(new PotionEffect(PotionEffectType.REGENERATION, 10, 3)); //Иначе добавить эффект
}
 
А то, что у тебя действие эффекта - 10 тиков (полсекунды), тебя не смущает?
 
Назад
Верх