Fix: player is no longer immune to projectiles shot by themselves (#4856)

This commit is contained in:
nopeless 2023-01-28 13:57:31 -06:00 committed by GitHub
parent 965540dfaf
commit 08b08b1285
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -362,40 +362,30 @@ public class EntityListener implements Listener {
//Friendly fire checks
if (defender instanceof Player defendingPlayer) {
Player attackingPlayer;
//If the attacker is a Player or a projectile belonging to a player
if(attacker instanceof Projectile || attacker instanceof Player) {
if(attacker instanceof Projectile projectile) {
if(((Projectile) attacker).getShooter() instanceof Player) {
attackingPlayer = (Player) projectile.getShooter();
if(attacker instanceof Projectile projectile) {
if(projectile.getShooter() instanceof Player attackingPlayer && !attackingPlayer.equals(defendingPlayer)) {
//Check for party friendly fire and cancel the event
if (checkParties(event, defendingPlayer, attackingPlayer)) {
return;
}
}
//Check for party friendly fire and cancel the event
if (checkParties(event, defendingPlayer, attackingPlayer))
{
//Deflect checks
final McMMOPlayer mcMMOPlayer = UserManager.getPlayer(defendingPlayer);
if (mcMMOPlayer != null) {
UnarmedManager unarmedManager = mcMMOPlayer.getUnarmedManager();
if (unarmedManager.canDeflect()) {
if (projectile instanceof Arrow && unarmedManager.deflectCheck()) {
event.setCancelled(true);
return;
}
}
//Deflect checks
final McMMOPlayer mcMMOPlayer = UserManager.getPlayer(defendingPlayer);
if (mcMMOPlayer != null) {
UnarmedManager unarmedManager = mcMMOPlayer.getUnarmedManager();
if (unarmedManager.canDeflect()) {
if (projectile instanceof Arrow && unarmedManager.deflectCheck()) {
event.setCancelled(true);
return;
}
}
}
} else {
attackingPlayer = (Player) attacker;
//Check for party friendly fire and cancel the event
if (checkParties(event, defendingPlayer, attackingPlayer))
return;
}
} else if (attacker instanceof Player attackingPlayer){
if (checkParties(event, defendingPlayer, attackingPlayer))
return;
}
}