69 lines
1.6 KiB
Java

package net.knarcraft.blacksmith.config;
import org.jetbrains.annotations.NotNull;
/**
* An interface describing a setting
*/
public interface Setting {
/**
* Gets the full config path for this setting
*
* @return <p>The full config path for this setting</p>
*/
@NotNull String getPath();
/**
* Gets the config path without the root node
*
* @return <p>The config path without the root node</p>
*/
@NotNull String getChildPath();
/**
* Gets the value of this setting
*
* @return <p>The value of this setting</p>
*/
@NotNull Object getDefaultValue();
/**
* The name of the command used to change this setting
*
* @return <p>The name of this setting's command</p>
*/
@NotNull String getCommandName();
/**
* Gets the value type for this setting
*
* @return <p>The value type for this setting</p>
*/
@NotNull SettingValueType getValueType();
/**
* Gets the description explaining the usage of this setting
*
* @return <p>This setting's description</p>
*/
@NotNull String getDescription();
/**
* Gets whether this setting can be set per-NPC, or if it's set globally
*
* @return <p>True if this setting is set per-NPC</p>
*/
boolean isPerNPC();
/**
* Gets whether this setting is a customizable message
*
* <p>Messages are a special case, as you generally want to see the raw formatting, not just the result.</p>
*
* @return <p>True if this setting is a customizable message</p>
*/
boolean isMessage();
}