RecipeItem.java
package it.fulminazzo.yagl.items;
import it.fulminazzo.yagl.items.fields.ItemFlag;
import it.fulminazzo.yagl.items.recipes.Recipe;
import it.fulminazzo.yagl.wrappers.Enchantment;
import org.jetbrains.annotations.NotNull;
import java.util.Collection;
import java.util.function.Predicate;
/**
* An implementation of {@link Item} that supports a {@link Recipe}.
*/
public interface RecipeItem extends Item, Iterable<Recipe> {
/**
* Sets recipes.
*
* @param recipes the recipes
* @return this recipe item
*/
default RecipeItem setRecipes(final Recipe @NotNull ... recipes) {
return clearRecipes().addRecipes(recipes);
}
/**
* Add recipes.
*
* @param recipes the recipes
* @return this recipe item
*/
RecipeItem addRecipes(final Recipe @NotNull ... recipes);
/**
* Removes all the recipes that match the given {@link Predicate}.
*
* @param predicate the predicate
* @return this recipe item
*/
RecipeItem clearRecipes(final Predicate<Recipe> predicate);
/**
* Removes all the recipes.
*
* @return this recipe item
*/
default RecipeItem clearRecipes() {
return clearRecipes(t -> true);
}
/**
* Register recipes.
*/
void registerRecipes();
/**
* Unregister recipes.
*/
void unregisterRecipes();
@Override
RecipeItem setMaterial(final @NotNull String material);
@Override
RecipeItem setAmount(final int amount);
@Override
RecipeItem setDurability(final int durability);
@Override
RecipeItem setDisplayName(final @NotNull String displayName);
@Override
RecipeItem setCustomModelData(final int customModelData);
@Override
default RecipeItem addLore(final String @NotNull ... lore) {
return (RecipeItem) Item.super.addLore(lore);
}
@Override
default RecipeItem addLore(final @NotNull Collection<String> lore) {
return (RecipeItem) Item.super.addLore(lore);
}
@Override
default RecipeItem removeLore(final String @NotNull ... lore) {
return (RecipeItem) Item.super.removeLore(lore);
}
@Override
default RecipeItem removeLore(final @NotNull Collection<String> lore) {
return (RecipeItem) Item.super.removeLore(lore);
}
@Override
default RecipeItem setLore(final String @NotNull ... lore) {
return (RecipeItem) Item.super.setLore(lore);
}
@Override
default RecipeItem setLore(final @NotNull Collection<String> lore) {
return (RecipeItem) Item.super.setLore(lore);
}
@Override
default RecipeItem addEnchantment(final @NotNull String enchantment, final int level) {
return (RecipeItem) Item.super.addEnchantment(enchantment, level);
}
@Override
default RecipeItem addEnchantments(final String @NotNull ... enchantments) {
return (RecipeItem) Item.super.addEnchantments(enchantments);
}
@Override
default RecipeItem addEnchantments(final Enchantment @NotNull ... enchantments) {
return (RecipeItem) Item.super.addEnchantments(enchantments);
}
@Override
default RecipeItem addEnchantments(final @NotNull Collection<Enchantment> enchantments) {
return (RecipeItem) Item.super.addEnchantments(enchantments);
}
@Override
default RecipeItem removeEnchantment(final @NotNull String enchantment, final int level) {
return (RecipeItem) Item.super.removeEnchantment(enchantment, level);
}
@Override
default RecipeItem removeEnchantments(final String @NotNull ... enchantments) {
return (RecipeItem) Item.super.removeEnchantments(enchantments);
}
@Override
default RecipeItem removeEnchantments(final Enchantment @NotNull ... enchantments) {
return (RecipeItem) Item.super.removeEnchantments(enchantments);
}
@Override
default RecipeItem removeEnchantments(final @NotNull Collection<Enchantment> enchantments) {
return (RecipeItem) Item.super.removeEnchantments(enchantments);
}
@Override
default RecipeItem addItemFlags(final ItemFlag @NotNull ... itemFlags) {
return (RecipeItem) Item.super.addItemFlags(itemFlags);
}
@Override
default RecipeItem addItemFlags(final @NotNull Collection<ItemFlag> itemFlags) {
return (RecipeItem) Item.super.addItemFlags(itemFlags);
}
@Override
default RecipeItem removeItemFlags(final ItemFlag @NotNull ... itemFlags) {
return (RecipeItem) Item.super.removeItemFlags(itemFlags);
}
@Override
default RecipeItem removeItemFlags(final @NotNull Collection<ItemFlag> itemFlags) {
return (RecipeItem) Item.super.removeItemFlags(itemFlags);
}
@Override
RecipeItem setUnbreakable(final boolean unbreakable);
@Override
default RecipeItem copy() {
return Item.super.copy(RecipeItem.class);
}
}