From 5be32cd8f0d5c17ed8f4a8f74b6d60e4ccc66d03 Mon Sep 17 00:00:00 2001 From: Wesley Wolfe Date: Fri, 21 Dec 2012 07:28:33 -0600 Subject: [PATCH] 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. --- .../meta/EnchantmentStorageMeta.java | 65 +++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 src/main/java/org/bukkit/inventory/meta/EnchantmentStorageMeta.java diff --git a/src/main/java/org/bukkit/inventory/meta/EnchantmentStorageMeta.java b/src/main/java/org/bukkit/inventory/meta/EnchantmentStorageMeta.java new file mode 100644 index 00000000..8822d695 --- /dev/null +++ b/src/main/java/org/bukkit/inventory/meta/EnchantmentStorageMeta.java @@ -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 store 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 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(); +}