diff --git a/plugin.yml b/plugin.yml index 79092b8..2534493 100644 --- a/plugin.yml +++ b/plugin.yml @@ -120,7 +120,7 @@ commands: description: Converts an administrative claim to a private claim. usage: /TransferClaim aliases: giveclaim - permission: griefprevention.adjustclaimblocks + permission: griefprevention.transferclaim unlockdrops: description: Allows other players to pick up the items you dropped when you died. usage: /UnlockDrops @@ -167,9 +167,13 @@ permissions: griefprevention.reload: true griefprevention.visualizenearbyclaims: true griefprevention.overrideclaimcountlimit: true + griefprevention.transferclaim: true griefprevention.restorenature: description: Grants permission to use /RestoreNature. default: op + griefprevention.transferclaim: + description: Grants permission to use /TransferClaim. + default: op griefprevention.ignoreclaims: description: Grants permission to use /IgnoreClaims. default: op diff --git a/src/me/ryanhamshire/GriefPrevention/DataStore.java b/src/me/ryanhamshire/GriefPrevention/DataStore.java index 484f9b8..af08f59 100644 --- a/src/me/ryanhamshire/GriefPrevention/DataStore.java +++ b/src/me/ryanhamshire/GriefPrevention/DataStore.java @@ -334,13 +334,9 @@ public abstract class DataStore if(ownerData != null) { ownerData.getClaims().remove(claim); - ownerData.setBonusClaimBlocks(ownerData.getBonusClaimBlocks() - claim.getArea()); - this.savePlayerData(claim.ownerID, ownerData); } newOwnerData.getClaims().add(claim); - newOwnerData.setBonusClaimBlocks(newOwnerData.getBonusClaimBlocks() + claim.getArea()); - this.savePlayerData(newOwnerID, newOwnerData); } //adds a claim to the datastore, making it an effective claim diff --git a/src/me/ryanhamshire/GriefPrevention/GriefPrevention.java b/src/me/ryanhamshire/GriefPrevention/GriefPrevention.java index dedaae0..66c094b 100644 --- a/src/me/ryanhamshire/GriefPrevention/GriefPrevention.java +++ b/src/me/ryanhamshire/GriefPrevention/GriefPrevention.java @@ -961,16 +961,6 @@ public class GriefPrevention extends JavaPlugin //transferclaim else if(cmd.getName().equalsIgnoreCase("transferclaim") && player != null) { - //requires exactly one parameter, the other player's name - if(args.length != 1) return false; - - //check additional permission - if(!player.hasPermission("griefprevention.adminclaims")) - { - GriefPrevention.sendMessage(player, TextMode.Err, Messages.TransferClaimPermission); - return true; - } - //which claim is the user in? Claim claim = this.dataStore.getClaimAt(player.getLocation(), true, null); if(claim == null) @@ -979,11 +969,23 @@ public class GriefPrevention extends JavaPlugin return true; } - OfflinePlayer targetPlayer = this.resolvePlayerByName(args[0]); - if(targetPlayer == null) + //check additional permission for admin claims + if(claim.isAdminClaim() && !player.hasPermission("griefprevention.adminclaims")) + { + GriefPrevention.sendMessage(player, TextMode.Err, Messages.TransferClaimPermission); + return true; + } + + OfflinePlayer targetPlayer = null; //no argument = make an admin claim + + if(args.length > 0) { - GriefPrevention.sendMessage(player, TextMode.Err, Messages.PlayerNotFound2); - return true; + targetPlayer = this.resolvePlayerByName(args[0]); + if(targetPlayer == null) + { + GriefPrevention.sendMessage(player, TextMode.Err, Messages.PlayerNotFound2); + return true; + } } //change ownerhsip