Make class pets aggro hostile mobs who attack their owners.

When a player takes damage from a hostile mob, the player's class pets will have their target set to that mob. This means that even zombies can function as "real" pets!
This commit is contained in:
Andreas Troelsen
2019-08-05 16:16:18 +02:00
parent ab031e3e63
commit b44b808d38
2 changed files with 15 additions and 1 deletions
@@ -32,6 +32,7 @@ import org.bukkit.entity.Entity;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Horse;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Mob;
import org.bukkit.entity.Player;
import org.bukkit.entity.Projectile;
import org.bukkit.entity.Slime;
@@ -706,6 +707,19 @@ public class ArenaListener
}
event.setCancelled(false);
arena.getArenaPlayer(player).getStats().add("dmgTaken", event.getDamage());
// Redirect pet aggro (but not at players)
if (damager instanceof LivingEntity && !(damager instanceof Player)) {
LivingEntity target = (LivingEntity) damager;
monsters.getPets(player).forEach(pet -> {
if (pet instanceof Mob) {
Mob mob = (Mob) pet;
if (mob.getTarget() == null) {
mob.setTarget(target);
}
}
});
}
}
}