Interface ItemFactory


public interface ItemFactory
An instance of the ItemFactory can be obtained with Server.getItemFactory().

The ItemFactory is solely responsible for creating item meta containers to apply on item stacks.

  • Method Details

    • getItemMeta

      @Nullable ItemMeta getItemMeta(@NotNull Material material)
      This creates a new item meta for the material.
      Parameters:
      material - The material to consider as base for the meta
      Returns:
      a new ItemMeta that could be applied to an item stack of the specified material
    • isApplicable

      boolean isApplicable(@Nullable ItemMeta meta, @Nullable ItemStack stack) throws IllegalArgumentException
      This method checks the item meta to confirm that it is applicable (no data lost if applied) to the specified ItemStack.

      A SkullMeta would not be valid for a sword, but a normal ItemMeta from an enchanted dirt block would.

      Parameters:
      meta - Meta to check
      stack - Item that meta will be applied to
      Returns:
      true if the meta can be applied without losing data, false otherwise
      Throws:
      IllegalArgumentException - if the meta was not created by this factory
    • isApplicable

      boolean isApplicable(@Nullable ItemMeta meta, @Nullable Material material) throws IllegalArgumentException
      This method checks the item meta to confirm that it is applicable (no data lost if applied) to the specified Material.

      A SkullMeta would not be valid for a sword, but a normal ItemMeta from an enchanted dirt block would.

      Parameters:
      meta - Meta to check
      material - Material that meta will be applied to
      Returns:
      true if the meta can be applied without losing data, false otherwise
      Throws:
      IllegalArgumentException - if the meta was not created by this factory
    • equals

      boolean equals(@Nullable ItemMeta meta1, @Nullable ItemMeta meta2) throws IllegalArgumentException
      This method is used to compare two item meta data objects.
      Parameters:
      meta1 - First meta to compare, and may be null to indicate no data
      meta2 - Second meta to compare, and may be null to indicate no data
      Returns:
      false if one of the meta has data the other does not, otherwise true
      Throws:
      IllegalArgumentException - if either meta was not created by this factory
    • asMetaFor

      @Nullable ItemMeta asMetaFor(@NotNull ItemMeta meta, @NotNull ItemStack stack) throws IllegalArgumentException
      Returns an appropriate item meta for the specified stack.

      The item meta returned will always be a valid meta for a given ItemStack of the specified material. It may be a more or less specific meta, and could also be the same meta or meta type as the parameter. The item meta returned will also always be the most appropriate meta.

      Example, if a SkullMeta is being applied to a book, this method would return a BookMeta containing all information in the specified meta that is applicable to an ItemMeta, the highest common interface.

      Parameters:
      meta - the meta to convert
      stack - the stack to convert the meta for
      Returns:
      An appropriate item meta for the specified item stack. No guarantees are made as to if a copy is returned. This will be null for a stack of air.
      Throws:
      IllegalArgumentException - if the specified meta was not created by this factory
    • asMetaFor

      @Nullable ItemMeta asMetaFor(@NotNull ItemMeta meta, @NotNull Material material) throws IllegalArgumentException
      Returns an appropriate item meta for the specified material.

      The item meta returned will always be a valid meta for a given ItemStack of the specified material. It may be a more or less specific meta, and could also be the same meta or meta type as the parameter. The item meta returned will also always be the most appropriate meta.

      Example, if a SkullMeta is being applied to a book, this method would return a BookMeta containing all information in the specified meta that is applicable to an ItemMeta, the highest common interface.

      Parameters:
      meta - the meta to convert
      material - the material to convert the meta for
      Returns:
      An appropriate item meta for the specified item material. No guarantees are made as to if a copy is returned. This will be null for air.
      Throws:
      IllegalArgumentException - if the specified meta was not created by this factory
    • getDefaultLeatherColor

      @NotNull Color getDefaultLeatherColor()
      Returns the default color for all leather armor.
      Returns:
      the default color for leather armor
    • createItemStack

      @NotNull ItemStack createItemStack(@NotNull String input) throws IllegalArgumentException
      Create a new ItemStack given the supplied input.

      The input should match the same input as expected by Minecraft's /give command. For example,

      "minecraft:diamond_sword[minecraft:enchantments={levels:{"minecraft:sharpness": 3}}]"
      would yield an ItemStack of Material.DIAMOND_SWORD with an ItemMeta containing a level 3 Enchantment.SHARPNESS enchantment.
      Parameters:
      input - the item input string
      Returns:
      the created ItemStack
      Throws:
      IllegalArgumentException - if the input string was provided in an invalid or unsupported format
    • getSpawnEgg

      @Nullable Material getSpawnEgg(@NotNull EntityType type)
      Gets a Material representing the spawn egg for the provided EntityType.
      Will return null for EntityTypes that do not have a corresponding spawn egg.
      Parameters:
      type - the entity type
      Returns:
      the Material of this EntityTypes spawn egg or null
    • enchantItem

      @NotNull ItemStack enchantItem(@NotNull Entity entity, @NotNull ItemStack item, int level, boolean allowTreasures)
      Enchants the given item at the provided level.
      If an item that is air is passed through an error is thrown.
      Parameters:
      entity - the entity to use as a source of randomness
      item - the item to enchant
      level - the level to use, which is the level in the enchantment table
      allowTreasures - allows treasure enchants, e.g. mending, if true.
      Returns:
      a new ItemStack containing the result of the Enchantment
    • enchantItem

      @NotNull ItemStack enchantItem(@NotNull World world, @NotNull ItemStack item, int level, boolean allowTreasures)
      Enchants the given item at the provided level.
      If an item that is air is passed through an error is thrown.
      Parameters:
      world - the world to use as a source of randomness
      item - the item to enchant
      level - the level to use, which is the level in the enchantment table
      allowTreasures - allow the treasure enchants, e.g. mending, if true.
      Returns:
      a new ItemStack containing the result of the Enchantment
    • enchantItem

      @NotNull ItemStack enchantItem(@NotNull ItemStack item, int level, boolean allowTreasures)
      Enchants the given item at the provided level.
      If an item that is air is passed through an error is thrown.
      Parameters:
      item - the item to enchant
      level - the level to use, which is the level in the enchantment table
      allowTreasures - allow treasure enchantments, e.g. mending, if true.
      Returns:
      a new ItemStack containing the result of the Enchantment