net.minecraftforge.common.config

## Class Configuration

- java.lang.Object
- - net.minecraftforge.common.config.Configuration

-     public class Configuration
      extends java.lang.Object

  This class offers advanced configurations capabilities, allowing to provide various categories for configuration variables.

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `static class` | `Configuration.UnicodeInputStreamReader`

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static java.lang.String` | `ALLOWED_CHARS`
    `static com.google.common.base.CharMatcher` | `allowedProperties`
    `static java.lang.String` | `CATEGORY_GENERAL`
    `static java.lang.String` | `CATEGORY_SPLITTER`
    `static java.lang.String` | `COMMENT_SEPARATOR`
    `static java.lang.String` | `DEFAULT_ENCODING`
    `java.lang.String` | `defaultEncoding`
    `boolean` | `isChild`
    `static java.lang.String` | `NEW_LINE`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `Configuration()`
    `Configuration(java.io.File file)` Create a configuration file for the file given in parameter.
    `Configuration(java.io.File file, boolean caseSensitiveCustomCategories)`
    `Configuration(java.io.File file, java.lang.String configVersion)` Create a configuration file for the file given in parameter with the provided config version number.
    `Configuration(java.io.File file, java.lang.String configVersion, boolean caseSensitiveCustomCategories)`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `addCustomCategoryComment(java.lang.String category, java.lang.String comment)`
    `void` | `copyCategoryProps(Configuration fromConfig, java.lang.String[] ctgys)` Copies property objects from another Configuration object to this one using the list of category names.
    `static void` | `enableGlobalConfig()`
    `Property` | `get(java.lang.String category, java.lang.String key, boolean defaultValue)` Gets a boolean Property object without a comment using the default settings.
    `Property` | `get(java.lang.String category, java.lang.String key, boolean[] defaultValues)` Gets a boolean array Property without a comment using the default settings.
    `Property` | `get(java.lang.String category, java.lang.String key, boolean[] defaultValues, java.lang.String comment)` Gets a boolean array Property with a comment using the default settings.
    `Property` | `get(java.lang.String category, java.lang.String key, boolean[] defaultValues, java.lang.String comment, boolean isListLengthFixed, int maxListLength)` Gets a boolean array Property with all settings defined.
    `Property` | `get(java.lang.String category, java.lang.String key, boolean defaultValue, java.lang.String comment)` Gets a boolean Property object with a comment using the default settings.
    `Property` | `get(java.lang.String category, java.lang.String key, double defaultValue)` Gets a double Property object without a comment using default settings.
    `Property` | `get(java.lang.String category, java.lang.String key, double[] defaultValues)` Gets a double array Property object without a comment using default settings.
    `Property` | `get(java.lang.String category, java.lang.String key, double[] defaultValues, java.lang.String comment)` Gets a double array Property object without a comment using default settings.
    `Property` | `get(java.lang.String category, java.lang.String key, double[] defaultValues, java.lang.String comment, double minValue, double maxValue)` Gets a double array Property object with the defined comment, minimum and maximum bounds.
    `Property` | `get(java.lang.String category, java.lang.String key, double[] defaultValues, java.lang.String comment, double minValue, double maxValue, boolean isListLengthFixed, int maxListLength)` Gets a double array Property object with all settings defined.
    `Property` | `get(java.lang.String category, java.lang.String key, double defaultValue, java.lang.String comment)` Gets a double Property object with a comment using default settings.
    `Property` | `get(java.lang.String category, java.lang.String key, double defaultValue, java.lang.String comment, double minValue, double maxValue)` Gets a double Property object with the defined comment, minimum and maximum bounds
    `Property` | `get(java.lang.String category, java.lang.String key, int defaultValue)` Gets an integer Property object without a comment using default settings.
    `Property` | `get(java.lang.String category, java.lang.String key, int[] defaultValues)` Gets an integer array Property object without a comment using default settings.
    `Property` | `get(java.lang.String category, java.lang.String key, int[] defaultValues, java.lang.String comment)` Gets an integer array Property object with a comment using default settings.
    `Property` | `get(java.lang.String category, java.lang.String key, int[] defaultValues, java.lang.String comment, int minValue, int maxValue)` Gets an integer array Property object with the defined comment, minimum and maximum bounds.
    `Property` | `get(java.lang.String category, java.lang.String key, int[] defaultValues, java.lang.String comment, int minValue, int maxValue, boolean isListLengthFixed, int maxListLength)` Gets an integer array Property object with all settings defined.
    `Property` | `get(java.lang.String category, java.lang.String key, int defaultValue, java.lang.String comment)` Gets an integer Property object with a comment using default settings.
    `Property` | `get(java.lang.String category, java.lang.String key, int defaultValue, java.lang.String comment, int minValue, int maxValue)` Gets an integer Property object with the defined comment, minimum and maximum bounds.
    `Property` | `get(java.lang.String category, java.lang.String key, java.lang.String defaultValue)` Gets a string Property without a comment using the default settings.
    `Property` | `get(java.lang.String category, java.lang.String key, java.lang.String[] defaultValues)` Gets a string array Property without a comment using the default settings.
    `Property` | `get(java.lang.String category, java.lang.String key, java.lang.String[] defaultValues, java.lang.String comment)` Gets a string array Property with a comment using the default settings.
    `Property` | `get(java.lang.String category, java.lang.String key, java.lang.String[] defaultValues, java.lang.String comment, boolean isListLengthFixed, int maxListLength, java.util.regex.Pattern validationPattern)` Gets a string array Property with a comment with all settings defined.
    `Property` | `get(java.lang.String category, java.lang.String key, java.lang.String[] defaultValues, java.lang.String comment, java.util.regex.Pattern validationPattern)` Gets a string array Property with a comment using the defined validationPattern and otherwise default settings.
    `Property` | `get(java.lang.String category, java.lang.String key, java.lang.String[] defaultValues, java.lang.String comment, Property.Type type)` Gets a list (array) Property object of the specified type using default settings.
    `Property` | `get(java.lang.String category, java.lang.String key, java.lang.String defaultValue, java.lang.String comment)` Gets a string Property with a comment using the default settings.
    `Property` | `get(java.lang.String category, java.lang.String key, java.lang.String defaultValue, java.lang.String comment, java.util.regex.Pattern validationPattern)` Gets a string Property with a comment using the defined validationPattern and otherwise default settings.
    `Property` | `get(java.lang.String category, java.lang.String key, java.lang.String defaultValue, java.lang.String comment, Property.Type type)` Gets a Property object of the specified type using default settings.
    `Property` | `get(java.lang.String category, java.lang.String key, java.lang.String defaultValue, java.lang.String comment, java.lang.String[] validValues)` Gets a string Property with a comment using the defined validValues array and otherwise default settings.
    `boolean` | `getBoolean(java.lang.String name, java.lang.String category, boolean defaultValue, java.lang.String comment)` Creates a boolean property.
    `boolean` | `getBoolean(java.lang.String name, java.lang.String category, boolean defaultValue, java.lang.String comment, java.lang.String langKey)` Creates a boolean property.
    `ConfigCategory` | `getCategory(java.lang.String category)`
    `java.util.Set<java.lang.String>` | `getCategoryNames()`
    `java.io.File` | `getConfigFile()`
    `java.lang.String` | `getDefinedConfigVersion()`
    `float` | `getFloat(java.lang.String name, java.lang.String category, float defaultValue, float minValue, float maxValue, java.lang.String comment)` Creates a float property.
    `float` | `getFloat(java.lang.String name, java.lang.String category, float defaultValue, float minValue, float maxValue, java.lang.String comment, java.lang.String langKey)` Creates a float property.
    `int` | `getInt(java.lang.String name, java.lang.String category, int defaultValue, int minValue, int maxValue, java.lang.String comment)` Creates a integer property.
    `int` | `getInt(java.lang.String name, java.lang.String category, int defaultValue, int minValue, int maxValue, java.lang.String comment, java.lang.String langKey)` Creates a integer property.
    `java.lang.String` | `getLoadedConfigVersion()`
    `java.lang.String` | `getString(java.lang.String name, java.lang.String category, java.lang.String defaultValue, java.lang.String comment)` Creates a string property.
    `java.lang.String` | `getString(java.lang.String name, java.lang.String category, java.lang.String defaultValue, java.lang.String comment, java.util.regex.Pattern pattern)` Creates a string property.
    `java.lang.String` | `getString(java.lang.String name, java.lang.String category, java.lang.String defaultValue, java.lang.String comment, java.lang.String langKey)` Creates a string property.
    `java.lang.String` | `getString(java.lang.String name, java.lang.String category, java.lang.String defaultValue, java.lang.String comment, java.lang.String[] validValues)` Creates a string property.
    `java.lang.String` | `getString(java.lang.String name, java.lang.String category, java.lang.String defaultValue, java.lang.String comment, java.lang.String[] validValues, java.lang.String langKey)` Creates a string property.
    `java.lang.String` | `getString(java.lang.String name, java.lang.String category, java.lang.String defaultValue, java.lang.String comment, java.lang.String langKey, java.util.regex.Pattern pattern)` Creates a string property.
    `java.lang.String[]` | `getStringList(java.lang.String name, java.lang.String category, java.lang.String[] defaultValues, java.lang.String comment)` Creates a string list property.
    `java.lang.String[]` | `getStringList(java.lang.String name, java.lang.String category, java.lang.String[] defaultValue, java.lang.String comment, java.lang.String[] validValues)` Creates a string list property.
    `java.lang.String[]` | `getStringList(java.lang.String name, java.lang.String category, java.lang.String[] defaultValue, java.lang.String comment, java.lang.String[] validValues, java.lang.String langKey)` Creates a string list property.
    `boolean` | `hasCategory(java.lang.String category)`
    `boolean` | `hasChanged()`
    `boolean` | `hasKey(java.lang.String category, java.lang.String key)`
    `void` | `load()`
    `boolean` | `moveProperty(java.lang.String oldCategory, java.lang.String propName, java.lang.String newCategory)` Moves a property from one category to another.
    `void` | `removeCategory(ConfigCategory category)`
    `boolean` | `renameProperty(java.lang.String category, java.lang.String oldPropName, java.lang.String newPropName)` Renames a property in a given category.
    `void` | `save()`
    `Configuration` | `setCategoryComment(java.lang.String category, java.lang.String comment)` Adds a comment to the specified ConfigCategory object
    `Configuration` | `setCategoryConfigEntryClass(java.lang.String category, java.lang.Class<? extends GuiConfigEntries.IConfigEntry> clazz)` Sets the custom IConfigEntry class that should be used in place of the standard entry class (which is just a button that navigates into the category).
    `Configuration` | `setCategoryLanguageKey(java.lang.String category, java.lang.String langKey)` Adds a language key to the specified ConfigCategory object
    `Configuration` | `setCategoryPropertyOrder(java.lang.String category, java.util.List<java.lang.String> propOrder)` Sets the order that direct child properties of this config category will be written to the config file and will be displayed in config GUIs.
    `Configuration` | `setCategoryRequiresMcRestart(java.lang.String category, boolean requiresMcRestart)` Sets whether or not this ConfigCategory requires Minecraft to be restarted when changed.
    `Configuration` | `setCategoryRequiresWorldRestart(java.lang.String category, boolean requiresWorldRestart)` Sets the flag for whether or not this category can be edited while a world is running.
    `java.lang.String` | `toString()`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- - ### Field Detail

    - #### CATEGORY_GENERAL

          public static final java.lang.String CATEGORY_GENERAL

      See Also:
        Constant Field Values

    - #### ALLOWED_CHARS

          public static final java.lang.String ALLOWED_CHARS

      See Also:
        Constant Field Values

    - #### DEFAULT_ENCODING

          public static final java.lang.String DEFAULT_ENCODING

      See Also:
        Constant Field Values

    - #### CATEGORY_SPLITTER

          public static final java.lang.String CATEGORY_SPLITTER

      See Also:
        Constant Field Values

    - #### NEW_LINE

          public static final java.lang.String NEW_LINE

    - #### COMMENT_SEPARATOR

          public static final java.lang.String COMMENT_SEPARATOR

      See Also:
        Constant Field Values

    - #### allowedProperties

          public static final com.google.common.base.CharMatcher allowedProperties

    - #### defaultEncoding

          public java.lang.String defaultEncoding

    - #### isChild

          public boolean isChild

  - ### Constructor Detail

    - #### Configuration

          public Configuration()

    - #### Configuration

          public Configuration(java.io.File file)

      Create a configuration file for the file given in parameter.

    - #### Configuration

          public Configuration(java.io.File file,
                       java.lang.String configVersion)

      Create a configuration file for the file given in parameter with the provided config version number.

    - #### Configuration

          public Configuration(java.io.File file,
                       java.lang.String configVersion,
                       boolean caseSensitiveCustomCategories)

    - #### Configuration

          public Configuration(java.io.File file,
                       boolean caseSensitiveCustomCategories)

  - ### Method Detail

    - #### toString

          public java.lang.String toString()

      Overrides:
        `toString` in class `java.lang.Object`

    - #### getDefinedConfigVersion

          public java.lang.String getDefinedConfigVersion()

    - #### getLoadedConfigVersion

          public java.lang.String getLoadedConfigVersion()

    - #### get

          public Property get(java.lang.String category,
                     java.lang.String key,
                     boolean defaultValue)

      Gets a boolean Property object without a comment using the default settings.
      Parameters:
        `category` - the config category
        `key` - the Property key value
        `defaultValue` - the default value
      Returns:
        a boolean Property object without a comment

    - #### get

          public Property get(java.lang.String category,
                     java.lang.String key,
                     boolean defaultValue,
                     java.lang.String comment)

      Gets a boolean Property object with a comment using the default settings.
      Parameters:
        `category` - the config category
        `key` - the Property key value
        `defaultValue` - the default value
        `comment` - a String comment
      Returns:
        a boolean Property object without a comment

    - #### get

          public Property get(java.lang.String category,
                     java.lang.String key,
                     boolean[] defaultValues)

      Gets a boolean array Property without a comment using the default settings.
      Parameters:
        `category` - the config category
        `key` - the Property key value
        `defaultValues` - an array containing the default values
      Returns:
        a boolean array Property without a comment using these defaults: isListLengthFixed = false, maxListLength = -1

    - #### get

          public Property get(java.lang.String category,
                     java.lang.String key,
                     boolean[] defaultValues,
                     java.lang.String comment)

      Gets a boolean array Property with a comment using the default settings.
      Parameters:
        `category` - the config category
        `key` - the Property key value
        `defaultValues` - an array containing the default values
        `comment` - a String comment
      Returns:
        a boolean array Property with a comment using these defaults: isListLengthFixed = false, maxListLength = -1

    - #### get

          public Property get(java.lang.String category,
                     java.lang.String key,
                     boolean[] defaultValues,
                     java.lang.String comment,
                     boolean isListLengthFixed,
                     int maxListLength)

      Gets a boolean array Property with all settings defined.
      Parameters:
        `category` - the config category
        `key` - the Property key value
        `defaultValues` - an array containing the default values
        `comment` - a String comment
        `isListLengthFixed` - boolean for whether this array is required to be a specific length (defined by the default value array length or maxListLength)
        `maxListLength` - the maximum length of this array, use -1 for no max length
      Returns:
        a boolean array Property with all settings defined

    - #### get

          public Property get(java.lang.String category,
                     java.lang.String key,
                     int defaultValue)

      Gets an integer Property object without a comment using default settings.
      Parameters:
        `category` - the config category
        `key` - the Property key value
        `defaultValue` - the default value
      Returns:
        an integer Property object with default bounds of Integer.MIN_VALUE and Integer.MAX_VALUE

    - #### get

          public Property get(java.lang.String category,
                     java.lang.String key,
                     int defaultValue,
                     java.lang.String comment)

      Gets an integer Property object with a comment using default settings.
      Parameters:
        `category` - the config category
        `key` - the Property key value
        `defaultValue` - the default value
        `comment` - a String comment
      Returns:
        an integer Property object with default bounds of Integer.MIN_VALUE and Integer.MAX_VALUE

    - #### get

          public Property get(java.lang.String category,
                     java.lang.String key,
                     int defaultValue,
                     java.lang.String comment,
                     int minValue,
                     int maxValue)

      Gets an integer Property object with the defined comment, minimum and maximum bounds.
      Parameters:
        `category` - the config category
        `key` - the Property key value
        `defaultValue` - the default value
        `comment` - a String comment
        `minValue` - minimum boundary
        `maxValue` - maximum boundary
      Returns:
        an integer Property object with the defined comment, minimum and maximum bounds

    - #### get

          public Property get(java.lang.String category,
                     java.lang.String key,
                     int[] defaultValues)

      Gets an integer array Property object without a comment using default settings.
      Parameters:
        `category` - the config category
        `key` - the Property key value
        `defaultValues` - an array containing the default values
      Returns:
        an integer array Property object with default bounds of Integer.MIN_VALUE and Integer.MAX_VALUE, isListLengthFixed = false, maxListLength = -1

    - #### get

          public Property get(java.lang.String category,
                     java.lang.String key,
                     int[] defaultValues,
                     java.lang.String comment)

      Gets an integer array Property object with a comment using default settings.
      Parameters:
        `category` - the config category
        `key` - the Property key value
        `defaultValues` - an array containing the default values
        `comment` - a String comment
      Returns:
        an integer array Property object with default bounds of Integer.MIN_VALUE and Integer.MAX_VALUE, isListLengthFixed = false, maxListLength = -1

    - #### get

          public Property get(java.lang.String category,
                     java.lang.String key,
                     int[] defaultValues,
                     java.lang.String comment,
                     int minValue,
                     int maxValue)

      Gets an integer array Property object with the defined comment, minimum and maximum bounds.
      Parameters:
        `category` - the config category
        `key` - the Property key value
        `defaultValues` - an array containing the default values
        `comment` - a String comment
        `minValue` - minimum boundary
        `maxValue` - maximum boundary
      Returns:
        an integer array Property object with the defined comment, minimum and maximum bounds, isListLengthFixed = false, maxListLength = -1

    - #### get

          public Property get(java.lang.String category,
                     java.lang.String key,
                     int[] defaultValues,
                     java.lang.String comment,
                     int minValue,
                     int maxValue,
                     boolean isListLengthFixed,
                     int maxListLength)

      Gets an integer array Property object with all settings defined.
      Parameters:
        `category` - the config category
        `key` - the Property key value
        `defaultValues` - an array containing the default values
        `comment` - a String comment
        `minValue` - minimum boundary
        `maxValue` - maximum boundary
        `isListLengthFixed` - boolean for whether this array is required to be a specific length (defined by the default value array length or maxListLength)
        `maxListLength` - the maximum length of this array, use -1 for no max length
      Returns:
        an integer array Property object with all settings defined

    - #### get

          public Property get(java.lang.String category,
                     java.lang.String key,
                     double defaultValue)

      Gets a double Property object without a comment using default settings.
      Parameters:
        `category` - the config category
        `key` - the Property key value
        `defaultValue` - the default value
      Returns:
        a double Property object with default bounds of Double.MIN_VALUE and Double.MAX_VALUE

    - #### get

          public Property get(java.lang.String category,
                     java.lang.String key,
                     double defaultValue,
                     java.lang.String comment)

      Gets a double Property object with a comment using default settings.
      Parameters:
        `category` - the config category
        `key` - the Property key value
        `defaultValue` - the default value
        `comment` - a String comment
      Returns:
        a double Property object with default bounds of Double.MIN_VALUE and Double.MAX_VALUE

    - #### get

          public Property get(java.lang.String category,
                     java.lang.String key,
                     double defaultValue,
                     java.lang.String comment,
                     double minValue,
                     double maxValue)

      Gets a double Property object with the defined comment, minimum and maximum bounds
      Parameters:
        `category` - the config category
        `key` - the Property key value
        `defaultValue` - the default value
        `comment` - a String comment
        `minValue` - minimum boundary
        `maxValue` - maximum boundary
      Returns:
        a double Property object with the defined comment, minimum and maximum bounds

    - #### get

          public Property get(java.lang.String category,
                     java.lang.String key,
                     double[] defaultValues)

      Gets a double array Property object without a comment using default settings.
      Parameters:
        `category` - the config category
        `key` - the Property key value
        `defaultValues` - an array containing the default values
      Returns:
        a double array Property object with default bounds of Double.MIN_VALUE and Double.MAX_VALUE, isListLengthFixed = false, maxListLength = -1

    - #### get

          public Property get(java.lang.String category,
                     java.lang.String key,
                     double[] defaultValues,
                     java.lang.String comment)

      Gets a double array Property object without a comment using default settings.
      Parameters:
        `category` - the config category
        `key` - the Property key value
        `defaultValues` - an array containing the default values
        `comment` - a String comment
      Returns:
        a double array Property object with default bounds of Double.MIN_VALUE and Double.MAX_VALUE, isListLengthFixed = false, maxListLength = -1

    - #### get

          public Property get(java.lang.String category,
                     java.lang.String key,
                     double[] defaultValues,
                     java.lang.String comment,
                     double minValue,
                     double maxValue)

      Gets a double array Property object with the defined comment, minimum and maximum bounds.
      Parameters:
        `category` - the config category
        `key` - the Property key value
        `defaultValues` - an array containing the default values
        `comment` - a String comment
        `minValue` - minimum boundary
        `maxValue` - maximum boundary
      Returns:
        a double array Property object with the defined comment, minimum and maximum bounds, isListLengthFixed = false, maxListLength = -1

    - #### get

          public Property get(java.lang.String category,
                     java.lang.String key,
                     double[] defaultValues,
                     java.lang.String comment,
                     double minValue,
                     double maxValue,
                     boolean isListLengthFixed,
                     int maxListLength)

      Gets a double array Property object with all settings defined.
      Parameters:
        `category` - the config category
        `key` - the Property key value
        `defaultValues` - an array containing the default values
        `comment` - a String comment
        `minValue` - minimum boundary
        `maxValue` - maximum boundary
        `isListLengthFixed` - boolean for whether this array is required to be a specific length (defined by the default value array length or maxListLength)
        `maxListLength` - the maximum length of this array, use -1 for no max length
      Returns:
        a double array Property object with all settings defined

    - #### get

          public Property get(java.lang.String category,
                     java.lang.String key,
                     java.lang.String defaultValue)

      Gets a string Property without a comment using the default settings.
      Parameters:
        `category` - the config category
        `key` - the Property key value
        `defaultValue` - the default value
      Returns:
        a string Property with validationPattern = null, validValues = null

    - #### get

          public Property get(java.lang.String category,
                     java.lang.String key,
                     java.lang.String defaultValue,
                     java.lang.String comment)

      Gets a string Property with a comment using the default settings.
      Parameters:
        `category` - the config category
        `key` - the Property key value
        `defaultValue` - the default value
        `comment` - a String comment
      Returns:
        a string Property with validationPattern = null, validValues = null

    - #### get

          public Property get(java.lang.String category,
                     java.lang.String key,
                     java.lang.String defaultValue,
                     java.lang.String comment,
                     java.util.regex.Pattern validationPattern)

      Gets a string Property with a comment using the defined validationPattern and otherwise default settings.
      Parameters:
        `category` - the config category
        `key` - the Property key value
        `defaultValue` - the default value
        `comment` - a String comment
        `validationPattern` - a Pattern object for input validation
      Returns:
        a string Property with the defined validationPattern, validValues = null

    - #### get

          public Property get(java.lang.String category,
                     java.lang.String key,
                     java.lang.String defaultValue,
                     java.lang.String comment,
                     java.lang.String[] validValues)

      Gets a string Property with a comment using the defined validValues array and otherwise default settings.
      Parameters:
        `category` - the config category
        `key` - the Property key value
        `defaultValue` - the default value
        `comment` - a String comment
        `validValues` - an array of valid values that this Property can be set to. If an array is provided the Config GUI control will be a value cycle button.
      Returns:
        a string Property with the defined validValues array, validationPattern = null

    - #### get

          public Property get(java.lang.String category,
                     java.lang.String key,
                     java.lang.String[] defaultValues)

      Gets a string array Property without a comment using the default settings.
      Parameters:
        `category` - the config category
        `key` - the Property key value
        `defaultValues` - an array containing the default values
      Returns:
        a string array Property with validationPattern = null, isListLengthFixed = false, maxListLength = -1

    - #### get

          public Property get(java.lang.String category,
                     java.lang.String key,
                     java.lang.String[] defaultValues,
                     java.lang.String comment)

      Gets a string array Property with a comment using the default settings.
      Parameters:
        `category` - the config category
        `key` - the Property key value
        `defaultValues` - an array containing the default values
        `comment` - a String comment
      Returns:
        a string array Property with validationPattern = null, isListLengthFixed = false, maxListLength = -1

    - #### get

          public Property get(java.lang.String category,
                     java.lang.String key,
                     java.lang.String[] defaultValues,
                     java.lang.String comment,
                     java.util.regex.Pattern validationPattern)

      Gets a string array Property with a comment using the defined validationPattern and otherwise default settings.
      Parameters:
        `category` - the config category
        `key` - the Property key value
        `defaultValues` - an array containing the default values
        `comment` - a String comment
        `validationPattern` - a Pattern object for input validation
      Returns:
        a string array Property with the defined validationPattern, isListLengthFixed = false, maxListLength = -1

    - #### get

          public Property get(java.lang.String category,
                     java.lang.String key,
                     java.lang.String[] defaultValues,
                     java.lang.String comment,
                     boolean isListLengthFixed,
                     int maxListLength,
                     java.util.regex.Pattern validationPattern)

      Gets a string array Property with a comment with all settings defined.
      Parameters:
        `category` - the config category
        `key` - the Property key value
        `defaultValues` - an array containing the default values
        `comment` - a String comment
        `isListLengthFixed` - boolean for whether this array is required to be a specific length (defined by the default value array length or maxListLength)
        `maxListLength` - the maximum length of this array, use -1 for no max length
        `validationPattern` - a Pattern object for input validation
      Returns:
        a string array Property with a comment with all settings defined

    - #### get

          public Property get(java.lang.String category,
                     java.lang.String key,
                     java.lang.String defaultValue,
                     java.lang.String comment,
                     Property.Type type)

      Gets a Property object of the specified type using default settings.
      Parameters:
        `category` - the config category
        `key` - the Property key value
        `defaultValue` - the default value
        `comment` - a String comment
        `type` - a Property.Type enum value
      Returns:
        a Property object of the specified type using default settings

    - #### get

          public Property get(java.lang.String category,
                     java.lang.String key,
                     java.lang.String[] defaultValues,
                     java.lang.String comment,
                     Property.Type type)

      Gets a list (array) Property object of the specified type using default settings.
      Parameters:
        `category` - the config category
        `key` - the Property key value
        `defaultValues` - an array containing the default values
        `comment` - a String comment
        `type` - a Property.Type enum value
      Returns:
        a list (array) Property object of the specified type using default settings

    - #### hasCategory

          public boolean hasCategory(java.lang.String category)

    - #### hasKey

          public boolean hasKey(java.lang.String category,
                       java.lang.String key)

    - #### load

          public void load()

    - #### save

          public void save()

    - #### getCategory

          public ConfigCategory getCategory(java.lang.String category)

    - #### removeCategory

          public void removeCategory(ConfigCategory category)

    - #### setCategoryComment

          public Configuration setCategoryComment(java.lang.String category,
                                         java.lang.String comment)

      Adds a comment to the specified ConfigCategory object
      Parameters:
        `category` - the config category
        `comment` - a String comment

    - #### addCustomCategoryComment

          public void addCustomCategoryComment(java.lang.String category,
                                      java.lang.String comment)

    - #### setCategoryLanguageKey

          public Configuration setCategoryLanguageKey(java.lang.String category,
                                             java.lang.String langKey)

      Adds a language key to the specified ConfigCategory object
      Parameters:
        `category` - the config category
        `langKey` - a language key string such as configcategory.general

    - #### setCategoryConfigEntryClass

          public Configuration setCategoryConfigEntryClass(java.lang.String category,
                                                  java.lang.Class<? extends GuiConfigEntries.IConfigEntry> clazz)

      Sets the custom IConfigEntry class that should be used in place of the standard entry class (which is just a button that navigates into the category). This class MUST provide a constructor with the following parameter types: `GuiConfig` (the parent GuiConfig screen will be provided), `GuiPropertyList` (the parent GuiPropertyList will be provided), `IConfigElement` (the IConfigElement for this Property will be provided).

    - #### setCategoryRequiresWorldRestart

          public Configuration setCategoryRequiresWorldRestart(java.lang.String category,
                                                      boolean requiresWorldRestart)

      Sets the flag for whether or not this category can be edited while a world is running. Care should be taken to ensure that only properties that are truly dynamic can be changed from the in-game options menu. Only set this flag to true if all child properties/categories are unable to be modified while a world is running.

    - #### setCategoryRequiresMcRestart

          public Configuration setCategoryRequiresMcRestart(java.lang.String category,
                                                   boolean requiresMcRestart)

      Sets whether or not this ConfigCategory requires Minecraft to be restarted when changed. Defaults to false. Only set this flag to true if ALL child properties/categories require Minecraft to be restarted when changed. Setting this flag will also prevent modification of the child properties/categories while a world is running.

    - #### setCategoryPropertyOrder

          public Configuration setCategoryPropertyOrder(java.lang.String category,
                                               java.util.List<java.lang.String> propOrder)

      Sets the order that direct child properties of this config category will be written to the config file and will be displayed in config GUIs.

    - #### enableGlobalConfig

          public static void enableGlobalConfig()

    - #### hasChanged

          public boolean hasChanged()

    - #### getCategoryNames

          public java.util.Set<java.lang.String> getCategoryNames()

    - #### renameProperty

          public boolean renameProperty(java.lang.String category,
                               java.lang.String oldPropName,
                               java.lang.String newPropName)

      Renames a property in a given category.
      Parameters:
        `category` - the category in which the property resides
        `oldPropName` - the existing property name
        `newPropName` - the new property name
      Returns:
        true if the category and property exist, false otherwise

    - #### moveProperty

          public boolean moveProperty(java.lang.String oldCategory,
                             java.lang.String propName,
                             java.lang.String newCategory)

      Moves a property from one category to another.
      Parameters:
        `oldCategory` - the category the property currently resides in
        `propName` - the name of the property to move
        `newCategory` - the category the property should be moved to
      Returns:
        true if the old category and property exist, false otherwise

    - #### copyCategoryProps

          public void copyCategoryProps(Configuration fromConfig,
                               java.lang.String[] ctgys)

      Copies property objects from another Configuration object to this one using the list of category names. Properties that only exist in the "from" object are ignored. Pass null for the ctgys array to include all categories.

    - #### getString

          public java.lang.String getString(java.lang.String name,
                                   java.lang.String category,
                                   java.lang.String defaultValue,
                                   java.lang.String comment)

      Creates a string property.
      Parameters:
        `name` - Name of the property.
        `category` - Category of the property.
        `defaultValue` - Default value of the property.
        `comment` - A brief description what the property does.
      Returns:
        The value of the new string property.

    - #### getString

          public java.lang.String getString(java.lang.String name,
                                   java.lang.String category,
                                   java.lang.String defaultValue,
                                   java.lang.String comment,
                                   java.lang.String langKey)

      Creates a string property.
      Parameters:
        `name` - Name of the property.
        `category` - Category of the property.
        `defaultValue` - Default value of the property.
        `comment` - A brief description what the property does.
        `langKey` - A language key used for localization of GUIs
      Returns:
        The value of the new string property.

    - #### getString

          public java.lang.String getString(java.lang.String name,
                                   java.lang.String category,
                                   java.lang.String defaultValue,
                                   java.lang.String comment,
                                   java.util.regex.Pattern pattern)

      Creates a string property.
      Parameters:
        `name` - Name of the property.
        `category` - Category of the property.
        `defaultValue` - Default value of the property.
        `comment` - A brief description what the property does.
      Returns:
        The value of the new string property.

    - #### getString

          public java.lang.String getString(java.lang.String name,
                                   java.lang.String category,
                                   java.lang.String defaultValue,
                                   java.lang.String comment,
                                   java.lang.String langKey,
                                   java.util.regex.Pattern pattern)

      Creates a string property.
      Parameters:
        `name` - Name of the property.
        `category` - Category of the property.
        `defaultValue` - Default value of the property.
        `comment` - A brief description what the property does.
        `langKey` - A language key used for localization of GUIs
      Returns:
        The value of the new string property.

    - #### getString

          public java.lang.String getString(java.lang.String name,
                                   java.lang.String category,
                                   java.lang.String defaultValue,
                                   java.lang.String comment,
                                   java.lang.String[] validValues)

      Creates a string property.
      Parameters:
        `name` - Name of the property.
        `category` - Category of the property.
        `defaultValue` - Default value of the property.
        `comment` - A brief description what the property does.
        `validValues` - A list of valid values that this property can be set to.
      Returns:
        The value of the new string property.

    - #### getString

          public java.lang.String getString(java.lang.String name,
                                   java.lang.String category,
                                   java.lang.String defaultValue,
                                   java.lang.String comment,
                                   java.lang.String[] validValues,
                                   java.lang.String langKey)

      Creates a string property.
      Parameters:
        `name` - Name of the property.
        `category` - Category of the property.
        `defaultValue` - Default value of the property.
        `comment` - A brief description what the property does.
        `validValues` - A list of valid values that this property can be set to.
        `langKey` - A language key used for localization of GUIs
      Returns:
        The value of the new string property.

    - #### getStringList

          public java.lang.String[] getStringList(java.lang.String name,
                                         java.lang.String category,
                                         java.lang.String[] defaultValues,
                                         java.lang.String comment)

      Creates a string list property.
      Parameters:
        `name` - Name of the property.
        `category` - Category of the property.
        `defaultValue` - Default value of the property.
        `comment` - A brief description what the property does.
      Returns:
        The value of the new string property.

    - #### getStringList

          public java.lang.String[] getStringList(java.lang.String name,
                                         java.lang.String category,
                                         java.lang.String[] defaultValue,
                                         java.lang.String comment,
                                         java.lang.String[] validValues)

      Creates a string list property.
      Parameters:
        `name` - Name of the property.
        `category` - Category of the property.
        `defaultValue` - Default value of the property.
        `comment` - A brief description what the property does.
      Returns:
        The value of the new string property.

    - #### getStringList

          public java.lang.String[] getStringList(java.lang.String name,
                                         java.lang.String category,
                                         java.lang.String[] defaultValue,
                                         java.lang.String comment,
                                         java.lang.String[] validValues,
                                         java.lang.String langKey)

      Creates a string list property.
      Parameters:
        `name` - Name of the property.
        `category` - Category of the property.
        `defaultValue` - Default value of the property.
        `comment` - A brief description what the property does.
      Returns:
        The value of the new string property.

    - #### getBoolean

          public boolean getBoolean(java.lang.String name,
                           java.lang.String category,
                           boolean defaultValue,
                           java.lang.String comment)

      Creates a boolean property.
      Parameters:
        `name` - Name of the property.
        `category` - Category of the property.
        `defaultValue` - Default value of the property.
        `comment` - A brief description what the property does.
      Returns:
        The value of the new boolean property.

    - #### getBoolean

          public boolean getBoolean(java.lang.String name,
                           java.lang.String category,
                           boolean defaultValue,
                           java.lang.String comment,
                           java.lang.String langKey)

      Creates a boolean property.
      Parameters:
        `name` - Name of the property.
        `category` - Category of the property.
        `defaultValue` - Default value of the property.
        `comment` - A brief description what the property does.
        `langKey` - A language key used for localization of GUIs
      Returns:
        The value of the new boolean property.

    - #### getInt

          public int getInt(java.lang.String name,
                   java.lang.String category,
                   int defaultValue,
                   int minValue,
                   int maxValue,
                   java.lang.String comment)

      Creates a integer property.
      Parameters:
        `name` - Name of the property.
        `category` - Category of the property.
        `defaultValue` - Default value of the property.
        `minValue` - Minimum value of the property.
        `maxValue` - Maximum value of the property.
        `comment` - A brief description what the property does.
      Returns:
        The value of the new integer property.

    - #### getInt

          public int getInt(java.lang.String name,
                   java.lang.String category,
                   int defaultValue,
                   int minValue,
                   int maxValue,
                   java.lang.String comment,
                   java.lang.String langKey)

      Creates a integer property.
      Parameters:
        `name` - Name of the property.
        `category` - Category of the property.
        `defaultValue` - Default value of the property.
        `minValue` - Minimum value of the property.
        `maxValue` - Maximum value of the property.
        `comment` - A brief description what the property does.
        `langKey` - A language key used for localization of GUIs
      Returns:
        The value of the new integer property.

    - #### getFloat

          public float getFloat(java.lang.String name,
                       java.lang.String category,
                       float defaultValue,
                       float minValue,
                       float maxValue,
                       java.lang.String comment)

      Creates a float property.
      Parameters:
        `name` - Name of the property.
        `category` - Category of the property.
        `defaultValue` - Default value of the property.
        `minValue` - Minimum value of the property.
        `maxValue` - Maximum value of the property.
        `comment` - A brief description what the property does.
      Returns:
        The value of the new float property.

    - #### getFloat

          public float getFloat(java.lang.String name,
                       java.lang.String category,
                       float defaultValue,
                       float minValue,
                       float maxValue,
                       java.lang.String comment,
                       java.lang.String langKey)

      Creates a float property.
      Parameters:
        `name` - Name of the property.
        `category` - Category of the property.
        `defaultValue` - Default value of the property.
        `minValue` - Minimum value of the property.
        `maxValue` - Maximum value of the property.
        `comment` - A brief description what the property does.
        `langKey` - A language key used for localization of GUIs
      Returns:
        The value of the new float property.

    - #### getConfigFile

          public java.io.File getConfigFile()