Assign claim ID to new claims before calling ClaimCreatedEvent (#465)

This commit is contained in:
Sigurdur 2019-03-03 11:42:04 +08:00 committed by RoboMWM
parent 59c9157edc
commit 50d0376525

View File

@ -563,14 +563,18 @@ public abstract class DataStore
//saves any changes to a claim to secondary storage //saves any changes to a claim to secondary storage
synchronized public void saveClaim(Claim claim) synchronized public void saveClaim(Claim claim)
{ {
assignClaimID(claim);
this.writeClaimToStorage(claim);
}
private void assignClaimID(Claim claim) {
//ensure a unique identifier for the claim which will be used to name the file on disk //ensure a unique identifier for the claim which will be used to name the file on disk
if(claim.id == null || claim.id == -1) if(claim.id == null || claim.id == -1)
{ {
claim.id = this.nextClaimID; claim.id = this.nextClaimID;
this.incrementNextClaimID(); this.incrementNextClaimID();
} }
this.writeClaimToStorage(claim);
} }
abstract void writeClaimToStorage(Claim claim); abstract void writeClaimToStorage(Claim claim);
@ -904,6 +908,7 @@ public abstract class DataStore
result.claim = newClaim; result.claim = newClaim;
return result; return result;
} }
assignClaimID(newClaim); // assign a claim ID before calling event, in case a plugin wants to know the ID.
ClaimCreatedEvent event = new ClaimCreatedEvent(newClaim, creatingPlayer); ClaimCreatedEvent event = new ClaimCreatedEvent(newClaim, creatingPlayer);
Bukkit.getPluginManager().callEvent(event); Bukkit.getPluginManager().callEvent(event);
if (event.isCancelled()) { if (event.isCancelled()) {