diff options
| author | Unknown <shekwancheung0528@gmail.com> | 2019-01-05 20:36:52 +0800 |
|---|---|---|
| committer | Unknown <shekwancheung0528@gmail.com> | 2019-01-05 20:36:52 +0800 |
| commit | 41b33981e802541f1ce273782d8c3fe28579d04a (patch) | |
| tree | f00d81effad5945734e842f85d532de024f11e94 /src/main/java/me/shedaniel/impl/REIRecipeManager.java | |
| parent | 5d5c0b9729283f758003c89e92c879022a78eae9 (diff) | |
| download | RoughlyEnoughItems-41b33981e802541f1ce273782d8c3fe28579d04a.tar.gz RoughlyEnoughItems-41b33981e802541f1ce273782d8c3fe28579d04a.tar.bz2 RoughlyEnoughItems-41b33981e802541f1ce273782d8c3fe28579d04a.zip | |
Custom Ordering works
Diffstat (limited to 'src/main/java/me/shedaniel/impl/REIRecipeManager.java')
| -rwxr-xr-x | src/main/java/me/shedaniel/impl/REIRecipeManager.java | 30 |
1 files changed, 26 insertions, 4 deletions
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<String, List<IRecipe>> recipeList; private List<IDisplayCategory> displayAdapters; public static RecipeManager recipeManager; + private Map<Class<? extends Gui>, List<Function<Rectangle, Boolean>>> guiExcludeMap; private static REIRecipeManager myInstance; private REIRecipeManager() { recipeList = new HashMap<>(); displayAdapters = new LinkedList<>(); + guiExcludeMap = new HashMap<>(); } public List<IDisplayCategory> getDisplayAdapters() { @@ -43,6 +48,22 @@ public class REIRecipeManager implements IRecipeManager { return myInstance; } + public void addExclusionOnGui(Class<? extends Gui> guiClass, Function<Rectangle, Boolean>... functions) { + List<Function<Rectangle, Boolean>> list = guiExcludeMap.containsKey(guiClass) ? new LinkedList<>(guiExcludeMap.get(guiClass)) : new ArrayList<>(); + list.addAll(Arrays.asList(functions)); + guiExcludeMap.put(guiClass, list); + } + + public boolean canAddSlot(Class<? extends Gui> guiClass, Rectangle slotRect) { + if (!guiExcludeMap.containsKey(guiClass)) + return true; + for(Function<Rectangle, Boolean> 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) { |
