From 75ea8ff98964d1bcf1bb53c766ca23d600ee7837 Mon Sep 17 00:00:00 2001 From: ryanhamshire Date: Mon, 17 Nov 2014 19:47:21 -0800 Subject: [PATCH] Added claim abandon block return ratio option. The portion of claim blocks a player gets back when he abandons a land claim. These come out of his accrued blocks, not his bonus blocks. Does not apply to administratively removed claims. Defaults to 100%. --- .../GriefPrevention/GriefPrevention.java | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/me/ryanhamshire/GriefPrevention/GriefPrevention.java b/src/me/ryanhamshire/GriefPrevention/GriefPrevention.java index c8d7a96..6c683a4 100644 --- a/src/me/ryanhamshire/GriefPrevention/GriefPrevention.java +++ b/src/me/ryanhamshire/GriefPrevention/GriefPrevention.java @@ -78,6 +78,7 @@ public class GriefPrevention extends JavaPlugin public boolean config_claims_enderPearlsRequireAccessTrust; //whether teleporting into a claim with a pearl requires access trust public int config_claims_initialBlocks; //the number of claim blocks a new player starts with + public double config_claims_abandonReturnRatio; //the portion of claim blocks returned to a player when a claim is abandoned public int config_claims_blocksAccruedPerHour; //how many additional blocks players get each hour of play (can be zero) public int config_claims_maxAccruedBlocks; //the limit on accrued blocks (over time). doesn't limit purchased or admin-gifted blocks public int config_claims_maxDepth; //limit on how deep claims can go @@ -465,6 +466,7 @@ public class GriefPrevention extends JavaPlugin this.config_claims_initialBlocks = config.getInt("GriefPrevention.Claims.InitialBlocks", 100); this.config_claims_blocksAccruedPerHour = config.getInt("GriefPrevention.Claims.BlocksAccruedPerHour", 100); this.config_claims_maxAccruedBlocks = config.getInt("GriefPrevention.Claims.MaxAccruedBlocks", 80000); + this.config_claims_abandonReturnRatio = config.getDouble("GriefPrevention.Claims.AbandonReturnRatio", 1); this.config_claims_automaticClaimsForNewPlayersRadius = config.getInt("GriefPrevention.Claims.AutomaticNewPlayerClaimsRadius", 4); this.config_claims_claimsExtendIntoGroundDistance = config.getInt("GriefPrevention.Claims.ExtendIntoGroundDistance", 5); this.config_claims_creationRequiresPermission = config.getBoolean("GriefPrevention.Claims.CreationRequiresPermission", false); @@ -708,7 +710,7 @@ public class GriefPrevention extends JavaPlugin outConfig.set("GriefPrevention.Claims.ProtectHorses", this.config_claims_protectHorses); outConfig.set("GriefPrevention.Claims.InitialBlocks", this.config_claims_initialBlocks); outConfig.set("GriefPrevention.Claims.BlocksAccruedPerHour", this.config_claims_blocksAccruedPerHour); - outConfig.set("GriefPrevention.Claims.MaxAccruedBlocks", this.config_claims_maxAccruedBlocks); + outConfig.set("GriefPrevention.Claims.AbandonReturnRatio", this.config_claims_abandonReturnRatio); outConfig.set("GriefPrevention.Claims.AutomaticNewPlayerClaimsRadius", this.config_claims_automaticClaimsForNewPlayersRadius); outConfig.set("GriefPrevention.Claims.ExtendIntoGroundDistance", this.config_claims_claimsExtendIntoGroundDistance); outConfig.set("GriefPrevention.Claims.CreationRequiresPermission", this.config_claims_creationRequiresPermission); @@ -887,6 +889,12 @@ public class GriefPrevention extends JavaPlugin return true; } + //adjust claim blocks + for(Claim claim : playerData.getClaims()) + { + playerData.setAccruedClaimBlocks(playerData.getAccruedClaimBlocks() - (int)Math.ceil((claim.getArea() * (1 - this.config_claims_abandonReturnRatio)))); + } + //delete them this.dataStore.deleteClaimsForPlayer(player.getUniqueId(), false); @@ -2017,6 +2025,9 @@ public class GriefPrevention extends JavaPlugin GriefPrevention.instance.restoreClaim(claim, 20L * 60 * 2); } + //adjust claim blocks + playerData.setAccruedClaimBlocks(playerData.getAccruedClaimBlocks() - (int)Math.ceil((claim.getArea() * (1 - this.config_claims_abandonReturnRatio)))); + //tell the player how many claim blocks he has left int remainingBlocks = playerData.getRemainingClaimBlocks(); GriefPrevention.sendMessage(player, TextMode.Success, Messages.AbandonSuccess, String.valueOf(remainingBlocks));