Newer
Older
ultramine_bukkit / src / main / java / org / bukkit / configuration / ConfigurationOptions.java
@vlad20012 vlad20012 on 24 Feb 2017 2 KB initial
package org.bukkit.configuration;

/**
 * Various settings for controlling the input and output of a {@link
 * Configuration}
 */
public class ConfigurationOptions
{
	private char pathSeparator = '.';
	private boolean copyDefaults = false;
	private final Configuration configuration;

	protected ConfigurationOptions(Configuration configuration)
	{
		this.configuration = configuration;
	}

	/**
	 * Returns the {@link Configuration} that this object is responsible for.
	 *
	 * @return Parent configuration
	 */
	public Configuration configuration()
	{
		return configuration;
	}

	/**
	 * Gets the char that will be used to separate {@link
	 * ConfigurationSection}s
	 * <p>
	 * This value does not affect how the {@link Configuration} is stored,
	 * only in how you access the data. The default value is '.'.
	 *
	 * @return Path separator
	 */
	public char pathSeparator()
	{
		return pathSeparator;
	}

	/**
	 * Sets the char that will be used to separate {@link
	 * ConfigurationSection}s
	 * <p>
	 * This value does not affect how the {@link Configuration} is stored,
	 * only in how you access the data. The default value is '.'.
	 *
	 * @param value Path separator
	 * @return This object, for chaining
	 */
	public ConfigurationOptions pathSeparator(char value)
	{
		this.pathSeparator = value;
		return this;
	}

	/**
	 * Checks if the {@link Configuration} should copy values from its default
	 * {@link Configuration} directly.
	 * <p>
	 * If this is true, all values in the default Configuration will be
	 * directly copied, making it impossible to distinguish between values
	 * that were set and values that are provided by default. As a result,
	 * {@link ConfigurationSection#contains(java.lang.String)} will always
	 * return the same value as {@link
	 * ConfigurationSection#isSet(java.lang.String)}. The default value is
	 * false.
	 *
	 * @return Whether or not defaults are directly copied
	 */
	public boolean copyDefaults()
	{
		return copyDefaults;
	}

	/**
	 * Sets if the {@link Configuration} should copy values from its default
	 * {@link Configuration} directly.
	 * <p>
	 * If this is true, all values in the default Configuration will be
	 * directly copied, making it impossible to distinguish between values
	 * that were set and values that are provided by default. As a result,
	 * {@link ConfigurationSection#contains(java.lang.String)} will always
	 * return the same value as {@link
	 * ConfigurationSection#isSet(java.lang.String)}. The default value is
	 * false.
	 *
	 * @param value Whether or not defaults are directly copied
	 * @return This object, for chaining
	 */
	public ConfigurationOptions copyDefaults(boolean value)
	{
		this.copyDefaults = value;
		return this;
	}
}