/** * Load the ChatConfig.yml * * <p>If it doesn't exist, create it from the resource in this jar. * * @param filepath * @param defaultRes * @return true if the config was loaded */ @SuppressWarnings({"unchecked"}) public boolean loadConfig(String filepath, String defaultRes) { String filename = filepath + FileMgmt.fileSeparator() + defaultRes; // Pass the plugin reference so it can load the defaults if needed. Map<String, Object> file = FileMgmt.getFile(filename, defaultRes, plugin); if (file != null) { for (String Key : file.keySet()) { if (Key.equalsIgnoreCase("spam_time")) ChatSettings.setSpam_time(Double.parseDouble((file.get(Key)).toString())); if (Key.equalsIgnoreCase("HeroicDeathToIRC")) { Map<String, Object> subNodes = (Map<String, Object>) file.get(Key); for (String element : subNodes.keySet()) { if (element.equalsIgnoreCase("enabled")) ChatSettings.setHeroicDeathToIRC(Boolean.valueOf(subNodes.get(element).toString())); if (element.equalsIgnoreCase("craftIRCTags")) ChatSettings.setheroicDeathTags(subNodes.get(element).toString()); } } if (Key.equalsIgnoreCase("modify_chat")) { Map<String, Object> subNodes = (Map<String, Object>) file.get(Key); for (String element : subNodes.keySet()) { if (element.equalsIgnoreCase("enable")) ChatSettings.setModify_chat(Boolean.valueOf(subNodes.get(element).toString())); if (element.equalsIgnoreCase("per_world")) ChatSettings.setPer_world(Boolean.valueOf(subNodes.get(element).toString())); } } if (Key.equalsIgnoreCase("colour")) { Map<String, Object> subNodes = (Map<String, Object>) file.get(Key); for (String element : subNodes.keySet()) { if (element.equalsIgnoreCase("king")) ChatSettings.setKingColour(subNodes.get(element).toString()); if (element.equalsIgnoreCase("mayor")) ChatSettings.setMayorColour(subNodes.get(element).toString()); if (element.equalsIgnoreCase("resident")) ChatSettings.setResidentColour(subNodes.get(element).toString()); } } if (Key.equalsIgnoreCase("tag_formats")) { Map<String, Object> subNodes = (Map<String, Object>) file.get(Key); for (String element : subNodes.keySet()) { if (element.equalsIgnoreCase("world")) ChatSettings.setWorldTag(subNodes.get(element).toString()); if (element.equalsIgnoreCase("town")) ChatSettings.setTownTag(subNodes.get(element).toString()); if (element.equalsIgnoreCase("nation")) ChatSettings.setNationTag(subNodes.get(element).toString()); if (element.equalsIgnoreCase("both")) ChatSettings.setBothTags(subNodes.get(element).toString()); } } if (Key.equalsIgnoreCase("channel_formats")) { Map<String, Object> subNodes = (Map<String, Object>) file.get(Key); channelFormats group = new channelFormats(Key); for (String element : subNodes.keySet()) { if (element.equalsIgnoreCase("global")) group.setGLOBAL(subNodes.get(element).toString()); if (element.equalsIgnoreCase("town")) group.setTOWN(subNodes.get(element).toString()); if (element.equalsIgnoreCase("nation")) group.setNATION(subNodes.get(element).toString()); if (element.equalsIgnoreCase("default")) group.setDEFAULT(subNodes.get(element).toString()); } ChatSettings.addFormatGroup(group); } if (Key.equalsIgnoreCase("worlds")) { Map<String, Object> allWorlds = (Map<String, Object>) file.get(Key); if (allWorlds != null) { for (String worlds : allWorlds.keySet()) { Map<String, Object> world = (Map<String, Object>) allWorlds.get(worlds); channelFormats group = new channelFormats(worlds); for (String element : world.keySet()) { if (element.equalsIgnoreCase("global")) group.setGLOBAL(world.get(element).toString()); if (element.equalsIgnoreCase("town")) group.setTOWN(world.get(element).toString()); if (element.equalsIgnoreCase("nation")) group.setNATION(world.get(element).toString()); if (element.equalsIgnoreCase("default")) group.setDEFAULT(world.get(element).toString()); } ChatSettings.addFormatGroup(group); } } } } if (ChatSettings.populateWorldFormats()) saveConfig(filename); return true; } return false; }