Skip to content

Commit

Permalink
Register .silent check permission in postEnable.
Browse files Browse the repository at this point in the history
  • Loading branch information
asofold committed Dec 28, 2016
1 parent 11be3c7 commit 8465c40
Show file tree
Hide file tree
Showing 2 changed files with 59 additions and 5 deletions.
Expand Up @@ -33,6 +33,8 @@

public class PermissionUtil {

private static final String AUTO_GENERATED = "Auto-generated permission (NoCheatPlus).";

/**
* Entry for what the old state of a command was.
* @author mc_dev
Expand Down Expand Up @@ -190,26 +192,63 @@ private static final boolean containsAnyAliases(final Set<String> checked, final
}

/**
* Set a permission as child for all the other permissions given in a Collection.
* @param permissions Not expected to exist.
* Set a permission as child for all the other permissions given in a
* Collection.
*
* @param permissions
* Not expected to exist.
* @param childPermissionName
* @param permissionDefault
* Default for all generated permissions (child and parent
* alike).
*/
public static void addChildPermission(final Collection<String> permissions, final String childPermissionName, final PermissionDefault permissionDefault) {
public static void addChildPermission(final Collection<String> permissions,
final String childPermissionName, final PermissionDefault permissionDefault) {
final PluginManager pm = Bukkit.getPluginManager();
Permission childPermission = pm.getPermission(childPermissionName);
if (childPermission == null) {
childPermission = new Permission(childPermissionName, "auto-generated child permission (NoCheatPlus)", permissionDefault);
childPermission = new Permission(childPermissionName, AUTO_GENERATED, permissionDefault);
pm.addPermission(childPermission);
}
for (final String permissionName : permissions) {
Permission permission = pm.getPermission(permissionName);
if (permission == null) {
permission = new Permission(permissionName, "auto-generated permission (NoCheatPlus)", permissionDefault);
permission = new Permission(permissionName, AUTO_GENERATED, permissionDefault);
pm.addPermission(permission);
}
if (!permission.getChildren().containsKey(childPermissionName)) {
childPermission.addParent(permission, true);
}
}
}

/**
*
* @param permissionName
* Name of an already existing permission. Must be registered!
* @param childPermissionSuffix
* No leading dot, results in: permissionName.childPermissionSuffix
* @param permissionDefault
* Default for child permissions.
* @throws NullPointerException
* If the no permission is registered for permissionName.

This comment has been minimized.

Copy link
@rautamiekka

rautamiekka Dec 28, 2016

This line makes some sense if If the no is replaced with If no to become If no permission is registered for permissionName.

This comment has been minimized.

Copy link
@asofold

asofold Dec 28, 2016

Author Member

Yes :).

*/
public static void addChildPermissionBySuffix(final String permissionName, final String childPermissionSuffix,
final PermissionDefault permissionDefault) {
final PluginManager pm = Bukkit.getPluginManager();
final Permission permission = pm.getPermission(permissionName);
if (permission == null) {
throw new NullPointerException("Permission is not registered: " + permissionName);
}
final String childPermissionName = permissionName + "." + childPermissionSuffix;
Permission childPermission = pm.getPermission(childPermissionName);
if (childPermission == null) {
childPermission = new Permission(childPermissionName, AUTO_GENERATED, permissionDefault);
pm.addPermission(childPermission);
}
if (!permission.getChildren().containsKey(childPermissionName)) {
childPermission.addParent(permission, true);
}
}

}
Expand Up @@ -50,6 +50,7 @@
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.scheduler.BukkitScheduler;

import fr.neatmonster.nocheatplus.checks.CheckType;
import fr.neatmonster.nocheatplus.checks.blockbreak.BlockBreakListener;
import fr.neatmonster.nocheatplus.checks.blockinteract.BlockInteractListener;
import fr.neatmonster.nocheatplus.checks.blockplace.BlockPlaceListener;
Expand Down Expand Up @@ -1097,6 +1098,20 @@ protected void postEnable(final NoCheatPlusCommand commandHandler, final Player[
logManager.severe(Streams.INIT, "Failed to complement permissions: " + t.getClass().getSimpleName());
logManager.severe(Streams.INIT, t);
}
// Set .silent child permissions for all check permissions.
for (CheckType checkType : CheckType.values()) {
final String permissionName = checkType.getPermission();
if (permissionName == null) {
continue;
}
try {
// PermissionDefault.FALSE: Ensure it's not there by accident / non-typical.
PermissionUtil.addChildPermissionBySuffix(permissionName, "silent", PermissionDefault.FALSE);
} catch (Throwable t) {
logManager.severe(Streams.INIT, "Failed to add .silent child permission for " + permissionName + ": " + t.getClass().getSimpleName());
logManager.severe(Streams.INIT, t);
}
}
try {
// Command protection feature.
if (ConfigManager.getConfigFile().getBoolean(ConfPaths.PROTECT_PLUGINS_HIDE_ACTIVE)) {
Expand Down

0 comments on commit 8465c40

Please sign in to comment.