When trying to get the item in hand, it doesn't seem to work. Is there something wrong with my code? Code: @EventHandler public void onEntityDamageEvent(EntityDamageEvent event) { if(event.getEntity() instanceof Player) { Player p = (Player) event.getEntity(); if(!(Avengers.avengerType >= 3)) { p.setHealth(20); event.setCancelled(true); }//is assembled, and not 3, 4, or 5 if(Avengers.avengerType == 3) { if(p.getInventory().getItemInHand().getType() == Material.PISTON_EXTENSION) { event.setDamage(0); } else { event.setDamage(event.getDamage() / 2); }//piston }//captainAmerica }//if it is a player }//event method It works if the avengerType is less than 3, but when avengerType is 3, it won't work. I used this code to spawn a piston extension. Am I missing something? Code: ItemStack item = new ItemStack(Material.PISTON_EXTENSION); ItemMeta meta = item.getItemMeta(); meta.setDisplayName(ChatColor.LIGHT_PURPLE + "Super Shield!"); item.setItemMeta(meta); (I noticed half damage being dealt, so I do know it gets to the else.
Bobfan if(p.getInventory().getItemInHand().getType().equals(Material.PISTON_EXTENSION)) not sure if it matters but it could
Bobfan i honestly don't know it looks good from my end and you say it gets to the else statement so....
It seems to skip over it even though it seems right? Ninja'd again! null. It still gives me damage. Wait... FIXED! My code I HAD: Code: if(p.getItemInHand().getType().equals(Material.PISTON_EXTENSION)) { p.setHealth(20); } else { I changed it in my original post, but forgot to change it in my actually code. I forgot to add event.setCancelled(true) so it basically did nothing. On seeing this, I fixed it and changed it to normal. Sorry guys. EDIT by Moderator: merged posts, please use the edit button instead of double posting.