summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/main/java/org/bukkit/inventory/meta/EnchantmentStorageMeta.java65
1 files changed, 65 insertions, 0 deletions
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 <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();
+}