Skip to content

Commit

Permalink
Fix: player is no longer immune to projectiles shot by themselves (#4856
Browse files Browse the repository at this point in the history
)
  • Loading branch information
nopeless committed Jan 28, 2023
1 parent 965540d commit 08b08b1
Showing 1 changed file with 17 additions and 27 deletions.
44 changes: 17 additions & 27 deletions src/main/java/com/gmail/nossr50/listeners/EntityListener.java
Expand Up @@ -362,40 +362,30 @@ else if (attacker instanceof TNTPrimed && defender instanceof Player) {

//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();

//Check for party friendly fire and cancel the event
if (checkParties(event, defendingPlayer, attackingPlayer))
{
return;
}

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;
}
}

//Deflect checks
final McMMOPlayer mcMMOPlayer = UserManager.getPlayer(defendingPlayer);
if (mcMMOPlayer != null) {
UnarmedManager unarmedManager = mcMMOPlayer.getUnarmedManager();
//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;
}
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;
}
}

Expand Down

0 comments on commit 08b08b1

Please sign in to comment.