/** * Handle EntityTarget events. * * @param event The event to process */ @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) public void onEntityTarget(EntityTargetEvent event) { Entity entity = event.getEntity(); Entity target = event.getTarget(); if (!(entity instanceof Tameable) || !(target instanceof Player)) { return; } Player player = (Player) target; Tameable tameable = (Tameable) entity; if (!CombatUtils.isFriendlyPet(player, tameable)) { return; } // isFriendlyPet ensures that the Tameable is: Tamed, owned by a player, and the owner is in the // same party // So we can make some assumptions here, about our casting and our check if (!(Permissions.friendlyFire(player) && Permissions.friendlyFire((Player) tameable.getOwner()))) { event.setCancelled(true); } }