001 package org.bukkit.inventory.meta; 002 003 import java.util.List; 004 import java.util.Map; 005 006 import org.bukkit.configuration.serialization.ConfigurationSerializable; 007 import org.bukkit.enchantments.Enchantment; 008 009 /** 010 * This type represents the storage mechanism for auxiliary item data. 011 * <p> 012 * An implementation will handle the creation and application for ItemMeta. 013 * This class should not be implemented by a plugin in a live environment. 014 */ 015 public interface ItemMeta extends Cloneable, ConfigurationSerializable { 016 017 /** 018 * Checks for existence of a display name. 019 * 020 * @return true if this has a display name 021 */ 022 boolean hasDisplayName(); 023 024 /** 025 * Gets the display name that is set. 026 * <p> 027 * Plugins should check that hasDisplayName() returns <code>true</code> 028 * before calling this method. 029 * 030 * @return the display name that is set 031 */ 032 String getDisplayName(); 033 034 /** 035 * Sets the display name. 036 * 037 * @param name the name to set 038 */ 039 void setDisplayName(String name); 040 041 /** 042 * Checks for existence of lore. 043 * 044 * @return true if this has lore 045 */ 046 boolean hasLore(); 047 048 /** 049 * Gets the lore that is set. 050 * <p> 051 * Plugins should check if hasLore() returns <code>true</code> before 052 * calling this method. 053 * 054 * @return a list of lore that is set 055 */ 056 List<String> getLore(); 057 058 /** 059 * Sets the lore for this item. 060 * Removes lore when given null. 061 * 062 * @param lore the lore that will be set 063 */ 064 void setLore(List<String> lore); 065 066 /** 067 * Checks for the existence of any enchantments. 068 * 069 * @return true if an enchantment exists on this meta 070 */ 071 boolean hasEnchants(); 072 073 /** 074 * Checks for existence of the specified enchantment. 075 * 076 * @param ench enchantment to check 077 * @return true if this enchantment exists for this meta 078 */ 079 boolean hasEnchant(Enchantment ench); 080 081 /** 082 * Checks for the level of the specified enchantment. 083 * 084 * @param ench enchantment to check 085 * @return The level that the specified enchantment has, or 0 if none 086 */ 087 int getEnchantLevel(Enchantment ench); 088 089 /** 090 * Returns a copy the enchantments in this ItemMeta.<br /> 091 * Returns an empty map if none. 092 * 093 * @return An immutable copy of the enchantments 094 */ 095 Map<Enchantment, Integer> getEnchants(); 096 097 /** 098 * Adds the specified enchantment to this item meta. 099 * 100 * @param ench Enchantment to add 101 * @param level Level for the enchantment 102 * @param ignoreLevelRestriction this indicates the enchantment should be 103 * applied, ignoring the level limit 104 * @return true if the item meta changed as a result of this call, false 105 * otherwise 106 */ 107 boolean addEnchant(Enchantment ench, int level, boolean ignoreLevelRestriction); 108 109 /** 110 * Removes the specified enchantment from this item meta. 111 * 112 * @param ench Enchantment to remove 113 * @return true if the item meta changed as a result of this call, false 114 * otherwise 115 */ 116 boolean removeEnchant(Enchantment ench); 117 118 /** 119 * Checks if the specified enchantment conflicts with any enchantments in 120 * this ItemMeta. 121 * 122 * @param ench enchantment to test 123 * @return true if the enchantment conflicts, false otherwise 124 */ 125 boolean hasConflictingEnchant(Enchantment ench); 126 127 @SuppressWarnings("javadoc") 128 ItemMeta clone(); 129 }