Add method to get all claims for a given faction.

This commit is contained in:
drtshock 2015-04-26 00:02:30 -05:00
parent d0b514eff6
commit 9076e780cf
4 changed files with 34 additions and 8 deletions

View File

@ -3,6 +3,7 @@ package com.massivecraft.factions;
import com.massivecraft.factions.zcore.persist.json.JSONBoard;
import java.util.ArrayList;
import java.util.Set;
public abstract class Board {
@ -33,6 +34,10 @@ public abstract class Board {
public abstract void removeAt(FLocation flocation);
public abstract Set<FLocation> getAllClaims(String factionId);
public abstract Set<FLocation> getAllClaims(Faction faction);
// not to be confused with claims, ownership referring to further member-specific ownership of a claim
public abstract void clearOwnershipAt(FLocation flocation);

View File

@ -232,5 +232,7 @@ public interface Faction extends EconomyParticipator {
// ----------------------------------------------//
public void remove();
public Set<FLocation> getAllClaims();
public void setId(String id);
}

View File

@ -6,10 +6,7 @@ import com.massivecraft.factions.util.AsciiCompass;
import com.massivecraft.factions.util.LazyLocation;
import org.bukkit.ChatColor;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.*;
import java.util.Map.Entry;
@ -57,6 +54,22 @@ public abstract class MemoryBoard extends Board {
flocationIds.remove(flocation);
}
public Set<FLocation> getAllClaims(String factionId) {
Set<FLocation> locs = new HashSet<FLocation>();
Iterator<Entry<FLocation, String>> iter = flocationIds.entrySet().iterator();
while (iter.hasNext()) {
Entry<FLocation, String> entry = iter.next();
if (entry.getValue().equals(factionId)) {
locs.add(entry.getKey());
}
}
return locs;
}
public Set<FLocation> getAllClaims(Faction faction) {
return getAllClaims(faction.getId());
}
// not to be confused with claims, ownership referring to further member-specific ownership of a claim
public void clearOwnershipAt(FLocation flocation) {
Faction faction = getFactionAt(flocation);
@ -105,11 +118,13 @@ public abstract class MemoryBoard extends Board {
}
/**
* Checks if there is another faction within a given radius other than Wilderness.
* Used for HCF feature that requires a 'buffer' between factions.
* Checks if there is another faction within a given radius other than Wilderness. Used for HCF feature that
* requires a 'buffer' between factions.
*
* @param flocation - center location.
* @param faction - faction checking for.
* @param radius - chunk radius to check.
* @param faction - faction checking for.
* @param radius - chunk radius to check.
*
* @return true if another Faction is within the radius, otherwise false.
*/
public boolean hasFactionWithin(FLocation flocation, Faction faction, int radius) {

View File

@ -787,4 +787,8 @@ public abstract class MemoryFaction implements Faction, EconomyParticipator {
fPlayer.resetFactionData(false);
}
}
public Set<FLocation> getAllClaims() {
return Board.getInstance().getAllClaims(this);
}
}