Skip to content

Commit cfeb685

Browse files
committed
Add removeInheritiedPermissions to properly remove trusted players in subclaims on /rsc
1 parent 83817d3 commit cfeb685

File tree

2 files changed

+44
-1
lines changed

2 files changed

+44
-1
lines changed

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
<groupId>com.griefprevention</groupId>
1010
<artifactId>GriefPrevention</artifactId>
11-
<version>17.1.9</version>
11+
<version>17.2.0</version>
1212

1313
<name>GriefPrevention</name>
1414
<description>The official self-service anti-griefing Bukkit plugin for Minecraft servers since 2011.</description>

src/main/java/me/ryanhamshire/GriefPrevention/GriefPrevention.java

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1876,6 +1876,7 @@ else if (cmd.getName().equalsIgnoreCase("restrictsubclaim") && player != null) {
18761876
claim.setSubclaimRestrictions(false);
18771877
GriefPrevention.sendMessage(player, TextMode.Success, Messages.SubclaimUnrestricted);
18781878
} else {
1879+
removeInheritedPermissions(claim);
18791880
claim.setSubclaimRestrictions(true);
18801881
GriefPrevention.sendMessage(player, TextMode.Success, Messages.SubclaimRestricted);
18811882
}
@@ -4141,6 +4142,7 @@ public boolean handleRestrictSubclaimCommand(CommandSender sender, String[] args
41414142
claim.setSubclaimRestrictions(false);
41424143
GriefPrevention.sendMessage(player, TextMode.Success, Messages.SubclaimUnrestricted);
41434144
} else {
4145+
removeInheritedPermissions(claim);
41444146
claim.setSubclaimRestrictions(true);
41454147
GriefPrevention.sendMessage(player, TextMode.Success, Messages.SubclaimRestricted);
41464148
}
@@ -4149,6 +4151,47 @@ public boolean handleRestrictSubclaimCommand(CommandSender sender, String[] args
41494151
return true;
41504152
}
41514153

4154+
private void removeInheritedPermissions(Claim claim) {
4155+
if (claim.parent == null) return;
4156+
4157+
ArrayList<String> parentBuilders = new ArrayList<>();
4158+
ArrayList<String> parentContainers = new ArrayList<>();
4159+
ArrayList<String> parentAccessors = new ArrayList<>();
4160+
ArrayList<String> parentManagers = new ArrayList<>();
4161+
claim.parent.getPermissions(parentBuilders, parentContainers, parentAccessors, parentManagers);
4162+
4163+
ArrayList<String> currentBuilders = new ArrayList<>();
4164+
ArrayList<String> currentContainers = new ArrayList<>();
4165+
ArrayList<String> currentAccessors = new ArrayList<>();
4166+
ArrayList<String> currentManagers = new ArrayList<>();
4167+
claim.getPermissions(currentBuilders, currentContainers, currentAccessors, currentManagers);
4168+
4169+
for (String manager : parentManagers) {
4170+
claim.managers.remove(manager.toLowerCase());
4171+
}
4172+
4173+
for (String builder : parentBuilders) {
4174+
ClaimPermission childPerm = claim.getPermission(builder.toLowerCase());
4175+
if (childPerm == ClaimPermission.Build) {
4176+
claim.dropPermission(builder);
4177+
}
4178+
}
4179+
4180+
for (String container : parentContainers) {
4181+
ClaimPermission childPerm = claim.getPermission(container.toLowerCase());
4182+
if (childPerm == ClaimPermission.Container) {
4183+
claim.dropPermission(container);
4184+
}
4185+
}
4186+
4187+
for (String accessor : parentAccessors) {
4188+
ClaimPermission childPerm = claim.getPermission(accessor.toLowerCase());
4189+
if (childPerm == ClaimPermission.Access) {
4190+
claim.dropPermission(accessor);
4191+
}
4192+
}
4193+
}
4194+
41524195
public boolean handleDropsCommand(CommandSender sender, String[] args) {
41534196
if (!(sender instanceof Player player))
41544197
return false;

0 commit comments

Comments
 (0)