Add enchantment storage meta. Adds BUKKIT-3237

Books can 'store' enchantments that can be applied to other items later.
These enchantments exist seperately of enchantments that actually effect the
item, and are as stated 'stored' in the book instead of the book being
enchanted. The meta is generically named as the concept could be applied to
other item types later, such as a enchantment scroll.

All of the methods mimic those in the base meta, but instead specify
'stored' in each method name.

By: Wesley Wolfe <weswolf@aol.com>
This commit is contained in:
Bukkit/Spigot 2012-12-21 07:28:33 -06:00
parent 817fc4e584
commit db2058e2d0

View file

@ -0,0 +1,65 @@
package org.bukkit.inventory.meta;
import java.util.Map;
import org.bukkit.Material;
import org.bukkit.enchantments.Enchantment;
/**
* EnchantmentMeta is specific to items that can <i>store</i> enchantments, as opposed to being enchanted.
* {@link Material#ENCHANTED_BOOK} is an example of an item with enchantment storage.
*/
public interface EnchantmentStorageMeta extends ItemMeta {
/**
* Checks for the existence of any stored enchantments.
*
* @return true if an enchantment exists on this meta
*/
boolean hasStoredEnchants();
/**
* Checks for storage of the specified enchantment.
*
* @param ench enchantment to check
* @return true if this enchantment is stored in this meta
*/
boolean hasStoredEnchant(Enchantment ench);
/**
* Checks for the level of the stored enchantment.
*
* @param ench enchantment to check
* @return The level that the specified stored enchantment has, or 0 if none
*/
int getStoredEnchantLevel(Enchantment ench);
/**
* Gets a copy the stored enchantments in this ItemMeta.
*
* @return An immutable copy of the stored enchantments
*/
Map<Enchantment, Integer> getStoredEnchants();
/**
* Stores the specified enchantment in this item meta.
*
* @param ench Enchantment to store
* @param level Level for the enchantment
* @param ignoreLevelRestriction this indicates the enchantment should be applied, ignoring the level limit
* @return true if the item meta changed as a result of this call, false otherwise
* @throws IllegalArgumentException if enchantment is null
*/
boolean addStoredEnchant(Enchantment ench, int level, boolean ignoreLevelRestriction);
/**
* Remove the specified stored enchantment from this item meta.
*
* @param ench Enchantment to remove
* @return true if the item meta changed as a result of this call, false otherwise
* @throws IllegalArgumentException if enchantment is null
*/
boolean removeStoredEnchant(Enchantment ench) throws IllegalArgumentException;
EnchantmentStorageMeta clone();
}