Package buildcraft.core.utils

Source Code of buildcraft.core.utils.ConfigUtils

/**
* Copyright (c) 2011-2014, SpaceToad and the BuildCraft Team
* http://www.mod-buildcraft.com
*
* BuildCraft is distributed under the terms of the Minecraft Mod Public
* License 1.0, or MMPL. Please check the contents of the license located in
* http://www.mod-buildcraft.com/MMPL-1.0.txt
*/
package buildcraft.core.utils;

import org.apache.logging.log4j.Level;

import net.minecraftforge.common.config.Configuration;
import net.minecraftforge.common.config.Property;

import buildcraft.api.core.BCLog;

public class ConfigUtils {

  private static final String COMMENT_PREFIX = "";
  private static final String COMMENT_SUFFIX = "";
  private final Configuration config;
  private final String cat;

  public ConfigUtils(Configuration config, String cat) {
    this.config = config;
    this.cat = cat;
  }

  public boolean get(String tag, boolean defaultValue, String comment) {
    return get(tag, defaultValue, false, comment);
  }

  public boolean get(String tag, boolean defaultValue, boolean reset, String comment) {
    Property prop = config.get(cat, tag, defaultValue);
    prop.comment = COMMENT_PREFIX + comment.replace("{t}", tag) + COMMENT_SUFFIX;

    boolean ret = parseBoolean(prop, defaultValue);

    if (reset) {
      prop.set(defaultValue);
    }

    return ret;
  }

  public int get(String tag, int defaultValue, String comment) {
    Property prop = config.get(cat, tag, defaultValue);
    prop.comment = COMMENT_PREFIX + comment.replace("{t}", tag) + COMMENT_SUFFIX;
    return parseInteger(prop, defaultValue);
  }

  public int get(String tag, int min, int defaultValue, int max, String comment) {
    Property prop = config.get(cat, tag, defaultValue);
    prop.comment = COMMENT_PREFIX + comment.replace("{t}", tag) + COMMENT_SUFFIX;
    int parsed = parseInteger(prop, defaultValue);
    int clamped = Math.max(parsed, min);
    clamped = Math.min(clamped, max);
    if (clamped != parsed) {
      prop.set(clamped);
    }
    return clamped;
  }

  public float get(String tag, float min, float defaultValue, float max, String comment) {
    Property prop = config.get(cat, tag, defaultValue);
    prop.comment = COMMENT_PREFIX + comment.replace("{t}", tag) + COMMENT_SUFFIX;
    double parsed = parseDouble(prop, defaultValue);
    double clamped = Math.max(parsed, min);
    clamped = Math.min(clamped, max);
    if (clamped != parsed) {
      prop.set(clamped);
    }
    return (float) clamped;
  }

  private boolean parseBoolean(Property prop, boolean defaultValue) {
    String value = prop.getString();
    boolean parsed;
    try {
      parsed = Boolean.parseBoolean(value);
    } catch (NumberFormatException ex) {
      BCLog.logger.log(Level.WARN, "Failed to parse config tag, reseting to default: " + prop.getName(), ex);
      prop.set(defaultValue);
      return defaultValue;
    }
    return parsed;
  }

  private int parseInteger(Property prop, int defaultValue) {
    String value = prop.getString();
    int parsed;
    try {
      parsed = Integer.parseInt(value);
    } catch (NumberFormatException ex) {
      BCLog.logger.log(Level.WARN, "Failed to parse config tag, reseting to default: " + prop.getName(), ex);
      prop.set(defaultValue);
      return defaultValue;
    }
    return parsed;
  }

  private double parseDouble(Property prop, double defaultValue) {
    String value = prop.getString();
    double parsed;
    try {
      parsed = Double.parseDouble(value);
    } catch (NumberFormatException ex) {
      BCLog.logger.log(Level.WARN, "Failed to parse config tag, reseting to default: " + prop.getName(), ex);
      prop.set(defaultValue);
      return defaultValue;
    }
    return parsed;
  }
}
TOP

Related Classes of buildcraft.core.utils.ConfigUtils

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.