Skip to content

Commit

Permalink
Close #285 Expose registered recipe transfer handlers through API
Browse files Browse the repository at this point in the history
  • Loading branch information
mezz committed Nov 3, 2016
1 parent 5e72d62 commit e7a67fd
Show file tree
Hide file tree
Showing 7 changed files with 27 additions and 12 deletions.
2 changes: 1 addition & 1 deletion gradle.properties
Expand Up @@ -5,4 +5,4 @@ curse_project_id=238222

version_major=3
version_minor=13
version_patch=1
version_patch=2
6 changes: 1 addition & 5 deletions src/main/java/mezz/jei/RecipeRegistry.java
Expand Up @@ -290,11 +290,7 @@ private <T> void legacy_addRecipeUnchecked(IRecipeWrapper recipeWrapper, T recip

@Override
public List<IRecipeCategory> getRecipeCategories() {
return getRecipeCategories(createFocus(IFocus.Mode.NONE, null));
}

public int getRecipeCategoryCount() {
return recipeCategoriesMap.size();
return new ArrayList<IRecipeCategory>(recipeCategoriesMap.values());
}

@Override
Expand Down
14 changes: 14 additions & 0 deletions src/main/java/mezz/jei/api/IRecipeRegistry.java
Expand Up @@ -8,6 +8,9 @@
import mezz.jei.api.recipe.IRecipeCategory;
import mezz.jei.api.recipe.IRecipeHandler;
import mezz.jei.api.recipe.IRecipeWrapper;
import mezz.jei.api.recipe.transfer.IRecipeTransferHandler;
import mezz.jei.api.recipe.transfer.IRecipeTransferRegistry;
import net.minecraft.inventory.Container;
import net.minecraft.item.ItemStack;
import net.minecraftforge.fluids.FluidStack;

Expand Down Expand Up @@ -72,6 +75,17 @@ public interface IRecipeRegistry {
*/
List<ItemStack> getCraftingItems(IRecipeCategory recipeCategory, IFocus focus);

/**
* Returns the recipe transfer handler for the given container and category, if one exists.
*
* @param container The container to transfer items in.
* @param recipeCategory The type of recipe that the recipe transfer handler acts on.
* @see IRecipeTransferRegistry
* @since JEI 3.13.2
*/
@Nullable
IRecipeTransferHandler getRecipeTransferHandler(Container container, IRecipeCategory recipeCategory);

/**
* Add a new recipe while the game is running.
* This is only for things like gated recipes becoming available, like the ones in Thaumcraft.
Expand Down
Expand Up @@ -13,6 +13,8 @@
* Mods that use a regular slotted inventory can use {@link IRecipeTransferInfo} instead, which is much simpler.
* <p>
* Useful functions for implementing a recipe transfer handler can be found in {@link IRecipeTransferHandlerHelper}.
* <p>
* To register your recipe transfer handler, use {@link IRecipeTransferRegistry#addRecipeTransferHandler(IRecipeTransferHandler, String)}.
*/
public interface IRecipeTransferHandler<C extends Container> {
/**
Expand Down
@@ -1,11 +1,15 @@
package mezz.jei.api.recipe.transfer;

import mezz.jei.api.IModRegistry;
import mezz.jei.api.IRecipeRegistry;
import mezz.jei.api.recipe.IRecipeCategory;
import net.minecraft.inventory.Container;

/**
* Register recipe transfer handlers here to give JEI the information it needs to transfer recipes into the crafting area.
* Get the instance from {@link IModRegistry#getRecipeTransferRegistry()}.
* <p>
* To get registered recipe transfer handlers at runtime, see {@link IRecipeRegistry#getRecipeTransferHandler(Container, IRecipeCategory)}
*/
public interface IRecipeTransferRegistry {
/**
Expand Down
8 changes: 4 additions & 4 deletions src/main/java/mezz/jei/gui/recipes/RecipeGuiLogic.java
Expand Up @@ -7,7 +7,7 @@
import java.util.Stack;

import com.google.common.collect.ImmutableList;
import mezz.jei.RecipeRegistry;
import mezz.jei.api.IRecipeRegistry;
import mezz.jei.api.recipe.IFocus;
import mezz.jei.api.recipe.IRecipeCategory;
import mezz.jei.api.recipe.IRecipeWrapper;
Expand Down Expand Up @@ -39,7 +39,7 @@ public State(IFocus focus, List<IRecipeCategory> recipeCategories, int recipeCat
}

@Nonnull
private final RecipeRegistry recipeRegistry;
private final IRecipeRegistry recipeRegistry;
@Nonnull
private final IRecipeLogicStateListener stateListener;

Expand All @@ -54,7 +54,7 @@ public State(IFocus focus, List<IRecipeCategory> recipeCategories, int recipeCat
*/
private List<IRecipeWrapper> recipes = Collections.emptyList();

public RecipeGuiLogic(RecipeRegistry recipeRegistry, IRecipeLogicStateListener stateListener) {
public RecipeGuiLogic(IRecipeRegistry recipeRegistry, IRecipeLogicStateListener stateListener) {
this.recipeRegistry = recipeRegistry;
this.stateListener = stateListener;
IFocus focus = recipeRegistry.createFocus(IFocus.Mode.NONE, null);
Expand Down Expand Up @@ -293,6 +293,6 @@ public boolean hasMultipleCategories() {

@Override
public boolean hasAllCategories() {
return state.recipeCategories.size() == recipeRegistry.getRecipeCategoryCount();
return state.recipeCategories.size() == recipeRegistry.getRecipeCategories().size();
}
}
3 changes: 1 addition & 2 deletions src/main/java/mezz/jei/gui/recipes/RecipesGui.java
Expand Up @@ -6,7 +6,6 @@
import java.util.ArrayList;
import java.util.List;

import mezz.jei.RecipeRegistry;
import mezz.jei.api.IRecipeRegistry;
import mezz.jei.api.IRecipesGui;
import mezz.jei.api.gui.IDrawable;
Expand Down Expand Up @@ -78,7 +77,7 @@ public class RecipesGui extends GuiScreen implements IRecipesGui, IShowsRecipeFo

private boolean init = false;

public RecipesGui(RecipeRegistry recipeRegistry) {
public RecipesGui(IRecipeRegistry recipeRegistry) {
this.recipeRegistry = recipeRegistry;
this.logic = new RecipeGuiLogic(recipeRegistry, this);
this.recipeCategoryCraftingItems = new RecipeCategoryCraftingItems(recipeRegistry);
Expand Down

0 comments on commit e7a67fd

Please sign in to comment.