Exemplo n.º 1
0
  /**
   * 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;
  }