mirror of
				https://github.com/mcMMO-Dev/mcMMO.git
				synced 2025-11-04 02:53:43 +01:00 
			
		
		
		
	Fix: player is no longer immune to projectiles shot by themselves
This commit is contained in:
		@@ -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;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user