Fixed claims with subdivisions living on as ghosts.
Claims like this, when deleted, would still protect the area for any players who have that claim cached. This change seems to have fixed the issue.
This commit is contained in:
parent
c755926e40
commit
4c6b215407
|
|
@ -466,44 +466,49 @@ public abstract class DataStore
|
||||||
//deletes a claim or subdivision
|
//deletes a claim or subdivision
|
||||||
synchronized public void deleteClaim(Claim claim)
|
synchronized public void deleteClaim(Claim claim)
|
||||||
{
|
{
|
||||||
//subdivisions are simple - just remove them from their parent claim and save that claim
|
//subdivisions are simple - just remove them from their parent claim and save that claim
|
||||||
if(claim.parent != null)
|
if(claim.parent != null)
|
||||||
{
|
{
|
||||||
Claim parentClaim = claim.parent;
|
Claim parentClaim = claim.parent;
|
||||||
parentClaim.children.remove(claim);
|
parentClaim.children.remove(claim);
|
||||||
this.saveClaim(parentClaim);
|
claim.inDataStore = false;
|
||||||
|
this.saveClaim(parentClaim);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//delete any children
|
||||||
|
for(int j = 0; j < claim.children.size(); j++)
|
||||||
|
{
|
||||||
|
this.deleteClaim(claim.children.get(j));
|
||||||
|
}
|
||||||
|
|
||||||
|
//mark as deleted so any references elsewhere can be ignored
|
||||||
|
claim.inDataStore = false;
|
||||||
|
|
||||||
//remove from memory
|
//remove from memory
|
||||||
for(int i = 0; i < this.claims.size(); i++)
|
for(int i = 0; i < this.claims.size(); i++)
|
||||||
{
|
{
|
||||||
if(claims.get(i).id.equals(claim.id))
|
if(claims.get(i).id.equals(claim.id))
|
||||||
{
|
{
|
||||||
this.claims.remove(i);
|
this.claims.remove(i);
|
||||||
claim.inDataStore = false;
|
|
||||||
for(int j = 0; j < claim.children.size(); j++)
|
|
||||||
{
|
|
||||||
claim.children.get(j).inDataStore = false;
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
ArrayList<String> chunkStrings = claim.getChunkStrings();
|
|
||||||
for(String chunkString : chunkStrings)
|
|
||||||
{
|
|
||||||
ArrayList<Claim> claimsInChunk = this.chunksToClaimsMap.get(chunkString);
|
|
||||||
for(int j = 0; j < claimsInChunk.size(); j++)
|
|
||||||
{
|
|
||||||
if(claimsInChunk.get(j).id.equals(claim.id))
|
|
||||||
{
|
|
||||||
claimsInChunk.remove(j);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ArrayList<String> chunkStrings = claim.getChunkStrings();
|
||||||
|
for(String chunkString : chunkStrings)
|
||||||
|
{
|
||||||
|
ArrayList<Claim> claimsInChunk = this.chunksToClaimsMap.get(chunkString);
|
||||||
|
for(int j = 0; j < claimsInChunk.size(); j++)
|
||||||
|
{
|
||||||
|
if(claimsInChunk.get(j).id.equals(claim.id))
|
||||||
|
{
|
||||||
|
claimsInChunk.remove(j);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//remove from secondary storage
|
//remove from secondary storage
|
||||||
this.deleteClaimFromSecondaryStorage(claim);
|
this.deleteClaimFromSecondaryStorage(claim);
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user