Check if target has claimblocks required when transfering claims

This commit is contained in:
Len 2022-04-27 10:47:24 +02:00
parent 396b7d57fc
commit e2dccaad95
3 changed files with 5032 additions and 5010 deletions

2
.gitattributes vendored Normal file
View File

@ -0,0 +1,2 @@
# Ignore all differences in line endings
* -crlf

View File

@ -390,6 +390,16 @@ public abstract class DataStore
}
}
public class NoClaimblocksTransferException extends RuntimeException
{
private static final long serialVersionUID = 1L;
NoClaimblocksTransferException(String message)
{
super(message);
}
}
synchronized public void changeClaimOwner(Claim claim, UUID newOwnerID)
{
//if it's a subdivision, throw an exception
@ -402,11 +412,19 @@ public abstract class DataStore
//determine current claim owner
PlayerData ownerData = null;
//determine new owner
PlayerData newOwnerData = null;
if (!claim.isAdminClaim())
{
ownerData = this.getPlayerData(claim.ownerID);
}
if (newOwnerID != null) {
newOwnerData = this.getPlayerData(newOwnerID);
if (!(newOwnerData.getRemainingClaimBlocks() >= claim.getArea()))
throw new NoClaimblocksTransferException("Target does not have the claimblocks to claim this area.");
}
//call event
ClaimTransferEvent event = new ClaimTransferEvent(claim, newOwnerID);
Bukkit.getPluginManager().callEvent(event);
@ -414,9 +432,6 @@ public abstract class DataStore
//return if event is cancelled
if (event.isCancelled()) return;
//determine new owner
PlayerData newOwnerData = null;
if (event.getNewOwner() != null)
{
newOwnerData = this.getPlayerData(event.getNewOwner());

View File

@ -1294,6 +1294,11 @@ public class GriefPrevention extends JavaPlugin
GriefPrevention.sendMessage(player, TextMode.Instr, Messages.TransferTopLevel);
return true;
}
catch (DataStore.NoClaimblocksTransferException e)
{
player.sendMiniMessage("<red>target does have the claimblocks to claim this area.", null);
return true;
}
//confirm
GriefPrevention.sendMessage(player, TextMode.Success, Messages.TransferSuccess);