public static List<CommandProtectionEntry> protectCommands(final String permissionBase, final Collection<String> ignoredCommands, final boolean invertIgnored, final boolean ops, final String permissionMessage) {
final Set<String> checked = new HashSet<String>();
for (String label : ignoredCommands) {
checked.add(CommandUtil.getCommandLabel(label, false));
}
final PluginManager pm = Bukkit.getPluginManager();
Permission rootPerm = pm.getPermission(permissionBase);
if (rootPerm == null) {
rootPerm = new Permission(permissionBase);
pm.addPermission(rootPerm);
}
final List<CommandProtectionEntry> changed = new LinkedList<CommandProtectionEntry>();
// Apply protection based on white-list or black-list.
for (final Command command : CommandUtil.getCommands()) {
final String lcLabel = command.getLabel().trim().toLowerCase();
if (checked.contains(lcLabel) || containsAnyAliases(checked, command)) {
if (!invertIgnored) {
continue;
}
}
else if (invertIgnored) {
continue;
}
// Set the permission for the command.
String cmdPermName = command.getPermission();
boolean cmdHadPerm;
if (cmdPermName == null) {
// Set a permission.
cmdPermName = permissionBase + "." + lcLabel;
command.setPermission(cmdPermName);
cmdHadPerm = false;
}
else{
cmdHadPerm = true;
}
// Set permission default behavior.
Permission cmdPerm = pm.getPermission(cmdPermName);
if (cmdPerm == null) {
if (!cmdHadPerm) {
cmdPerm = new Permission(cmdPermName);
cmdPerm.addParent(rootPerm, true);
pm.addPermission(cmdPerm);
}
}
// Create change history entry.
if (cmdHadPerm) {
if (cmdPerm == null) {