mirror of
https://github.com/NoCheatPlus/NoCheatPlus.git
synced 2024-09-27 14:13:11 +02:00
Register .silent check permission in postEnable.
Issue: https://github.com/NoCheatPlus/Issues/issues/353)
This commit is contained in:
parent
11be3c7c0d
commit
8465c40d93
@ -33,6 +33,8 @@ import fr.neatmonster.nocheatplus.utilities.ColorUtil;
|
||||
|
||||
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
|
||||
@ -190,21 +192,28 @@ public class PermissionUtil {
|
||||
}
|
||||
|
||||
/**
|
||||
* 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)) {
|
||||
@ -212,4 +221,34 @@ public class PermissionUtil {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @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.
|
||||
*/
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -50,6 +50,7 @@ import org.bukkit.plugin.PluginDescriptionFile;
|
||||
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;
|
||||
@ -1097,6 +1098,20 @@ public class NoCheatPlus extends JavaPlugin implements NoCheatPlusAPI {
|
||||
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)) {
|
||||
|
Loading…
Reference in New Issue
Block a user