Solved PotionEffect on PlayerItemHeldEvent

Discussion in 'Plugin Development' started by Marten Mooij, Jul 30, 2014.

Thread Status:
Not open for further replies.
  1. Offline

    Marten Mooij

    Hey, I want to make it so that when a player has a certain item in-hand it gives them a potion effect for example Night Vision and when the player switches to another item the potion effect gets removed. How would I go about doing this? Making a repeating task when a player logs in doesn't seem right and would cause lag. Thanks
     
  2. Offline

    TheMcScavenger

    I don't think there's actually an event for a player changing the item in their hand... I really suggest a repeating task.

    EDIT: PlayerItemHeldEvent
     
  3. Offline

    Chiller

    Marten Mooij PlayerItemHeldEvent Does exactly what you want
     
  4. Offline

    Marten Mooij

    So here is my really simple code:
    Code:java
    1. @EventHandler
    2. public void onItemSwitch1(PlayerItemHeldEvent event){
    3. Player player = event.getPlayer();
    4. if(player.getItemInHand().hasItemMeta()){
    5. if(player.getItemInHand().getItemMeta().getDisplayName().contains(ChatColor.WHITE + main.getConfig().getString("Cleaver-itemName"))){
    6. player.sendMessage(ChatColor.GOLD + "Cleaver in-hand");
    7. //Do Amazing Stuff Here
    8. }
    9. }
    10. }
    11. }

    The problem is when I switch to the Cleaver the event doesn't get "triggered" but when I switch away from the Cleaver it does. Is there something I am missing or does this event need some extra "Special" code? Lemme tag you real quick: TheMcScavenger Chiller
     
  5. Offline

    TheMcScavenger

  6. Offline

    Marten Mooij

    TheMcScavenger Thank you. I got it to work, I will keep this piece of code in mind for the future:
    Code:java
    1. ItemStack item = player.getInventory().getItem(event.getNewSlot());
    If you were wondering how I did it here you go:
    Code:java
    1. @EventHandler
    2. public void onItemSwitch1(PlayerItemHeldEvent event){
    3. Player player = event.getPlayer();
    4. ItemStack item = player.getInventory().getItem(event.getNewSlot());
    5.  
    6. if(item != null && item.getTypeId() == 293){
    7. if(item.hasItemMeta()){
    8. if(item.getItemMeta().getDisplayName().contains(ChatColor.WHITE + main.getConfig().getString("Cleaver-itemName"))){
    9.  
    10. player.addPotionEffect(new PotionEffect(PotionEffectType.SLOW_DIGGING, 10000, 4));
    11. Cleaver.add(player.getName());
    12. //Do awesome stuff out of this event.
    13. }
    14. }
    15. }
    16. }
    Thank you for helping TheMcScavenger and Chiller it's not much but here you go: [cake]
     
  7. Offline

    GuardianNinja

    Thank you so much! Idk you guys are reading this but I needed this so much!
     
Thread Status:
Not open for further replies.

Share This Page