package mezz.jei.api.recipe; import mezz.jei.api.gui.IDrawable; import mezz.jei.api.gui.IRecipeLayout; import net.minecraft.client.Minecraft; import javax.annotation.Nonnull; /** * Defines a category of recipe, (i.e. Crafting Table Recipe, Furnace Recipe) * and handles setting up the GUI for its recipe category. */ public interface IRecipeCategory { /** * Returns a unique ID for this recipe category. * Referenced from recipes to identify which recipe category they belong to. */ @Nonnull String getUid(); /** * Returns the localized name for this recipe type. * Drawn at the top of the recipe GUI pages for this category. * Called every frame, so make sure to store it in a field. */ @Nonnull String getTitle(); /** * Returns the drawable background for a single recipe in this category. * Called multiple times per frame, so make sure to store it in a field. */ @Nonnull IDrawable getBackground(); /** * Optionally draw anything else that might be necessary, icons or extra slots. */ void drawExtras(@Nonnull Minecraft minecraft); /** * Optionally draw animations like progress bars. These animations can be disabled in the config. */ void drawAnimations(@Nonnull Minecraft minecraft); /** * Set the IRecipeLayout properties from the RecipeWrapper. */ void setRecipe(@Nonnull IRecipeLayout recipeLayout, @Nonnull IRecipeWrapper recipeWrapper); }