From 41f73b4416d707eabeecb7825ee8a982bb5e530a Mon Sep 17 00:00:00 2001 From: Unknown Date: Sat, 5 Jan 2019 20:36:52 +0800 Subject: Custom Ordering works --- .../java/me/shedaniel/impl/REIRecipeManager.java | 30 +++++++++++++++++++--- 1 file changed, 26 insertions(+), 4 deletions(-) (limited to 'src/main/java/me/shedaniel/impl/REIRecipeManager.java') diff --git a/src/main/java/me/shedaniel/impl/REIRecipeManager.java b/src/main/java/me/shedaniel/impl/REIRecipeManager.java index a7cd44a19..a7196adb4 100755 --- a/src/main/java/me/shedaniel/impl/REIRecipeManager.java +++ b/src/main/java/me/shedaniel/impl/REIRecipeManager.java @@ -7,14 +7,17 @@ import me.shedaniel.api.IRecipe; import me.shedaniel.api.IRecipeManager; import me.shedaniel.gui.RecipeGui; import net.minecraft.client.MinecraftClient; +import net.minecraft.client.gui.Gui; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.recipe.RecipeManager; +import net.minecraft.util.BooleanBiFunction; -import java.util.HashMap; -import java.util.LinkedList; +import java.awt.*; +import java.util.*; import java.util.List; -import java.util.Map; +import java.util.function.BooleanSupplier; +import java.util.function.Function; /** * Created by James on 8/7/2018. @@ -23,12 +26,14 @@ public class REIRecipeManager implements IRecipeManager { private Map> recipeList; private List displayAdapters; public static RecipeManager recipeManager; + private Map, List>> guiExcludeMap; private static REIRecipeManager myInstance; private REIRecipeManager() { recipeList = new HashMap<>(); displayAdapters = new LinkedList<>(); + guiExcludeMap = new HashMap<>(); } public List getDisplayAdapters() { @@ -43,6 +48,22 @@ public class REIRecipeManager implements IRecipeManager { return myInstance; } + public void addExclusionOnGui(Class guiClass, Function... functions) { + List> list = guiExcludeMap.containsKey(guiClass) ? new LinkedList<>(guiExcludeMap.get(guiClass)) : new ArrayList<>(); + list.addAll(Arrays.asList(functions)); + guiExcludeMap.put(guiClass, list); + } + + public boolean canAddSlot(Class guiClass, Rectangle slotRect) { + if (!guiExcludeMap.containsKey(guiClass)) + return true; + for(Function rectangleBooleanFunction : guiExcludeMap.get(guiClass)) { + if (!rectangleBooleanFunction.apply(slotRect)) + return false; + } + return true; + } + @Override public void addRecipe(String id, IRecipe recipe) { if (recipeList.containsKey(id)) { @@ -136,7 +157,8 @@ public class REIRecipeManager implements IRecipeManager { recipeList.clear(); displayAdapters.clear(); REIRecipeManager.instance().recipeManager = manager; - Core.getListeners(IREIPlugin.class).forEach(IREIPlugin::register); + Core.getListeners(IREIPlugin.class).forEach(IREIPlugin::registerCategories); + Core.getListeners(IREIPlugin.class).forEach(IREIPlugin::registerRecipes); } public void displayRecipesFor(ItemStack stack) { -- cgit