Nouvelle indentation

This commit is contained in:
Michel Roux 2012-04-29 02:55:03 +02:00
parent 35bbe58be3
commit 0f4ab0c659
47 changed files with 755 additions and 755 deletions

View File

@ -34,458 +34,458 @@ public class SimplyCommands implements CommandExecutor {
} }
public boolean onCommand(CommandSender sender, Command command, String label, String[] split) { public boolean onCommand(CommandSender sender, Command command, String label, String[] split) {
if (split.length < 1) { if (split.length < 1) {
return !checkPerm(sender, "help") || usage(sender, command); return !checkPerm(sender, "help") || usage(sender, command);
} }
String subcommand = split[0]; String subcommand = split[0];
if (subcommand.equals("reload")) { if (subcommand.equals("reload")) {
if (!checkPerm(sender, "reload")) return true; if (!checkPerm(sender, "reload")) return true;
plugin.reloadConfig(); plugin.reloadConfig();
plugin.refreshPermissions(); plugin.refreshPermissions();
sender.sendMessage(ChatColor.GREEN + "Configuration reloaded."); sender.sendMessage(ChatColor.GREEN + "Configuration reloaded.");
return true; return true;
} if (subcommand.equals("check")) { } if (subcommand.equals("check")) {
if (!checkPerm(sender, "check")) return true; if (!checkPerm(sender, "check")) return true;
if (split.length != 2 && split.length != 3) return usage(sender, command, subcommand); if (split.length != 2 && split.length != 3) return usage(sender, command, subcommand);
String node = split[1]; String node = split[1];
Permissible permissible; Permissible permissible;
if (split.length == 2) { if (split.length == 2) {
permissible = sender; permissible = sender;
} else { } else {
permissible = plugin.getServer().getPlayer(split[2]); permissible = plugin.getServer().getPlayer(split[2]);
} }
String name = (permissible instanceof Player) ? ((Player) permissible).getName() : (permissible instanceof ConsoleCommandSender) ? "Console" : "Unknown"; String name = (permissible instanceof Player) ? ((Player) permissible).getName() : (permissible instanceof ConsoleCommandSender) ? "Console" : "Unknown";
if (permissible == null) { if (permissible == null) {
sender.sendMessage(ChatColor.RED + "Player " + ChatColor.WHITE + split[2] + ChatColor.RED + " not found."); sender.sendMessage(ChatColor.RED + "Player " + ChatColor.WHITE + split[2] + ChatColor.RED + " not found.");
} else { } else {
boolean set = permissible.isPermissionSet(node), has = permissible.hasPermission(node); boolean set = permissible.isPermissionSet(node), has = permissible.hasPermission(node);
String sets = set ? " sets " : " defaults "; String sets = set ? " sets " : " defaults ";
String perm = has ? " true" : " false"; 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 + "."); sender.sendMessage(ChatColor.GREEN + "Player " + ChatColor.WHITE + name + ChatColor.GREEN + sets + ChatColor.WHITE + node + ChatColor.GREEN + " to " + ChatColor.WHITE + perm + ChatColor.GREEN + ".");
} }
return true; return true;
} else if (subcommand.equals("info")) { } else if (subcommand.equals("info")) {
if (!checkPerm(sender, "info")) return true; if (!checkPerm(sender, "info")) return true;
if (split.length != 2) return usage(sender, command, subcommand); if (split.length != 2) return usage(sender, command, subcommand);
String node = split[1]; String node = split[1];
Permission perm = plugin.getServer().getPluginManager().getPermission(node); Permission perm = plugin.getServer().getPluginManager().getPermission(node);
if (perm == null) { if (perm == null) {
sender.sendMessage(ChatColor.RED + "Permission " + ChatColor.WHITE + node + ChatColor.RED + " not found."); sender.sendMessage(ChatColor.RED + "Permission " + ChatColor.WHITE + node + ChatColor.RED + " not found.");
} else { } else {
sender.sendMessage(ChatColor.GREEN + "Info on permission " + ChatColor.WHITE + perm.getName() + ChatColor.GREEN + ":"); sender.sendMessage(ChatColor.GREEN + "Info on permission " + ChatColor.WHITE + perm.getName() + ChatColor.GREEN + ":");
sender.sendMessage(ChatColor.GREEN + "Default: " + ChatColor.WHITE + perm.getDefault()); sender.sendMessage(ChatColor.GREEN + "Default: " + ChatColor.WHITE + perm.getDefault());
if (perm.getDescription() != null && perm.getDescription().length() > 0) { if (perm.getDescription() != null && perm.getDescription().length() > 0) {
sender.sendMessage(ChatColor.GREEN + "Description: " + ChatColor.WHITE + perm.getDescription()); sender.sendMessage(ChatColor.GREEN + "Description: " + ChatColor.WHITE + perm.getDescription());
} }
if (perm.getChildren() != null && perm.getChildren().size() > 0) { if (perm.getChildren() != null && perm.getChildren().size() > 0) {
sender.sendMessage(ChatColor.GREEN + "Children: " + ChatColor.WHITE + perm.getChildren().size()); sender.sendMessage(ChatColor.GREEN + "Children: " + ChatColor.WHITE + perm.getChildren().size());
} }
} }
return true; return true;
} else if (subcommand.equals("dump")) { } else if (subcommand.equals("dump")) {
if (!checkPerm(sender, "dump")) return true; if (!checkPerm(sender, "dump")) return true;
if (split.length < 1 || split.length > 3) return usage(sender, command, subcommand); if (split.length < 1 || split.length > 3) return usage(sender, command, subcommand);
int page; int page;
Permissible permissible; Permissible permissible;
if (split.length == 1) { if (split.length == 1) {
permissible = sender; permissible = sender;
page = 1; page = 1;
} else if (split.length == 2) { } else if (split.length == 2) {
try { try {
permissible = sender; permissible = sender;
page = Integer.parseInt(split[1]); page = Integer.parseInt(split[1]);
} }
catch (NumberFormatException ex) { catch (NumberFormatException ex) {
permissible = plugin.getServer().getPlayer(split[1]); permissible = plugin.getServer().getPlayer(split[1]);
page = 1; page = 1;
} }
} else { } else {
permissible = plugin.getServer().getPlayer(split[1]); permissible = plugin.getServer().getPlayer(split[1]);
try { try {
page = Integer.parseInt(split[2]); page = Integer.parseInt(split[2]);
} }
catch (NumberFormatException ex) { catch (NumberFormatException ex) {
page = 1; page = 1;
} }
} }
if (permissible == null) { if (permissible == null) {
sender.sendMessage(ChatColor.RED + "Player " + ChatColor.WHITE + split[1] + ChatColor.RED + " not found."); sender.sendMessage(ChatColor.RED + "Player " + ChatColor.WHITE + split[1] + ChatColor.RED + " not found.");
} else { } else {
ArrayList<PermissionAttachmentInfo> dump = new ArrayList<PermissionAttachmentInfo>(permissible.getEffectivePermissions()); ArrayList<PermissionAttachmentInfo> dump = new ArrayList<PermissionAttachmentInfo>(permissible.getEffectivePermissions());
Collections.sort(dump, new Comparator<PermissionAttachmentInfo>() { Collections.sort(dump, new Comparator<PermissionAttachmentInfo>() {
public int compare(PermissionAttachmentInfo a, PermissionAttachmentInfo b) { public int compare(PermissionAttachmentInfo a, PermissionAttachmentInfo b) {
return a.getPermission().compareTo(b.getPermission()); return a.getPermission().compareTo(b.getPermission());
} }
}); });
int numpages = 1 + (dump.size() - 1) / 8; int numpages = 1 + (dump.size() - 1) / 8;
if (page > numpages) { if (page > numpages) {
page = numpages; page = numpages;
} else if (page < 1) { } else if (page < 1) {
page = 1; page = 1;
} }
ChatColor g = ChatColor.GREEN, w = ChatColor.WHITE, r = ChatColor.RED; ChatColor g = ChatColor.GREEN, w = ChatColor.WHITE, r = ChatColor.RED;
int start = 8 * (page - 1); int start = 8 * (page - 1);
sender.sendMessage(ChatColor.RED + "[==== " + ChatColor.GREEN + "Page " + page + " of " + numpages + ChatColor.RED + " ====]"); sender.sendMessage(ChatColor.RED + "[==== " + ChatColor.GREEN + "Page " + page + " of " + numpages + ChatColor.RED + " ====]");
for (int i = start; i < start + 8 && i < dump.size(); ++i) { for (int i = start; i < start + 8 && i < dump.size(); ++i) {
PermissionAttachmentInfo info = dump.get(i); PermissionAttachmentInfo info = dump.get(i);
if (info.getAttachment() == null) { if (info.getAttachment() == null) {
sender.sendMessage(g + "Node " + w + info.getPermission() + g + "=" + w + info.getValue() + g + " (" + r + "default" + g + ")"); sender.sendMessage(g + "Node " + w + info.getPermission() + g + "=" + w + info.getValue() + g + " (" + r + "default" + g + ")");
} else { } else {
sender.sendMessage(g + "Node " + w + info.getPermission() + g + "=" + w + info.getValue() + g + " (" + w + info.getAttachment().getPlugin().getDescription().getName() + g + ")"); sender.sendMessage(g + "Node " + w + info.getPermission() + g + "=" + w + info.getValue() + g + " (" + w + info.getAttachment().getPlugin().getDescription().getName() + g + ")");
} }
} }
} }
return true; return true;
} else if (subcommand.equals("group")) { } else if (subcommand.equals("group")) {
if (split.length < 2) { if (split.length < 2) {
return !checkPerm(sender, "group.help") || usage(sender, command, subcommand); return !checkPerm(sender, "group.help") || usage(sender, command, subcommand);
} }
groupCommand(sender, command, split); groupCommand(sender, command, split);
return true; return true;
} else if (subcommand.equals("player")) { } else if (subcommand.equals("player")) {
if (split.length < 2) { if (split.length < 2) {
return !checkPerm(sender, "player.help") || usage(sender, command, subcommand); return !checkPerm(sender, "player.help") || usage(sender, command, subcommand);
} }
playerCommand(sender, command, split); playerCommand(sender, command, split);
return true; return true;
} else if (subcommand.equals("import")) { } else if (subcommand.equals("import")) {
if (!checkPerm(sender, "import")) return true; if (!checkPerm(sender, "import")) return true;
if (split.length != 2) return usage(sender, command, subcommand); if (split.length != 2) return usage(sender, command, subcommand);
String pluginName = split[1].toLowerCase(); String pluginName = split[1].toLowerCase();
ImportManager manager; ImportManager manager;
if (pluginName.equals("permissionsbukkit")) { if (pluginName.equals("permissionsbukkit")) {
manager = new ImportPermBukkit(plugin); manager = new ImportPermBukkit(plugin);
} else if (pluginName.equals("privileges")) { } else if (pluginName.equals("privileges")) {
manager = new ImportPrivileges(plugin); manager = new ImportPrivileges(plugin);
} else if (pluginName.equals("permissionsex")) { } else if (pluginName.equals("permissionsex")) {
manager = new ImportPermEx(plugin); manager = new ImportPermEx(plugin);
} else if (pluginName.equals("file")) { } else if (pluginName.equals("file")) {
manager = new ImportFile(plugin); manager = new ImportFile(plugin);
} else if (plugin.getConfig().getString("db/type") != null } else if (plugin.getConfig().getString("db/type") != null
&& pluginName.equals(plugin.getConfig().getString("db/type").toLowerCase())) { && pluginName.equals(plugin.getConfig().getString("db/type").toLowerCase())) {
manager = new ImportDB(plugin); manager = new ImportDB(plugin);
} else { } else {
sender.sendMessage(ChatColor.RED + "Unknown import type !"); sender.sendMessage(ChatColor.RED + "Unknown import type !");
return true; return true;
} }
try { try {
manager.run(); manager.run();
plugin.refreshPermissions(); plugin.refreshPermissions();
sender.sendMessage(ChatColor.GREEN + "Operation success !"); sender.sendMessage(ChatColor.GREEN + "Operation success !");
} catch (Exception e) { } catch (Exception e) {
plugin.reloadConfig(); plugin.reloadConfig();
sender.sendMessage(ChatColor.RED + "An error occurred ! Please check server log..."); sender.sendMessage(ChatColor.RED + "An error occurred ! Please check server log...");
e.printStackTrace(); e.printStackTrace();
} }
return true; return true;
} else { } else {
return !checkPerm(sender, "help") || usage(sender, command); return !checkPerm(sender, "help") || usage(sender, command);
} }
} }
private boolean groupCommand(CommandSender sender, Command command, String[] split) { private boolean groupCommand(CommandSender sender, Command command, String[] split) {
String subcommand = split[1]; String subcommand = split[1];
if (subcommand.equals("list")) { if (subcommand.equals("list")) {
if (!checkPerm(sender, "group.list")) return true; if (!checkPerm(sender, "group.list")) return true;
if (split.length != 2) return usage(sender, command, "group list"); if (split.length != 2) return usage(sender, command, "group list");
String result = "", sep = ""; String result = "", sep = "";
for (String key : plugin.getNode("groups").getKeys(false)) { for (String key : plugin.getNode("groups").getKeys(false)) {
result += sep + key; result += sep + key;
sep = ", "; sep = ", ";
} }
sender.sendMessage(ChatColor.GREEN + "Groups: " + ChatColor.WHITE + result); sender.sendMessage(ChatColor.GREEN + "Groups: " + ChatColor.WHITE + result);
return true; return true;
} else if (subcommand.equals("players")) { } else if (subcommand.equals("players")) {
if (!checkPerm(sender, "group.players")) return true; if (!checkPerm(sender, "group.players")) return true;
if (split.length != 3) return usage(sender, command, "group players"); if (split.length != 3) return usage(sender, command, "group players");
String group = split[2]; String group = split[2];
if (plugin.getNode("groups/" + group) == null) { if (plugin.getNode("groups/" + group) == null) {
sender.sendMessage(ChatColor.RED + "No such group " + ChatColor.WHITE + group + ChatColor.RED + "."); sender.sendMessage(ChatColor.RED + "No such group " + ChatColor.WHITE + group + ChatColor.RED + ".");
return true; return true;
} }
int count = 0; int count = 0;
String text = "", sep = ""; String text = "", sep = "";
for (String user : plugin.config.getPlayers(group)) { for (String user : plugin.config.getPlayers(group)) {
++count; ++count;
text += sep + user; text += sep + user;
sep = ", "; sep = ", ";
} }
sender.sendMessage(ChatColor.GREEN + "Users in " + ChatColor.WHITE + group + ChatColor.GREEN + " (" + ChatColor.WHITE + count + ChatColor.GREEN + "): " + ChatColor.WHITE + text); sender.sendMessage(ChatColor.GREEN + "Users in " + ChatColor.WHITE + group + ChatColor.GREEN + " (" + ChatColor.WHITE + count + ChatColor.GREEN + "): " + ChatColor.WHITE + text);
return true; return true;
} else if (subcommand.equals("setperm")) { } else if (subcommand.equals("setperm")) {
if (split.length >= 4 && !checkPerm(sender, "group.setperm", Arrays.asList(split[3].split(",")))) return true; if (split.length >= 4 && !checkPerm(sender, "group.setperm", Arrays.asList(split[3].split(",")))) return true;
if (split.length != 4 && split.length != 5) return usage(sender, command, "group setperm"); if (split.length != 4 && split.length != 5) return usage(sender, command, "group setperm");
String group = split[2]; String group = split[2];
String perm = split[3]; String perm = split[3];
boolean value = (split.length != 5) || Boolean.parseBoolean(split[4]); boolean value = (split.length != 5) || Boolean.parseBoolean(split[4]);
String node = "permissions"; String node = "permissions";
if (plugin.getNode("groups/" + group) == null) { if (plugin.getNode("groups/" + group) == null) {
sender.sendMessage(ChatColor.RED + "No such group " + ChatColor.WHITE + group + ChatColor.RED + "."); sender.sendMessage(ChatColor.RED + "No such group " + ChatColor.WHITE + group + ChatColor.RED + ".");
return true; return true;
} }
if (perm.contains(":")) { if (perm.contains(":")) {
String world = perm.substring(0, perm.indexOf(':')); String world = perm.substring(0, perm.indexOf(':'));
perm = perm.substring(perm.indexOf(':') + 1); perm = perm.substring(perm.indexOf(':') + 1);
node = "worlds/" + world; node = "worlds/" + world;
} }
if (plugin.getNode("groups/" + group + "/" + node) == null) { if (plugin.getNode("groups/" + group + "/" + node) == null) {
plugin.getConfig().createSection("groups/" + group + "/" + node); plugin.getConfig().createSection("groups/" + group + "/" + node);
} }
plugin.getNode("groups/" + group + "/" + node).set(perm, value); plugin.getNode("groups/" + group + "/" + node).set(perm, value);
plugin.refreshPermissions(); plugin.refreshPermissions();
sender.sendMessage(ChatColor.GREEN + "Group " + ChatColor.WHITE + group + ChatColor.GREEN + " now has " + ChatColor.WHITE + perm + ChatColor.GREEN + " = " + ChatColor.WHITE + value + ChatColor.GREEN + "."); sender.sendMessage(ChatColor.GREEN + "Group " + ChatColor.WHITE + group + ChatColor.GREEN + " now has " + ChatColor.WHITE + perm + ChatColor.GREEN + " = " + ChatColor.WHITE + value + ChatColor.GREEN + ".");
return true; return true;
} else if (subcommand.equals("unsetperm")) { } else if (subcommand.equals("unsetperm")) {
if (split.length >= 4 && !checkPerm(sender, "group.unsetperm", Arrays.asList(split[3].split(",")))) return true; if (split.length >= 4 && !checkPerm(sender, "group.unsetperm", Arrays.asList(split[3].split(",")))) return true;
if (split.length != 4) return usage(sender, command, "group unsetperm"); if (split.length != 4) return usage(sender, command, "group unsetperm");
String group = split[2].toLowerCase(); String group = split[2].toLowerCase();
String perm = split[3]; String perm = split[3];
String node = "permissions"; String node = "permissions";
if (plugin.getNode("groups/" + group) == null) { if (plugin.getNode("groups/" + group) == null) {
sender.sendMessage(ChatColor.RED + "No such group " + ChatColor.WHITE + group + ChatColor.RED + "."); sender.sendMessage(ChatColor.RED + "No such group " + ChatColor.WHITE + group + ChatColor.RED + ".");
return true; return true;
} }
if (perm.contains(":")) { if (perm.contains(":")) {
String world = perm.substring(0, perm.indexOf(':')); String world = perm.substring(0, perm.indexOf(':'));
perm = perm.substring(perm.indexOf(':') + 1); perm = perm.substring(perm.indexOf(':') + 1);
node = "worlds/" + world; node = "worlds/" + world;
} }
if (plugin.getNode("groups/" + group + "/" + node) == null) { if (plugin.getNode("groups/" + group + "/" + node) == null) {
plugin.getConfig().createSection("groups/" + group + "/" + node); plugin.getConfig().createSection("groups/" + group + "/" + node);
} }
ConfigurationSection sec = plugin.getNode("groups/" + group + "/" + node); ConfigurationSection sec = plugin.getNode("groups/" + group + "/" + node);
if (!sec.contains(perm)) { if (!sec.contains(perm)) {
sender.sendMessage(ChatColor.GREEN + "Group " + ChatColor.WHITE + group + ChatColor.GREEN + " did not have " + ChatColor.WHITE + perm + ChatColor.GREEN + " set."); sender.sendMessage(ChatColor.GREEN + "Group " + ChatColor.WHITE + group + ChatColor.GREEN + " did not have " + ChatColor.WHITE + perm + ChatColor.GREEN + " set.");
return true; return true;
} }
sec.set(perm, null); sec.set(perm, null);
plugin.refreshPermissions(); plugin.refreshPermissions();
sender.sendMessage(ChatColor.GREEN + "Group " + ChatColor.WHITE + group + ChatColor.GREEN + " no longer has " + ChatColor.WHITE + perm + ChatColor.GREEN + " set."); sender.sendMessage(ChatColor.GREEN + "Group " + ChatColor.WHITE + group + ChatColor.GREEN + " no longer has " + ChatColor.WHITE + perm + ChatColor.GREEN + " set.");
return true; return true;
} else { } else {
return !checkPerm(sender, "group.help") || usage(sender, command); return !checkPerm(sender, "group.help") || usage(sender, command);
} }
} }
private boolean playerCommand(CommandSender sender, Command command, String[] split) { private boolean playerCommand(CommandSender sender, Command command, String[] split) {
String subcommand = split[1]; String subcommand = split[1];
if (subcommand.equals("groups")) { if (subcommand.equals("groups")) {
if (!checkPerm(sender, "player.groups")) return true; if (!checkPerm(sender, "player.groups")) return true;
if (split.length != 3) return usage(sender, command, "player groups"); if (split.length != 3) return usage(sender, command, "player groups");
String player = split[2].toLowerCase(); String player = split[2].toLowerCase();
if (!plugin.config.isPlayerInDB(player)) { if (!plugin.config.isPlayerInDB(player)) {
sender.sendMessage(ChatColor.GREEN + "Player " + ChatColor.WHITE + player + ChatColor.RED + " is in the default group."); sender.sendMessage(ChatColor.GREEN + "Player " + ChatColor.WHITE + player + ChatColor.RED + " is in the default group.");
return true; return true;
} }
int count = 0; int count = 0;
String text = "", sep = ""; String text = "", sep = "";
for (String group : plugin.config.getPlayerGroups(player)) { for (String group : plugin.config.getPlayerGroups(player)) {
++count; ++count;
text += sep + group; text += sep + group;
sep = ", "; sep = ", ";
} }
sender.sendMessage(ChatColor.GREEN + "Player " + ChatColor.WHITE + player + ChatColor.GREEN + " is in groups (" + ChatColor.WHITE + count + ChatColor.GREEN + "): " + ChatColor.WHITE + text); sender.sendMessage(ChatColor.GREEN + "Player " + ChatColor.WHITE + player + ChatColor.GREEN + " is in groups (" + ChatColor.WHITE + count + ChatColor.GREEN + "): " + ChatColor.WHITE + text);
return true; return true;
} else if (subcommand.equals("setgroup")) { } else if (subcommand.equals("setgroup")) {
if (split.length == 4 && !checkPerm(sender, "player.setgroup", Arrays.asList(split[3].split(",")))) return true; if (split.length == 4 && !checkPerm(sender, "player.setgroup", Arrays.asList(split[3].split(",")))) return true;
if (split.length != 4) return usage(sender, command, "player setgroup"); if (split.length != 4) return usage(sender, command, "player setgroup");
String player = split[2].toLowerCase(); String player = split[2].toLowerCase();
String[] groups = split[3].split(","); String[] groups = split[3].split(",");
plugin.config.removePlayerGroups(player); plugin.config.removePlayerGroups(player);
for (String group : Arrays.asList(groups)) { for (String group : Arrays.asList(groups)) {
plugin.config.addPlayerGroup(player, group); plugin.config.addPlayerGroup(player, group);
} }
plugin.refreshPermissions(); plugin.refreshPermissions();
sender.sendMessage(ChatColor.GREEN + "Player " + ChatColor.WHITE + player + ChatColor.GREEN + " is now in " + ChatColor.WHITE + split[3] + ChatColor.GREEN + "."); sender.sendMessage(ChatColor.GREEN + "Player " + ChatColor.WHITE + player + ChatColor.GREEN + " is now in " + ChatColor.WHITE + split[3] + ChatColor.GREEN + ".");
return true; return true;
} else if (subcommand.equals("addgroup")) { } else if (subcommand.equals("addgroup")) {
if (split.length == 4 && !checkPerm(sender, "player.addgroup", Arrays.asList(split[3]))) return true; if (split.length == 4 && !checkPerm(sender, "player.addgroup", Arrays.asList(split[3]))) return true;
if (split.length != 4) return usage(sender, command, "player addgroup"); if (split.length != 4) return usage(sender, command, "player addgroup");
String player = split[2].toLowerCase(); String player = split[2].toLowerCase();
String group = split[3]; String group = split[3];
if (plugin.config.getPlayerGroups(player).contains(group)) { if (plugin.config.getPlayerGroups(player).contains(group)) {
sender.sendMessage(ChatColor.GREEN + "Player " + ChatColor.WHITE + player + ChatColor.GREEN + " was already in " + ChatColor.WHITE + group + ChatColor.GREEN + "."); sender.sendMessage(ChatColor.GREEN + "Player " + ChatColor.WHITE + player + ChatColor.GREEN + " was already in " + ChatColor.WHITE + group + ChatColor.GREEN + ".");
return true; return true;
} }
plugin.config.addPlayerGroup(player, group); plugin.config.addPlayerGroup(player, group);
plugin.refreshPermissions(); plugin.refreshPermissions();
sender.sendMessage(ChatColor.GREEN + "Player " + ChatColor.WHITE + player + ChatColor.GREEN + " is now in " + ChatColor.WHITE + group + ChatColor.GREEN + "."); sender.sendMessage(ChatColor.GREEN + "Player " + ChatColor.WHITE + player + ChatColor.GREEN + " is now in " + ChatColor.WHITE + group + ChatColor.GREEN + ".");
return true; return true;
} else if (subcommand.equals("removegroup")) { } else if (subcommand.equals("removegroup")) {
if (split.length == 4 && !checkPerm(sender, "player.removegroup", Arrays.asList(split[3]))) return true; if (split.length == 4 && !checkPerm(sender, "player.removegroup", Arrays.asList(split[3]))) return true;
if (split.length != 4) return usage(sender, command, "player removegroup"); if (split.length != 4) return usage(sender, command, "player removegroup");
String player = split[2].toLowerCase(); String player = split[2].toLowerCase();
String group = split[3]; String group = split[3];
if (!plugin.config.getPlayerGroups(player).contains(group)) { if (!plugin.config.getPlayerGroups(player).contains(group)) {
sender.sendMessage(ChatColor.GREEN + "Player " + ChatColor.WHITE + player + ChatColor.GREEN + " was not in " + ChatColor.WHITE + group + ChatColor.GREEN + "."); sender.sendMessage(ChatColor.GREEN + "Player " + ChatColor.WHITE + player + ChatColor.GREEN + " was not in " + ChatColor.WHITE + group + ChatColor.GREEN + ".");
return true; return true;
} }
plugin.config.removePlayerGroup(player, group); plugin.config.removePlayerGroup(player, group);
plugin.refreshPermissions(); plugin.refreshPermissions();
sender.sendMessage(ChatColor.GREEN + "Player " + ChatColor.WHITE + player + ChatColor.GREEN + " is no longer in " + ChatColor.WHITE + group + ChatColor.GREEN + "."); sender.sendMessage(ChatColor.GREEN + "Player " + ChatColor.WHITE + player + ChatColor.GREEN + " is no longer in " + ChatColor.WHITE + group + ChatColor.GREEN + ".");
return true; return true;
} else if (subcommand.equals("remove")) { } else if (subcommand.equals("remove")) {
if (!checkPerm(sender, "player.remove")) return true; if (!checkPerm(sender, "player.remove")) return true;
if (split.length != 3) return usage(sender, command, "player remove"); if (split.length != 3) return usage(sender, command, "player remove");
String player = split[2].toLowerCase(); String player = split[2].toLowerCase();
if (!plugin.config.isPlayerInDB(player)) { if (!plugin.config.isPlayerInDB(player)) {
sender.sendMessage(ChatColor.GREEN + "Player " + ChatColor.WHITE + player + ChatColor.GREEN + " was not in config file."); sender.sendMessage(ChatColor.GREEN + "Player " + ChatColor.WHITE + player + ChatColor.GREEN + " was not in config file.");
return true; return true;
} }
plugin.config.removePlayer(player); plugin.config.removePlayer(player);
plugin.refreshPermissions(); plugin.refreshPermissions();
sender.sendMessage(ChatColor.GREEN + "Player " + ChatColor.WHITE + player + ChatColor.GREEN + " is no longer in config file."); sender.sendMessage(ChatColor.GREEN + "Player " + ChatColor.WHITE + player + ChatColor.GREEN + " is no longer in config file.");
return true; return true;
} else if (subcommand.equals("setperm")) { } else if (subcommand.equals("setperm")) {
if (split.length >= 4 && !checkPerm(sender, "player.setperm", Arrays.asList(split[3].split(",")))) return true; if (split.length >= 4 && !checkPerm(sender, "player.setperm", Arrays.asList(split[3].split(",")))) return true;
if (split.length != 4 && split.length != 5) return usage(sender, command, "player setperm"); if (split.length != 4 && split.length != 5) return usage(sender, command, "player setperm");
String player = split[2].toLowerCase(); String player = split[2].toLowerCase();
String perm = split[3]; String perm = split[3];
boolean value = (split.length != 5) || Boolean.parseBoolean(split[4]); boolean value = (split.length != 5) || Boolean.parseBoolean(split[4]);
String world = ""; String world = "";
if (perm.contains(":")) { if (perm.contains(":")) {
world = perm.substring(0, perm.indexOf(':')); world = perm.substring(0, perm.indexOf(':'));
perm = perm.substring(perm.indexOf(':') + 1); perm = perm.substring(perm.indexOf(':') + 1);
} }
plugin.config.addPlayerPermission(player, world, perm, value); plugin.config.addPlayerPermission(player, world, perm, value);
plugin.refreshPermissions(); plugin.refreshPermissions();
sender.sendMessage(ChatColor.GREEN + "Player " + ChatColor.WHITE + player + ChatColor.GREEN + " now has " + ChatColor.WHITE + perm + ChatColor.GREEN + " = " + ChatColor.WHITE + value + ChatColor.GREEN + "."); sender.sendMessage(ChatColor.GREEN + "Player " + ChatColor.WHITE + player + ChatColor.GREEN + " now has " + ChatColor.WHITE + perm + ChatColor.GREEN + " = " + ChatColor.WHITE + value + ChatColor.GREEN + ".");
return true; return true;
} else if (subcommand.equals("unsetperm")) { } else if (subcommand.equals("unsetperm")) {
if (split.length >= 4 && !checkPerm(sender, "player.unsetperm", Arrays.asList(split[3].split(",")))) return true; if (split.length >= 4 && !checkPerm(sender, "player.unsetperm", Arrays.asList(split[3].split(",")))) return true;
if (split.length != 4) return usage(sender, command, "player unsetperm"); if (split.length != 4) return usage(sender, command, "player unsetperm");
String player = split[2].toLowerCase(); String player = split[2].toLowerCase();
String perm = split[3]; String perm = split[3];
String world = ""; String world = "";
if (perm.contains(":")) { if (perm.contains(":")) {
world = perm.substring(0, perm.indexOf(':')); world = perm.substring(0, perm.indexOf(':'));
perm = perm.substring(perm.indexOf(':') + 1); perm = perm.substring(perm.indexOf(':') + 1);
} }
Map<String, Boolean> list = plugin.config.getPlayerPermissions(player, world); Map<String, Boolean> list = plugin.config.getPlayerPermissions(player, world);
if (!list.containsKey(perm)) { if (!list.containsKey(perm)) {
sender.sendMessage(ChatColor.GREEN + "Player " + ChatColor.WHITE + player + ChatColor.GREEN + " did not have " + ChatColor.WHITE + perm + ChatColor.GREEN + " set."); sender.sendMessage(ChatColor.GREEN + "Player " + ChatColor.WHITE + player + ChatColor.GREEN + " did not have " + ChatColor.WHITE + perm + ChatColor.GREEN + " set.");
return true; return true;
} }
plugin.config.removePlayerPermission(player, world, perm); plugin.config.removePlayerPermission(player, world, perm);
plugin.refreshPermissions(); plugin.refreshPermissions();
sender.sendMessage(ChatColor.GREEN + "Player " + ChatColor.WHITE + player + ChatColor.GREEN + " no longer has " + ChatColor.WHITE + perm + ChatColor.GREEN + " set."); sender.sendMessage(ChatColor.GREEN + "Player " + ChatColor.WHITE + player + ChatColor.GREEN + " no longer has " + ChatColor.WHITE + perm + ChatColor.GREEN + " set.");
return true; return true;
} else { } else {
return !checkPerm(sender, "player.help") || usage(sender, command); return !checkPerm(sender, "player.help") || usage(sender, command);
} }
} }
// -- utilities -- // -- utilities --
private boolean checkPerm(CommandSender sender, String subnode) { private boolean checkPerm(CommandSender sender, String subnode) {
boolean ok = sender.hasPermission("permissions." + subnode); boolean ok = sender.hasPermission("permissions." + subnode);
if (!ok) { if (!ok) {
sender.sendMessage(ChatColor.RED + "You do not have permissions to do that."); sender.sendMessage(ChatColor.RED + "You do not have permissions to do that.");
} }
return ok; return ok;
} }
private boolean checkPerm(CommandSender sender, String node, List<String> subnodes) { private boolean checkPerm(CommandSender sender, String node, List<String> subnodes) {
boolean ok = sender.hasPermission("permissions." + node); boolean ok = sender.hasPermission("permissions." + node);
if (!ok) { if (!ok) {
for (String subnode : subnodes) { for (String subnode : subnodes) {
String testnode = ""; String testnode = "";
for (String sub : subnode.split(".")) { for (String sub : subnode.split(".")) {
testnode += sub; testnode += sub;
if (sender.hasPermission("permissions." + node + "." + testnode)) { if (sender.hasPermission("permissions." + node + "." + testnode)) {
ok = true; ok = true;
break; break;
} }
} }
if (ok) break; if (ok) break;
} }
} }
if (!ok) { if (!ok) {
sender.sendMessage(ChatColor.RED + "You do not have permissions to do that."); sender.sendMessage(ChatColor.RED + "You do not have permissions to do that.");
} }
return ok; return ok;
} }
private boolean usage(CommandSender sender, Command command) { private boolean usage(CommandSender sender, Command command) {
sender.sendMessage(ChatColor.RED + "[====" + ChatColor.GREEN + " /permissons " + ChatColor.RED + "====]"); sender.sendMessage(ChatColor.RED + "[====" + ChatColor.GREEN + " /permissons " + ChatColor.RED + "====]");
for (String line : command.getUsage().split("\\n")) { for (String line : command.getUsage().split("\\n")) {
if ((line.startsWith("/<command> group") && !line.startsWith("/<command> group -")) || if ((line.startsWith("/<command> group") && !line.startsWith("/<command> group -")) ||
(line.startsWith("/<command> player") && !line.startsWith("/<command> player -"))) { (line.startsWith("/<command> player") && !line.startsWith("/<command> player -"))) {
continue; continue;
} }
sender.sendMessage(formatLine(line)); sender.sendMessage(formatLine(line));
} }
return true; return true;
} }
private boolean usage(CommandSender sender, Command command, String subcommand) { private boolean usage(CommandSender sender, Command command, String subcommand) {
sender.sendMessage(ChatColor.RED + "[====" + ChatColor.GREEN + " /permissons " + subcommand + " " + ChatColor.RED + "====]"); sender.sendMessage(ChatColor.RED + "[====" + ChatColor.GREEN + " /permissons " + subcommand + " " + ChatColor.RED + "====]");
for (String line : command.getUsage().split("\\n")) { for (String line : command.getUsage().split("\\n")) {
if (line.startsWith("/<command> " + subcommand)) { if (line.startsWith("/<command> " + subcommand)) {
sender.sendMessage(formatLine(line)); sender.sendMessage(formatLine(line));
} }
} }
return true; return true;
} }
private String formatLine(String line) { private String formatLine(String line) {
int i = line.indexOf(" - "); int i = line.indexOf(" - ");
String usage = line.substring(0, i); String usage = line.substring(0, i);
String desc = line.substring(i + 3); String desc = line.substring(i + 3);
usage = usage.replace("<command>", "permissions"); usage = usage.replace("<command>", "permissions");
usage = usage.replaceAll("\\[[^]:]+\\]", ChatColor.AQUA + "$0" + ChatColor.GREEN); usage = usage.replaceAll("\\[[^]:]+\\]", ChatColor.AQUA + "$0" + ChatColor.GREEN);
usage = usage.replaceAll("\\[[^]]+:\\]", ChatColor.AQUA + "$0" + ChatColor.LIGHT_PURPLE); usage = usage.replaceAll("\\[[^]]+:\\]", ChatColor.AQUA + "$0" + ChatColor.LIGHT_PURPLE);
usage = usage.replaceAll("<[^>]+>", ChatColor.LIGHT_PURPLE + "$0" + ChatColor.GREEN); usage = usage.replaceAll("<[^>]+>", ChatColor.LIGHT_PURPLE + "$0" + ChatColor.GREEN);
return ChatColor.GREEN + usage + " - " + ChatColor.WHITE + desc; return ChatColor.GREEN + usage + " - " + ChatColor.WHITE + desc;
} }
} }

View File

@ -18,33 +18,33 @@ public class SimplyPlayer implements Listener {
// Keep track of player's world // Keep track of player's world
@EventHandler(priority = EventPriority.LOWEST) @EventHandler(priority = EventPriority.LOWEST)
public void onWorldChange(PlayerChangedWorldEvent event) { public void onWorldChange(PlayerChangedWorldEvent event) {
plugin.debug("Player " + event.getPlayer().getName() + " changed world, recalculating..."); plugin.debug("Player " + event.getPlayer().getName() + " changed world, recalculating...");
plugin.calculateAttachment(event.getPlayer()); plugin.calculateAttachment(event.getPlayer());
} }
// Register players when needed // Register players when needed
@EventHandler(priority = EventPriority.LOWEST) @EventHandler(priority = EventPriority.LOWEST)
public void onPlayerLogin(PlayerJoinEvent event) { public void onPlayerLogin(PlayerJoinEvent event) {
plugin.debug("Player " + event.getPlayer().getName() + " joined, registering..."); plugin.debug("Player " + event.getPlayer().getName() + " joined, registering...");
plugin.registerPlayer(event.getPlayer()); plugin.registerPlayer(event.getPlayer());
} }
// Unregister players when needed // Unregister players when needed
@EventHandler(priority = EventPriority.HIGHEST) @EventHandler(priority = EventPriority.HIGHEST)
public void onPlayerKick(PlayerKickEvent event) { public void onPlayerKick(PlayerKickEvent event) {
if (event.isCancelled()) return; if (event.isCancelled()) return;
plugin.debug("Player " + event.getPlayer().getName() + " was kicked, unregistering..."); plugin.debug("Player " + event.getPlayer().getName() + " was kicked, unregistering...");
plugin.unregisterPlayer(event.getPlayer()); plugin.unregisterPlayer(event.getPlayer());
} }
@EventHandler(priority = EventPriority.HIGHEST) @EventHandler(priority = EventPriority.HIGHEST)
public void onPlayerQuit(PlayerQuitEvent event) { public void onPlayerQuit(PlayerQuitEvent event) {
plugin.debug("Player " + event.getPlayer().getName() + " quit, unregistering..."); plugin.debug("Player " + event.getPlayer().getName() + " quit, unregistering...");
plugin.unregisterPlayer(event.getPlayer()); plugin.unregisterPlayer(event.getPlayer());
} }
} }

View File

@ -23,14 +23,14 @@ import org.bukkit.plugin.java.JavaPlugin;
public class SimplyPlugin extends JavaPlugin { public class SimplyPlugin extends JavaPlugin {
protected PermsConfig config; protected PermsConfig config;
private SimplyPlayer playerListener = new SimplyPlayer(this); private SimplyPlayer playerListener = new SimplyPlayer(this);
private SimplyCommands commandExecutor = new SimplyCommands(this); private SimplyCommands commandExecutor = new SimplyCommands(this);
private HashMap<String, PermissionAttachment> permissions = new HashMap<String, PermissionAttachment>(); private HashMap<String, PermissionAttachment> permissions = new HashMap<String, PermissionAttachment>();
private File configFile; private File configFile;
private YamlConfiguration YamlConfig; private YamlConfiguration YamlConfig;
// -- Basic stuff // -- Basic stuff
@Override @Override
public void onEnable() { public void onEnable() {
// Unregister existing PermissionsBukkit nodes // Unregister existing PermissionsBukkit nodes
@ -47,55 +47,55 @@ public class SimplyPlugin extends JavaPlugin {
} }
} }
// Take care of configuration // Take care of configuration
configFile = new File(getDataFolder(), "config.yml"); configFile = new File(getDataFolder(), "config.yml");
if (!configFile.exists()) { if (!configFile.exists()) {
saveDefaultConfig(); saveDefaultConfig();
} }
reloadConfig(); reloadConfig();
// Register stuff // Register stuff
getCommand("permissions").setExecutor(commandExecutor); getCommand("permissions").setExecutor(commandExecutor);
getServer().getPluginManager().registerEvents(playerListener, this); getServer().getPluginManager().registerEvents(playerListener, this);
registerEvents(); registerEvents();
// Register everyone online right now // Register everyone online right now
for (Player p : getServer().getOnlinePlayers()) { for (Player p : getServer().getOnlinePlayers()) {
registerPlayer(p); registerPlayer(p);
} }
// How are you gentlemen // How are you gentlemen
getLogger().info("Enabled successfully, " + getServer().getOnlinePlayers().length + " players registered"); getLogger().info("Enabled successfully, " + getServer().getOnlinePlayers().length + " players registered");
} }
@Override @Override
public FileConfiguration getConfig() { public FileConfiguration getConfig() {
return YamlConfig; return YamlConfig;
} }
@Override @Override
public void reloadConfig() { public void reloadConfig() {
YamlConfig = new YamlConfiguration(); YamlConfig = new YamlConfiguration();
YamlConfig.options().pathSeparator('/'); YamlConfig.options().pathSeparator('/');
try { try {
YamlConfig.load(configFile); YamlConfig.load(configFile);
} catch (Exception e) { } catch (Exception e) {
getLogger().severe("Unable to load configuration!"); getLogger().severe("Unable to load configuration!");
} }
// Init DB // Init DB
initDatabase(); initDatabase();
} }
@Override @Override
public void onDisable() { public void onDisable() {
// Unregister everyone // Unregister everyone
for (Player p : getServer().getOnlinePlayers()) { for (Player p : getServer().getOnlinePlayers()) {
unregisterPlayer(p); unregisterPlayer(p);
} }
// Good day to you! I said good day! // Good day to you! I said good day!
getLogger().info("Disabled successfully, " + getServer().getOnlinePlayers().length + " players unregistered"); getLogger().info("Disabled successfully, " + getServer().getOnlinePlayers().length + " players unregistered");
} }
private void initDatabase() { private void initDatabase() {
@ -118,85 +118,85 @@ public class SimplyPlugin extends JavaPlugin {
return new SimplyAPI(this); return new SimplyAPI(this);
} }
// -- Plugin stuff // -- Plugin stuff
protected void registerPlayer(Player player) { protected void registerPlayer(Player player) {
if (permissions.containsKey(player.getName())) { if (permissions.containsKey(player.getName())) {
debug("Registering " + player.getName() + ": was already registered"); debug("Registering " + player.getName() + ": was already registered");
unregisterPlayer(player); unregisterPlayer(player);
} }
PermissionAttachment attachment = player.addAttachment(this); PermissionAttachment attachment = player.addAttachment(this);
permissions.put(player.getName(), attachment); permissions.put(player.getName(), attachment);
calculateAttachment(player); calculateAttachment(player);
} }
protected void unregisterPlayer(Player player) { protected void unregisterPlayer(Player player) {
if (permissions.containsKey(player.getName())) { if (permissions.containsKey(player.getName())) {
try { try {
player.removeAttachment(permissions.get(player.getName())); player.removeAttachment(permissions.get(player.getName()));
} }
catch (IllegalArgumentException ex) { catch (IllegalArgumentException ex) {
debug("Unregistering " + player.getName() + ": player did not have attachment"); debug("Unregistering " + player.getName() + ": player did not have attachment");
} }
permissions.remove(player.getName()); permissions.remove(player.getName());
} else { } else {
debug("Unregistering " + player.getName() + ": was not registered"); debug("Unregistering " + player.getName() + ": was not registered");
} }
} }
protected void refreshPermissions() { protected void refreshPermissions() {
try { try {
getConfig().save(configFile); getConfig().save(configFile);
reloadConfig(); reloadConfig();
} catch (IOException e) { } catch (IOException e) {
getLogger().warning("Failed to write changed config.yml: " + e.getMessage()); getLogger().warning("Failed to write changed config.yml: " + e.getMessage());
} }
for (String player : permissions.keySet()) { for (String player : permissions.keySet()) {
PermissionAttachment attachment = permissions.get(player); PermissionAttachment attachment = permissions.get(player);
for (String key : attachment.getPermissions().keySet()) { for (String key : attachment.getPermissions().keySet()) {
attachment.unsetPermission(key); attachment.unsetPermission(key);
} }
calculateAttachment(getServer().getPlayer(player)); calculateAttachment(getServer().getPlayer(player));
} }
} }
public ConfigurationSection getNode(String node) { public ConfigurationSection getNode(String node) {
for (String entry : getConfig().getKeys(true)) { for (String entry : getConfig().getKeys(true)) {
if (node.equalsIgnoreCase(entry) && getConfig().isConfigurationSection(entry)) { if (node.equalsIgnoreCase(entry) && getConfig().isConfigurationSection(entry)) {
return getConfig().getConfigurationSection(entry); return getConfig().getConfigurationSection(entry);
} }
} }
return null; return null;
} }
protected HashMap<String, Boolean> getAllPerms(String desc, String path) { protected HashMap<String, Boolean> getAllPerms(String desc, String path) {
HashMap<String, Boolean> result = new HashMap<String, Boolean>(); HashMap<String, Boolean> result = new HashMap<String, Boolean>();
ConfigurationSection node = getNode(path); ConfigurationSection node = getNode(path);
int failures = 0; int failures = 0;
String firstFailure = ""; String firstFailure = "";
Set<String> keys = node.getKeys(false); Set<String> keys = node.getKeys(false);
for (String key : keys) { for (String key : keys) {
if (node.isBoolean(key)) { if (node.isBoolean(key)) {
result.put(key, node.getBoolean(key)); result.put(key, node.getBoolean(key));
} else { } else {
++failures; ++failures;
if (firstFailure.length() == 0) { if (firstFailure.length() == 0) {
firstFailure = key; firstFailure = key;
} }
} }
} }
if (failures == 1) { if (failures == 1) {
getLogger().warning("In " + desc + ": " + firstFailure + " is non-boolean."); getLogger().warning("In " + desc + ": " + firstFailure + " is non-boolean.");
} else if (failures > 1) { } else if (failures > 1) {
getLogger().warning("In " + desc + ": " + firstFailure + " is non-boolean (+" + (failures-1) + " more)."); getLogger().warning("In " + desc + ": " + firstFailure + " is non-boolean (+" + (failures-1) + " more).");
} }
return result; return result;
} }
public void debug(String message) { public void debug(String message) {
if (getConfig().getBoolean("debug", false)) { if (getConfig().getBoolean("debug", false)) {
@ -204,86 +204,86 @@ public class SimplyPlugin extends JavaPlugin {
} }
} }
protected void calculateAttachment(Player player) { protected void calculateAttachment(Player player) {
if (player == null) { if (player == null) {
return; return;
} }
PermissionAttachment attachment = permissions.get(player.getName()); PermissionAttachment attachment = permissions.get(player.getName());
if (attachment == null) { if (attachment == null) {
debug("Calculating permissions on " + player.getName() + ": attachment was null"); debug("Calculating permissions on " + player.getName() + ": attachment was null");
return; return;
} }
for (String key : attachment.getPermissions().keySet()) { for (String key : attachment.getPermissions().keySet()) {
attachment.unsetPermission(key); attachment.unsetPermission(key);
} }
for (Map.Entry<String, Boolean> entry : calculatePlayerPermissions(player.getName().toLowerCase(), player.getWorld().getName()).entrySet()) { for (Map.Entry<String, Boolean> entry : calculatePlayerPermissions(player.getName().toLowerCase(), player.getWorld().getName()).entrySet()) {
attachment.setPermission(entry.getKey(), entry.getValue()); attachment.setPermission(entry.getKey(), entry.getValue());
} }
player.recalculatePermissions(); player.recalculatePermissions();
} }
// -- Private stuff // -- Private stuff
private Map<String, Boolean> calculatePlayerPermissions(String player, String world) { private Map<String, Boolean> calculatePlayerPermissions(String player, String world) {
String default_group = getConfig().getString("default", "default"); String default_group = getConfig().getString("default", "default");
if (!config.isPlayerInDB(player)) { if (!config.isPlayerInDB(player)) {
return calculateGroupPermissions(default_group, world); return calculateGroupPermissions(default_group, world);
} }
Map<String, Boolean> perms = new HashMap<String, Boolean>(); Map<String, Boolean> perms = new HashMap<String, Boolean>();
List<String> groups = config.getPlayerGroups(player); List<String> groups = config.getPlayerGroups(player);
if (groups.isEmpty()) groups.add(default_group); if (groups.isEmpty()) groups.add(default_group);
for (Entry<String, Boolean> entry : config.getPlayerPermissions(player).entrySet()) { for (Entry<String, Boolean> entry : config.getPlayerPermissions(player).entrySet()) {
perms.put(entry.getKey(), entry.getValue()); perms.put(entry.getKey(), entry.getValue());
} }
for (Entry<String, Boolean> entry : config.getPlayerPermissions(player, world).entrySet()) { for (Entry<String, Boolean> entry : config.getPlayerPermissions(player, world).entrySet()) {
// No containskey; world overrides non-world // No containskey; world overrides non-world
perms.put(entry.getKey(), entry.getValue()); perms.put(entry.getKey(), entry.getValue());
} }
for (String group : groups) { for (String group : groups) {
for (Map.Entry<String, Boolean> entry : calculateGroupPermissions(group, world).entrySet()) { for (Map.Entry<String, Boolean> entry : calculateGroupPermissions(group, world).entrySet()) {
if (!perms.containsKey(entry.getKey())) { // User overrides group if (!perms.containsKey(entry.getKey())) { // User overrides group
perms.put(entry.getKey(), entry.getValue()); perms.put(entry.getKey(), entry.getValue());
} }
} }
} }
return perms; return perms;
} }
private Map<String, Boolean> calculateGroupPermissions(String group, String world) { private Map<String, Boolean> calculateGroupPermissions(String group, String world) {
if (getNode("groups/" + group) == null) { if (getNode("groups/" + group) == null) {
return new HashMap<String, Boolean>(); return new HashMap<String, Boolean>();
} }
Map<String, Boolean> perms = getNode("groups/" + group + "/permissions") == null ? Map<String, Boolean> perms = getNode("groups/" + group + "/permissions") == null ?
new HashMap<String, Boolean>() : new HashMap<String, Boolean>() :
getAllPerms("group " + group, "groups/" + group + "/permissions"); getAllPerms("group " + group, "groups/" + group + "/permissions");
if (getNode("groups/" + group + "/worlds/" + world) != null) { if (getNode("groups/" + group + "/worlds/" + world) != null) {
for (Map.Entry<String, Boolean> entry : getAllPerms("group " + group, "groups/" + group + "/worlds/" + world).entrySet()) { for (Map.Entry<String, Boolean> entry : getAllPerms("group " + group, "groups/" + group + "/worlds/" + world).entrySet()) {
// No containskey; world overrides non-world // No containskey; world overrides non-world
perms.put(entry.getKey(), entry.getValue()); perms.put(entry.getKey(), entry.getValue());
} }
} }
for (String parent : getNode("groups/" + group).getStringList("inheritance")) { for (String parent : getNode("groups/" + group).getStringList("inheritance")) {
for (Map.Entry<String, Boolean> entry : calculateGroupPermissions(parent, world).entrySet()) { for (Map.Entry<String, Boolean> entry : calculateGroupPermissions(parent, world).entrySet()) {
if (!perms.containsKey(entry.getKey())) { // Children override permissions if (!perms.containsKey(entry.getKey())) { // Children override permissions
perms.put(entry.getKey(), entry.getValue()); perms.put(entry.getKey(), entry.getValue());
} }
} }
} }
return perms; return perms;
} }
private void registerEvents() { private void registerEvents() {
String path = getDescription().getMain().substring(0, getDescription().getMain().lastIndexOf('.')); String path = getDescription().getMain().substring(0, getDescription().getMain().lastIndexOf('.'));
@ -294,6 +294,6 @@ public class SimplyPlugin extends JavaPlugin {
debug(e.getMessage()); debug(e.getMessage());
} }
} }
} }
} }

View File

@ -18,31 +18,31 @@ public class ImportDB extends SimplyAPI implements ImportManager {
@Override @Override
public void run() throws Exception { public void run() throws Exception {
try { try {
ConfigFile importFile = new ConfigFile(plugin); ConfigFile importFile = new ConfigFile(plugin);
ConfigSQL importSQL = new ConfigSQL(plugin); ConfigSQL importSQL = new ConfigSQL(plugin);
if (!importSQL.checkDatabase()) { if (!importSQL.checkDatabase()) {
throw new Exception("Could not connect to database !"); throw new Exception("Could not connect to database !");
} }
for (String player : importSQL.getAllPlayers()) { for (String player : importSQL.getAllPlayers()) {
for (String group : importSQL.getPlayerGroups(player)) { for (String group : importSQL.getPlayerGroups(player)) {
importFile.addPlayerGroup(player, group); importFile.addPlayerGroup(player, group);
} }
for (Entry<String, Boolean> permission : importSQL.getPlayerPermissions(player).entrySet()) { for (Entry<String, Boolean> permission : importSQL.getPlayerPermissions(player).entrySet()) {
importFile.addPlayerPermission(player, permission.getKey(), permission.getValue()); importFile.addPlayerPermission(player, permission.getKey(), permission.getValue());
} }
for (String world : importSQL.getPlayerWorlds(player)) { for (String world : importSQL.getPlayerWorlds(player)) {
for (Entry<String, Boolean> permission : importSQL.getPlayerPermissions(player, world).entrySet()) { for (Entry<String, Boolean> permission : importSQL.getPlayerPermissions(player, world).entrySet()) {
importFile.addPlayerPermission(player, world, permission.getKey(), permission.getValue()); importFile.addPlayerPermission(player, world, permission.getKey(), permission.getValue());
} }
} }
} }
} catch (Exception e) { } catch (Exception e) {
throw e; throw e;
} }
} }
} }

View File

@ -18,31 +18,31 @@ public class ImportFile extends SimplyAPI implements ImportManager {
@Override @Override
public void run() throws Exception { public void run() throws Exception {
try { try {
ConfigFile importFile = new ConfigFile(plugin); ConfigFile importFile = new ConfigFile(plugin);
ConfigSQL importSQL = new ConfigSQL(plugin); ConfigSQL importSQL = new ConfigSQL(plugin);
if (!importSQL.checkDatabase()) { if (!importSQL.checkDatabase()) {
throw new Exception("Could not connect to database !"); throw new Exception("Could not connect to database !");
} }
for (String player : importFile.getAllPlayers()) { for (String player : importFile.getAllPlayers()) {
for (String group : importFile.getPlayerGroups(player)) { for (String group : importFile.getPlayerGroups(player)) {
importSQL.addPlayerGroup(player, group); importSQL.addPlayerGroup(player, group);
} }
for (Entry<String, Boolean> permission : importFile.getPlayerPermissions(player).entrySet()) { for (Entry<String, Boolean> permission : importFile.getPlayerPermissions(player).entrySet()) {
importSQL.addPlayerPermission(player, permission.getKey(), permission.getValue()); importSQL.addPlayerPermission(player, permission.getKey(), permission.getValue());
} }
for (String world : importFile.getPlayerWorlds(player)) { for (String world : importFile.getPlayerWorlds(player)) {
for (Entry<String, Boolean> permission : importFile.getPlayerPermissions(player, world).entrySet()) { for (Entry<String, Boolean> permission : importFile.getPlayerPermissions(player, world).entrySet()) {
importSQL.addPlayerPermission(player, world, permission.getKey(), permission.getValue()); importSQL.addPlayerPermission(player, world, permission.getKey(), permission.getValue());
} }
} }
} }
} catch (Exception e) { } catch (Exception e) {
throw e; throw e;
} }
} }
} }

View File

@ -22,7 +22,7 @@ public class ImportPermBukkit extends SimplyAPI implements ImportManager {
@Override @Override
public void run() throws Exception { public void run() throws Exception {
try { try {
permBukkit.load("plugins/PermissionsBukkit/config.yml"); permBukkit.load("plugins/PermissionsBukkit/config.yml");
plugin.getConfig().set("debug", permBukkit.getBoolean("debug")); plugin.getConfig().set("debug", permBukkit.getBoolean("debug"));
addMessage("build", permBukkit.getString("messages/build")); addMessage("build", permBukkit.getString("messages/build"));