001 package org.bukkit.inventory.meta; 002 003 import java.util.Map; 004 005 import org.bukkit.Material; 006 import org.bukkit.enchantments.Enchantment; 007 008 /** 009 * EnchantmentMeta is specific to items that can <i>store</i> enchantments, as 010 * opposed to being enchanted. {@link Material#ENCHANTED_BOOK} is an example 011 * of an item with enchantment storage. 012 */ 013 public interface EnchantmentStorageMeta extends ItemMeta { 014 015 /** 016 * Checks for the existence of any stored enchantments. 017 * 018 * @return true if an enchantment exists on this meta 019 */ 020 boolean hasStoredEnchants(); 021 022 /** 023 * Checks for storage of the specified enchantment. 024 * 025 * @param ench enchantment to check 026 * @return true if this enchantment is stored in this meta 027 */ 028 boolean hasStoredEnchant(Enchantment ench); 029 030 /** 031 * Checks for the level of the stored enchantment. 032 * 033 * @param ench enchantment to check 034 * @return The level that the specified stored enchantment has, or 0 if 035 * none 036 */ 037 int getStoredEnchantLevel(Enchantment ench); 038 039 /** 040 * Gets a copy the stored enchantments in this ItemMeta. 041 * 042 * @return An immutable copy of the stored enchantments 043 */ 044 Map<Enchantment, Integer> getStoredEnchants(); 045 046 /** 047 * Stores the specified enchantment in this item meta. 048 * 049 * @param ench Enchantment to store 050 * @param level Level for the enchantment 051 * @param ignoreLevelRestriction this indicates the enchantment should be 052 * applied, ignoring the level limit 053 * @return true if the item meta changed as a result of this call, false 054 * otherwise 055 * @throws IllegalArgumentException if enchantment is null 056 */ 057 boolean addStoredEnchant(Enchantment ench, int level, boolean ignoreLevelRestriction); 058 059 /** 060 * Remove the specified stored enchantment from this item meta. 061 * 062 * @param ench Enchantment to remove 063 * @return true if the item meta changed as a result of this call, false 064 * otherwise 065 * @throws IllegalArgumentException if enchantment is null 066 */ 067 boolean removeStoredEnchant(Enchantment ench) throws IllegalArgumentException; 068 069 /** 070 * Checks if the specified enchantment conflicts with any enchantments in 071 * this ItemMeta. 072 * 073 * @param ench enchantment to test 074 * @return true if the enchantment conflicts, false otherwise 075 */ 076 boolean hasConflictingStoredEnchant(Enchantment ench); 077 078 EnchantmentStorageMeta clone(); 079 }