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 *

* 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 *

* 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. *

* 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. *

* 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; } }