If in PvP combat, not protected from PvP by claims.

Also a bug fix for the /ignoreclaims override to bypass pvp immunity in
land claims.
This commit is contained in:
ryanhamshire 2015-05-21 20:23:25 -07:00
parent d425f6736a
commit d1e29e7972

View File

@ -617,27 +617,32 @@ class EntityEventHandler implements Listener
if(GriefPrevention.instance.config_pvp_noCombatInPlayerLandClaims || GriefPrevention.instance.config_pvp_noCombatInAdminLandClaims) if(GriefPrevention.instance.config_pvp_noCombatInPlayerLandClaims || GriefPrevention.instance.config_pvp_noCombatInAdminLandClaims)
{ {
Claim attackerClaim = this.dataStore.getClaimAt(attacker.getLocation(), false, attackerData.lastClaim); Claim attackerClaim = this.dataStore.getClaimAt(attacker.getLocation(), false, attackerData.lastClaim);
if( attackerClaim != null && !attackerData.ignoreClaims && //ignore claims mode allows for pvp inside land claims if(!attackerData.ignoreClaims)
(attackerClaim.isAdminClaim() && attackerClaim.parent == null && GriefPrevention.instance.config_pvp_noCombatInAdminLandClaims ||
attackerClaim.isAdminClaim() && attackerClaim.parent != null && GriefPrevention.instance.config_pvp_noCombatInAdminSubdivisions ||
!attackerClaim.isAdminClaim() && GriefPrevention.instance.config_pvp_noCombatInPlayerLandClaims))
{ {
attackerData.lastClaim = attackerClaim; if( attackerClaim != null && //ignore claims mode allows for pvp inside land claims
event.setCancelled(true); !attackerData.inPvpCombat() &&
GriefPrevention.sendMessage(attacker, TextMode.Err, Messages.CantFightWhileImmune); (attackerClaim.isAdminClaim() && attackerClaim.parent == null && GriefPrevention.instance.config_pvp_noCombatInAdminLandClaims ||
return; attackerClaim.isAdminClaim() && attackerClaim.parent != null && GriefPrevention.instance.config_pvp_noCombatInAdminSubdivisions ||
} !attackerClaim.isAdminClaim() && GriefPrevention.instance.config_pvp_noCombatInPlayerLandClaims))
{
Claim defenderClaim = this.dataStore.getClaimAt(defender.getLocation(), false, defenderData.lastClaim); attackerData.lastClaim = attackerClaim;
if( defenderClaim != null && event.setCancelled(true);
(defenderClaim.isAdminClaim() && defenderClaim.parent == null && GriefPrevention.instance.config_pvp_noCombatInAdminLandClaims || GriefPrevention.sendMessage(attacker, TextMode.Err, Messages.CantFightWhileImmune);
defenderClaim.isAdminClaim() && defenderClaim.parent != null && GriefPrevention.instance.config_pvp_noCombatInAdminSubdivisions || return;
!defenderClaim.isAdminClaim() && GriefPrevention.instance.config_pvp_noCombatInPlayerLandClaims)) }
{
defenderData.lastClaim = defenderClaim; Claim defenderClaim = this.dataStore.getClaimAt(defender.getLocation(), false, defenderData.lastClaim);
event.setCancelled(true); if( defenderClaim != null &&
GriefPrevention.sendMessage(attacker, TextMode.Err, Messages.PlayerInPvPSafeZone); !defenderData.inPvpCombat() &&
return; (defenderClaim.isAdminClaim() && defenderClaim.parent == null && GriefPrevention.instance.config_pvp_noCombatInAdminLandClaims ||
defenderClaim.isAdminClaim() && defenderClaim.parent != null && GriefPrevention.instance.config_pvp_noCombatInAdminSubdivisions ||
!defenderClaim.isAdminClaim() && GriefPrevention.instance.config_pvp_noCombatInPlayerLandClaims))
{
defenderData.lastClaim = defenderClaim;
event.setCancelled(true);
GriefPrevention.sendMessage(attacker, TextMode.Err, Messages.PlayerInPvPSafeZone);
return;
}
} }
} }
} }