/FileExtraction/Java_unseen/Wind-Development_WindSpigot/WindSpigot-API/src/main/java/org/bukkit/inventory/meta/PotionMeta.java
package org.bukkit.inventory.meta;

import java.util.List;

import org.bukkit.Material;
import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType;

/**
 * Represents a potion ({@link Material#POTION}) that can have custom effects.
 */
public interface PotionMeta extends ItemMeta {

	/**
	 * Checks for the presence of custom potion effects.
	 *
	 * @return true if custom potion effects are applied
	 */
	boolean hasCustomEffects();

	/**
	 * Gets an immutable list containing all custom potion effects applied to this
	 * potion.
	 * <p>
	 * Plugins should check that hasCustomEffects() returns true before calling this
	 * method.
	 *
	 * @return the immutable list of custom potion effects
	 */
	List<PotionEffect> getCustomEffects();

	/**
	 * Adds a custom potion effect to this potion.
	 *
	 * @param effect    the potion effect to add
	 * @param overwrite true if any existing effect of the same type should be
	 *                  overwritten
	 * @return true if the potion meta changed as a result of this call
	 */
	boolean addCustomEffect(PotionEffect effect, boolean overwrite);

	/**
	 * Removes a custom potion effect from this potion.
	 *
	 * @param type the potion effect type to remove
	 * @return true if the potion meta changed as a result of this call
	 */
	boolean removeCustomEffect(PotionEffectType type);

	/**
	 * Checks for a specific custom potion effect type on this potion.
	 * 
	 * @param type the potion effect type to check for
	 * @return true if the potion has this effect
	 */
	boolean hasCustomEffect(PotionEffectType type);

	/**
	 * Moves a potion effect to the top of the potion effect list.
	 * <p>
	 * This causes the client to display the potion effect in the potion's name.
	 *
	 * @param type the potion effect type to move
	 * @return true if the potion meta changed as a result of this call
	 */
	boolean setMainEffect(PotionEffectType type);

	/**
	 * Removes all custom potion effects from this potion.
	 *
	 * @return true if the potion meta changed as a result of this call
	 */
	boolean clearCustomEffects();

	PotionMeta clone();
}
