/** Load all of the limits */ private void loadLimits() { // make sure we're working on a clean slate defaultLimits.clear(); playerLimits.clear(); groupLimits.clear(); // add the default limits defaultLimits.addAll(findLimits("defaults")); // add all of the player limits try { for (String player : configuration.getKeys("players")) { playerLimits.put(player.toLowerCase(), findLimits("players." + player)); } } catch (NullPointerException e) { } // add all of the group limits try { for (String group : configuration.getKeys("groups")) { groupLimits.put(group, findLimits("groups." + group)); } } catch (NullPointerException e) { } }
/** * Find and match all of the limits in a given list of nodes for the config * * @param node * @return */ private List<Limit> findLimits(String node) { List<Limit> limits = new LinkedList<Limit>(); List<String> keys = configuration.getKeys(node); for (String key : keys) { String value = configuration.getString(node + "." + key); int limit; if (value.equalsIgnoreCase("unlimited")) { limit = UNLIMITED; } else { limit = Integer.parseInt(value); } // Match default if (key.equalsIgnoreCase("default")) { limits.add(new DefaultLimit(limit)); } else { Material material = Material.getMaterial(key.toUpperCase()); limits.add(new BlockLimit(material, limit)); } } // Order it orderLimits(limits); return limits; }