} else if (subcommand.equals("check")) {
if (!checkPerm(sender, "check")) return true;
if (split.length != 2 && split.length != 3) return usage(sender, command, subcommand);
String node = split[1];
Permissible permissible;
if (split.length == 2) {
permissible = sender;
} else {
permissible = plugin.getServer().getPlayer(split[2]);
}
String name = (permissible instanceof Player) ? ((Player) permissible).getName() : (permissible instanceof ConsoleCommandSender) ? "Console" : "Unknown";
if (permissible == null) {
sender.sendMessage(ChatColor.RED + "Player " + ChatColor.WHITE + split[2] + ChatColor.RED + " not found.");
} else {
boolean set = permissible.isPermissionSet(node), has = permissible.hasPermission(node);
String sets = set ? " sets " : " defaults ";
String perm = has ? "true" : "false";
sender.sendMessage(ChatColor.GREEN + "Player " + ChatColor.WHITE + name + ChatColor.GREEN + sets + ChatColor.WHITE + node + ChatColor.GREEN + " to " + ChatColor.WHITE + perm + ChatColor.GREEN + ".");
}
return true;
} else if (subcommand.equals("info")) {
if (!checkPerm(sender, "info")) return true;
if (split.length != 2) return usage(sender, command, subcommand);
String node = split[1];
Permission perm = plugin.getServer().getPluginManager().getPermission(node);
if (perm == null) {
sender.sendMessage(ChatColor.RED + "Permission " + ChatColor.WHITE + node + ChatColor.RED + " not found.");
} else {
sender.sendMessage(ChatColor.GREEN + "Info on permission " + ChatColor.WHITE + perm.getName() + ChatColor.GREEN + ":");
sender.sendMessage(ChatColor.GREEN + "Default: " + ChatColor.WHITE + perm.getDefault());
if (perm.getDescription() != null && perm.getDescription().length() > 0) {
sender.sendMessage(ChatColor.GREEN + "Description: " + ChatColor.WHITE + perm.getDescription());
}
if (perm.getChildren() != null && perm.getChildren().size() > 0) {
sender.sendMessage(ChatColor.GREEN + "Children: " + ChatColor.WHITE + perm.getChildren().size());
}
if (perm.getPermissibles() != null && perm.getPermissibles().size() > 0) {
int num = 0, numTrue = 0;
for (Permissible who : perm.getPermissibles()) {
++num;
if (who.hasPermission(perm)) {
++numTrue;
}
}
sender.sendMessage(ChatColor.GREEN + "Set on: " + ChatColor.WHITE + num + ChatColor.GREEN + " (" + ChatColor.WHITE + numTrue + ChatColor.GREEN + " true)");
}
}
return true;
} else if (subcommand.equals("dump")) {
if (!checkPerm(sender, "dump")) return true;
if (split.length < 1 || split.length > 3) return usage(sender, command, subcommand);
int page;
Permissible permissible;
if (split.length == 1) {
permissible = sender;
page = 1;
} else if (split.length == 2) {
permissible = sender;
try {
page = Integer.parseInt(split[1]);
} catch (NumberFormatException ex) {
if (split[1].equalsIgnoreCase("-file")) {
page = -1;
} else {
permissible = plugin.getServer().getPlayer(split[1]);
page = 1;
}
}
} else {
permissible = plugin.getServer().getPlayer(split[1]);
try {
page = Integer.parseInt(split[2]);
} catch (NumberFormatException ex) {
if (split[2].equalsIgnoreCase("-file")) {
page = -1;
} else {
page = 1;
}
}
}
if (permissible == null) {
sender.sendMessage(ChatColor.RED + "Player " + ChatColor.WHITE + split[1] + ChatColor.RED + " not found.");
return true;
}
ArrayList<PermissionAttachmentInfo> dump = new ArrayList<PermissionAttachmentInfo>(permissible.getEffectivePermissions());
Collections.sort(dump, new Comparator<PermissionAttachmentInfo>() {
public int compare(PermissionAttachmentInfo a, PermissionAttachmentInfo b) {
return a.getPermission().compareTo(b.getPermission());
}
});