/FileExtraction/Java_unseen/Wind-Development_WindSpigot/WindSpigot-API/src/main/java/org/bukkit/metadata/MetadataValue.java
package org.bukkit.metadata;

import org.bukkit.plugin.Plugin;

public interface MetadataValue {

	/**
	 * Fetches the value of this metadata item.
	 *
	 * @return the metadata value.
	 */
	public Object value();

	/**
	 * Attempts to convert the value of this metadata item into an int.
	 *
	 * @return the value as an int.
	 */
	public int asInt();

	/**
	 * Attempts to convert the value of this metadata item into a float.
	 *
	 * @return the value as a float.
	 */
	public float asFloat();

	/**
	 * Attempts to convert the value of this metadata item into a double.
	 *
	 * @return the value as a double.
	 */
	public double asDouble();

	/**
	 * Attempts to convert the value of this metadata item into a long.
	 *
	 * @return the value as a long.
	 */
	public long asLong();

	/**
	 * Attempts to convert the value of this metadata item into a short.
	 *
	 * @return the value as a short.
	 */
	public short asShort();

	/**
	 * Attempts to convert the value of this metadata item into a byte.
	 *
	 * @return the value as a byte.
	 */
	public byte asByte();

	/**
	 * Attempts to convert the value of this metadata item into a boolean.
	 *
	 * @return the value as a boolean.
	 */
	public boolean asBoolean();

	/**
	 * Attempts to convert the value of this metadata item into a string.
	 *
	 * @return the value as a string.
	 */
	public String asString();

	/**
	 * Returns the {@link Plugin} that created this metadata item.
	 *
	 * @return the plugin that owns this metadata value. This should never be null.
	 */
	public Plugin getOwningPlugin();

	/**
	 * Invalidates this metadata item, forcing it to recompute when next accessed.
	 */
	public void invalidate();
}
