Handle buffers

This commit is contained in:
Nick Porillo 2015-02-17 19:21:46 -05:00 committed by drtshock
parent 5a9112ad37
commit d69f9e5688
4 changed files with 18 additions and 13 deletions

View File

@ -45,8 +45,8 @@ public abstract class Board {
// Is this coord connected to any coord claimed by the specified faction?
public abstract boolean isConnectedLocation(FLocation flocation, Faction faction);
// Is this location outside the world border?
public abstract boolean isOutsideWorldBorder(FLocation flocation);
// Is this location outside the world border?
public abstract boolean isOutsideWorldBorder(FLocation flocation, int buffer);
public abstract boolean hasFactionWithin(FLocation flocation, Faction faction, int radius);

View File

@ -134,14 +134,14 @@ public abstract class MemoryBoard extends Board {
* @param flocation claim chunk
* @return if claim chunk is outside world border
*/
public boolean isOutsideWorldBorder(FLocation flocation) {
public boolean isOutsideWorldBorder(FLocation flocation, int buffer) {
World world = flocation.getWorld();
WorldBorder border = world.getWorldBorder();
Chunk chunk = border.getCenter().getChunk();
int lim = FLocation.blockToChunk((int) border.getSize());
int lim = FLocation.chunkToRegion((int) border.getSize()) - buffer;
int diffX = (int) Math.abs(chunk.getX() - flocation.getX());
int diffZ = (int) Math.abs(chunk.getZ() - flocation.getZ());
return diffX + diffZ > lim;
return diffX > lim || diffZ > lim;
}
/**

View File

@ -658,7 +658,8 @@ public abstract class MemoryFPlayer implements FPlayer {
Faction myFaction = getFaction();
Faction currentFaction = Board.getInstance().getFactionAt(flocation);
int ownedLand = forFaction.getLandRounded();
int buffer = P.p.getConfig().getInt("hcf.buffer-zone", 0);
int factionBuffer = P.p.getConfig().getInt("hcf.buffer-zone", 0);
int worldBuffer = P.p.getConfig().getInt("world-border.buffer", 0);
if (Conf.worldGuardChecking && Worldguard.checkForRegionsInChunk(location)) {
// Checks for WorldGuard regions in the chunk attempting to be claimed
@ -695,10 +696,14 @@ public abstract class MemoryFPlayer implements FPlayer {
} else {
error = P.p.txt.parse(TL.CLAIM_FACTIONCONTIGUOUS.toString());
}
} else if (buffer > 0 && Board.getInstance().hasFactionWithin(flocation, myFaction, buffer)) {
error = P.p.txt.parse(TL.CLAIM_TOOCLOSETOOTHERFACTION.format(buffer));
} else if (Board.getInstance().isOutsideWorldBorder(flocation)) {
error = P.p.txt.parse(TL.CLAIM_OUTSIDEWORLDBORDER.toString());
} else if (factionBuffer > 0 && Board.getInstance().hasFactionWithin(flocation, myFaction, factionBuffer)) {
error = P.p.txt.parse(TL.CLAIM_TOOCLOSETOOTHERFACTION.format(factionBuffer));
} else if (Board.getInstance().isOutsideWorldBorder(flocation, worldBuffer)) {
if(worldBuffer > 0) {
error = P.p.txt.parse(TL.CLAIM_OUTSIDEBORDERBUFFER.format(worldBuffer));
} else {
error = P.p.txt.parse(TL.CLAIM_OUTSIDEWORLDBORDER.toString());
}
} else if (currentFaction.isNormal()) {
if (myFaction.isPeaceful()) {
error = P.p.txt.parse(TL.CLAIM_PEACEFUL.toString(), currentFaction.getTag(this));
@ -856,4 +861,4 @@ public abstract class MemoryFPlayer implements FPlayer {
public void setId(String id) {
this.id = id;
}
}
}

View File

@ -538,8 +538,8 @@ public enum TL {
CLAIM_CLAIMEDLOG("%s claimed land at (%s) for the faction: %s"),
CLAIM_OVERCLAIM_DISABLED("<i>Over claiming is disabled on this server."),
CLAIM_TOOCLOSETOOTHERFACTION("<i>Your claim is too close to another Faction. Buffer required is %d"),
CLAIM_OUTSIDEWORLDBORDER("<i>Your claim is outside the border. Buffer is %d chunks from world edge."),
CLAIM_OUTSIDEWORLDBORDER("<i>Your claim is outside the border."),
CLAIM_OUTSIDEBORDERBUFFER("<i>Your claim is outside the border. %d chunks away world edge required."),
/**
* More generic, or less easily categorisable translations, which may apply to more than one class
*/