aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/me/shedaniel/impl/REIRecipeManager.java
diff options
context:
space:
mode:
authorUnknown <shekwancheung0528@gmail.com>2019-01-09 23:35:45 +0800
committerUnknown <shekwancheung0528@gmail.com>2019-01-09 23:35:45 +0800
commit1b21d26487636e50d03979acd5ca4a2a07761a25 (patch)
treed7d066b4e7491474f3a962593e97a2d6f0aa2ea2 /src/main/java/me/shedaniel/impl/REIRecipeManager.java
parent77af6b3f548d34bfdafc585847d3d80ec783c7e7 (diff)
downloadRoughlyEnoughItems-1b21d26487636e50d03979acd5ca4a2a07761a25.tar.gz
RoughlyEnoughItems-1b21d26487636e50d03979acd5ca4a2a07761a25.tar.bz2
RoughlyEnoughItems-1b21d26487636e50d03979acd5ca4a2a07761a25.zip
Starting off rewrite
Diffstat (limited to 'src/main/java/me/shedaniel/impl/REIRecipeManager.java')
-rwxr-xr-xsrc/main/java/me/shedaniel/impl/REIRecipeManager.java220
1 files changed, 0 insertions, 220 deletions
diff --git a/src/main/java/me/shedaniel/impl/REIRecipeManager.java b/src/main/java/me/shedaniel/impl/REIRecipeManager.java
deleted file mode 100755
index 9ebfcf792..000000000
--- a/src/main/java/me/shedaniel/impl/REIRecipeManager.java
+++ /dev/null
@@ -1,220 +0,0 @@
-package me.shedaniel.impl;
-
-import me.shedaniel.Core;
-import me.shedaniel.api.IDisplayCategory;
-import me.shedaniel.api.IREIPlugin;
-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.item.Items;
-import net.minecraft.recipe.RecipeManager;
-
-import java.awt.*;
-import java.util.*;
-import java.util.List;
-import java.util.function.Function;
-import java.util.stream.Collectors;
-
-/**
- * Created by James on 8/7/2018.
- */
-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 Map<String, List<IRecipe>> getRecipeList() {
- return recipeList;
- }
-
- public List<IDisplayCategory> getDisplayAdapters() {
- return displayAdapters;
- }
-
- public static REIRecipeManager instance() {
- if (myInstance == null) {
- Core.LOGGER.info("REI: Newing me up.");
- myInstance = new REIRecipeManager();
- }
- 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))
- recipeList.get(id).add(recipe);
- else {
- List<IRecipe> recipes = new LinkedList<>();
- recipeList.put(id, recipes);
- recipes.add(recipe);
- }
- }
-
- @Override
- public void addRecipe(String id, List<? extends IRecipe> recipes) {
- if (recipeList.containsKey(id))
- recipeList.get(id).addAll(recipes);
- else {
- List<IRecipe> newRecipeList = new LinkedList<>();
- recipeList.put(id, newRecipeList);
- newRecipeList.addAll(recipes);
- }
- }
-
- @Override
- public void addDisplayAdapter(IDisplayCategory adapter) {
- displayAdapters.add(adapter);
- }
-
- @Override
- public Map<IDisplayCategory, List<IRecipe>> getRecipesFor(ItemStack stack) {
- Map<IDisplayCategory, List<IRecipe>> categories = new HashMap<>();
- displayAdapters.forEach(f -> categories.put(f, new LinkedList<>()));
- for(List<IRecipe> value : recipeList.values())
- for(IRecipe iRecipe : value)
- for(Object o : iRecipe.getOutput())
- if (o instanceof ItemStack)
- if (ItemStack.areEqualIgnoreTags(stack, (ItemStack) o))
- for(IDisplayCategory iDisplayCategory : categories.keySet())
- if (iDisplayCategory.getId() == iRecipe.getId()) {
- categories.get(iDisplayCategory).add(iRecipe);
- }
- categories.keySet().removeIf(f -> categories.get(f).isEmpty());
- return categories;
- }
-
- public Map<IDisplayCategory, List<IRecipe>> getUsesFor(ItemStack stack) {
- Map<IDisplayCategory, List<IRecipe>> categories = new HashMap<>();
- displayAdapters.forEach(f -> categories.put(f, new LinkedList<>()));
- for(List<IRecipe> value : recipeList.values())
- for(IRecipe iRecipe : value) {
- boolean found = false;
- for(Object o : iRecipe.getInput()) {
- List<ItemStack> input = (List<ItemStack>) o;
- for(ItemStack itemStack : input) {
- if (ItemStack.areEqualIgnoreTags(itemStack, stack)) {
- for(IDisplayCategory iDisplayCategory : categories.keySet())
- if (iDisplayCategory.getId() == iRecipe.getId()) {
- categories.get(iDisplayCategory).add(iRecipe);
- found = true;
- }
- if (found)
- break;
- }
- }
- if (found)
- break;
- }
- }
- categories.keySet().removeIf(f -> categories.get(f).isEmpty());
- return categories;
- }
-
- @Deprecated
- public List<IRecipe> findUsageForItems(List<ItemStack> types) {
- List<IRecipe> recipes = new ArrayList<>();
- types.forEach(item -> {
- Map<IDisplayCategory, List<IRecipe>> itemUsages = getUsesFor(item);
- itemUsages.values().forEach(iRecipes -> recipes.addAll(iRecipes));
- });
- return recipes;
- }
-
- public List<ItemStack> findCraftableByItems(List<ItemStack> types) {
- List<ItemStack> craftables = new ArrayList<>();
- for(List<IRecipe> value : recipeList.values())
- for(IRecipe iRecipe : value) {
- int slotsCraftable = 0;
- List<List<ItemStack>> requiredInput = (List<List<ItemStack>>) iRecipe.getRecipeRequiredInput();
- for(List<ItemStack> slot : requiredInput) {
- if (slot.isEmpty()) {
- slotsCraftable++;
- continue;
- }
- boolean slotDone = false;
- for(ItemStack possibleType : types) {
- for(ItemStack slotPossible : slot)
- if (ItemStack.areEqualIgnoreTags(slotPossible, possibleType)) {
- slotsCraftable++;
- slotDone = true;
- break;
- }
- if (slotDone)
- break;
- }
- }
- if (slotsCraftable == iRecipe.getRecipeRequiredInput().size())
- craftables.addAll((List<ItemStack>) iRecipe.getOutput());
- }
- return craftables.stream().distinct().collect(Collectors.toList());
- }
-
- public List<IDisplayCategory> getAdatapersForOutput(ItemStack stack) {
- return null;
- }
-
- public List<IDisplayCategory> getAdaptersForOutput(Item item) {
- return null;
- }
-
- public void RecipesLoaded(RecipeManager manager) {
- recipeList.clear();
- displayAdapters.clear();
- REIRecipeManager.instance().recipeManager = manager;
- Core.getListeners(IREIPlugin.class).forEach(IREIPlugin::registerCategories);
- Core.getListeners(IREIPlugin.class).forEach(IREIPlugin::registerRecipes);
- Core.getListeners(IREIPlugin.class).forEach(IREIPlugin::registerSpecialGuiExclusion);
- }
-
- public void displayRecipesFor(ItemStack stack) {
- Map<IDisplayCategory, List<IRecipe>> recipes = REIRecipeManager.instance().getRecipesFor(stack);
- if (recipes.isEmpty())
- return;
- RecipeGui gui;
- if (MinecraftClient.getInstance().currentGui instanceof RecipeGui)
- gui = new RecipeGui(null, ((RecipeGui) MinecraftClient.getInstance().currentGui).getPrevScreen(), recipes);
- else gui = new RecipeGui(null, MinecraftClient.getInstance().currentGui, recipes);
- MinecraftClient.getInstance().openGui(gui);
- }
-
- public void displayUsesFor(ItemStack stack) {
- Map<IDisplayCategory, List<IRecipe>> recipes = REIRecipeManager.instance().getUsesFor(stack);
- if (recipes.isEmpty())
- return;
- RecipeGui gui;
- if (MinecraftClient.getInstance().currentGui instanceof RecipeGui)
- gui = new RecipeGui(null, ((RecipeGui) MinecraftClient.getInstance().currentGui).getPrevScreen(), recipes);
- else gui = new RecipeGui(null, MinecraftClient.getInstance().currentGui, recipes);
- MinecraftClient.getInstance().openGui(gui);
- }
-
-}