@EventHandler public void onDamage(EntityDamageByEntityEvent event) { if (!(event.getEntity() instanceof Player && event.getDamager() instanceof Player)) return; // We only want to check this if players hit each other final Player attacker = (Player) event.getDamager(); if (attacker.getInventory().getHeldItemSlot() != 8) return; final Player victim = (Player) event.getEntity(); if (AbilityManager.getInstance().getCurrentSpell(attacker) instanceof AbilityHealing) { event.setCancelled(true); victim.setHealth(victim.getMaxHealth()); ParticleEffect.HEART.display( Vector.getRandom(), 1, victim.getEyeLocation().add(0, 0, .25), Bukkit.getOnlinePlayers()); } if (!(AbilityManager.getInstance().getCurrentSpell(attacker) instanceof AbilityHeartripping)) return; // Make sure the person punching has heartripping active if (!AbilityManager.getInstance().getCurrentSpell(attacker).canUse(attacker)) return; if (victim.hasPermission("heart.block")) { ChatManager.messageBad(attacker, "That player is too powerful!"); ChatManager.messageGood( victim, attacker.getName() + " attempted to rip out your heart but was too weak!"); return; } if (!spellSelection.containsKey(attacker) || !spellSelection.get(attacker).equals(victim)) { ChatManager.messageGood( attacker, "You ripped " + victim.getName() + "'s heart out of their body!"); ChatManager.messageBad( victim, attacker.getName() + " has ripped your heart out of your body!"); spellSelection.put(attacker, victim); } attacker.getInventory().setItemInMainHand(getValidBook(attacker)); }