[Solved] Config regenerating upon the removal of "<" ">"

Discussion in 'Plugin Development' started by fletch_to_99, Feb 11, 2012.

Thread Status:
Not open for further replies.
  1. Offline

    fletch_to_99

    Hey everyone,
    A user was having problems with my plugin, it would genereate a new config everytime he removed "<" and ">" from the line. NOTE He had to remove both of them, not just one.
    Code:
    MINECRAFT: <{groupPrefix}{prefix}{name}{suffix}{groupSuffix}>{colon} {message}
              ^                                                ^
    Here is how the config is loaded:

    Code:
        public void load() {
            final FileConfiguration config = this.plugin.getConfig();
            final File CONFIGURATION_FILE = new File(Constants.SETTINGS_PATH
                    + File.separator + Constants.SETTINGS_FILE);
            boolean exists = CONFIGURATION_FILE.exists();
            log("Loading settings.yml file");
            if (exists) {
                try {
                    log("Loading settings!");
                    config.options()
                            .header("MonsterIRC's configs - Refer to \"http://dev.bukkit.org/server-mods/monsterirc/pages/settings/\" for help");
                    config.options().copyDefaults(true);
                    config.load(CONFIGURATION_FILE.getAbsolutePath());
                } catch (Exception e) {
                    debug(e);
                }
            } else {
                log("Loading default settings!");
                config.options()
                        .header("MonsterIRC's configs - Refer to \"http://dev.bukkit.org/server-mods/monsterirc/pages/settings/\" for help");
                config.options().copyDefaults(true);
            }
            try {
                Variables.ident = config.getBoolean("IRC.SETTINGS.IDENTIFY",
                        Variables.ident);
                Variables.name = config.getString("IRC.SETTINGS.NICKNAME",
                        Variables.name);
                Variables.password = config.getString("IRC.SETTINGS.PASSWORD",
                        Variables.password);
                Variables.server = config.getString("IRC.SETTINGS.SERVER",
                        Variables.server);
                Variables.port = config.getInt("IRC.SETTINGS.PORT", Variables.port);
                Variables.limit = config.getInt(
                        "IRC.OPTIONS.MESSAGE_LIMIT_PER_SEC", Variables.limit);
                Variables.timeout = config.getInt("IRC.OPTIONS.TIMEOUT",
                        Variables.timeout);
                Variables.tries = config.getInt("IRC.OPTIONS.RETRYS",
                        Variables.tries);
                Variables.debug = config.getBoolean("IRC.OPTIONS.DEBUG",
                        Variables.debug);
                Variables.passOnName = config.getBoolean(
                        "IRC.OPTIONS.PASS_ON_NAME", Variables.passOnName);
                Variables.colors = config.getBoolean("IRC.OPTIONS.ALLOW_COLORS",
                        Variables.colors);
                Variables.joinAndQuit = config.getBoolean(
                        "IRC.OPTIONS.SHOW_JOIN_AND_LEAVE_MESSAGES",
                        Variables.joinAndQuit);
                Variables.ingamecommands = config.getBoolean(
                        "IRC.ADMIN.INGAME_COMMANDS", Variables.ingamecommands);
                Variables.commandPrefix = config
                        .getString("IRC.ADMIN.INGAME_COMMANDS_PREFIX",
                                Variables.commandPrefix);
                Variables.mcformat = config.getString("IRC.FORMAT.MINECRAFT",
                        Variables.mcformat);
                Variables.ircformat = config.getString("IRC.FORMAT.IRC",
                        Variables.ircformat);
                Variables.muted = config.getStringList("IRC.MUTED");
                save(config, CONFIGURATION_FILE);
            } catch (Exception e) {
                debug(e);
            }
            String defaultFormat = "<{groupPrefix}{prefix}{name}{suffix}{groupSuffix}>{colon} {message}";
            if (Variables.mcformat.contains("{name}")
                    && Variables.mcformat.contains("{message}")) {
            } else {
                debug("Invalid Minecraft format detected!");
                Variables.mcformat = defaultFormat;
            }
            if (Variables.ircformat.contains("{name}")
                    && Variables.ircformat.contains("{message}")) {
            } else {
                debug("Invalid IRC format detected!");
                Variables.ircformat = defaultFormat;
            }
            if (Variables.name.contains("default")) {
                firstRun = true;
            }
        }
    Here is the config.yml that is packed in the jar:

    Code:
    IRC:
      SETTINGS:
        IDENTIFY: false
        NICKNAME: default
        PASSWORD: default
        SERVER: irc.esper.net
        PORT: 6667
      OPTIONS:
        MESSAGE_LIMIT_PER_SEC: 2
        TIMEOUT: 2000
        RETRYS: 5
        DEBUG: false
        PASS_ON_NAME: false
        ALLOW_COLORS: true
        SHOW_JOIN_AND_LEAVE_MESSAGES: true
      ADMIN:
        INGAME_COMMANDS: false
        INGAME_COMMANDS_PREFIX: .
      FORMAT:
        MINECRAFT: <{groupPrefix}{prefix}{name}{suffix}{groupSuffix}>{colon} {message}
        IRC: <{groupPrefix}{prefix}{name}{suffix}{groupSuffix}>{colon} {message}
      MUTED:
      - sampleuser
    

    If you have any Ideas why, feel free to reply! Thanks :)
     
  2. Offline

    Njol

    That's because '{' is a special character in YAML. The string has to be put in quotes: "{groupPrefix}{prefix}{name}{suffix}{groupSuffix}{colon} {message}"
     
    fletch_to_99 likes this.
  3. Offline

    fletch_to_99

    Ahh, that would explain it, thanks :p
     
Thread Status:
Not open for further replies.

Share This Page