aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/me/shedaniel/impl
diff options
context:
space:
mode:
authorUnknown <shekwancheung0528@gmail.com>2019-01-08 18:23:00 +0800
committerUnknown <shekwancheung0528@gmail.com>2019-01-08 18:23:00 +0800
commit72e1653cbb38282f8dce59a00fb381e18bfc795d (patch)
tree468a1d03c3a7295b43f28e71b84856a512e72b3f /src/main/java/me/shedaniel/impl
parent6d5101aad169bc5d4d8bcd638aee0d4ce71c120a (diff)
downloadRoughlyEnoughItems-72e1653cbb38282f8dce59a00fb381e18bfc795d.tar.gz
RoughlyEnoughItems-72e1653cbb38282f8dce59a00fb381e18bfc795d.tar.bz2
RoughlyEnoughItems-72e1653cbb38282f8dce59a00fb381e18bfc795d.zip
Craftable Only WIP
Diffstat (limited to 'src/main/java/me/shedaniel/impl')
-rwxr-xr-xsrc/main/java/me/shedaniel/impl/REIRecipeManager.java56
1 files changed, 29 insertions, 27 deletions
diff --git a/src/main/java/me/shedaniel/impl/REIRecipeManager.java b/src/main/java/me/shedaniel/impl/REIRecipeManager.java
index 657187da8..fbecbd6ac 100755
--- a/src/main/java/me/shedaniel/impl/REIRecipeManager.java
+++ b/src/main/java/me/shedaniel/impl/REIRecipeManager.java
@@ -21,6 +21,7 @@ import java.util.function.Function;
* 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;
@@ -34,6 +35,10 @@ public class REIRecipeManager implements IRecipeManager {
guiExcludeMap = new HashMap<>();
}
+ public Map<String, List<IRecipe>> getRecipeList() {
+ return recipeList;
+ }
+
public List<IDisplayCategory> getDisplayAdapters() {
return displayAdapters;
}
@@ -55,18 +60,17 @@ public class REIRecipeManager implements IRecipeManager {
public boolean canAddSlot(Class<? extends Gui> guiClass, Rectangle slotRect) {
if (!guiExcludeMap.containsKey(guiClass))
return true;
- for(Function<Rectangle, Boolean> rectangleBooleanFunction : guiExcludeMap.get(guiClass)) {
+ 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)) {
+ if (recipeList.containsKey(id))
recipeList.get(id).add(recipe);
- } else {
+ else {
List<IRecipe> recipes = new LinkedList<>();
recipeList.put(id, recipes);
recipes.add(recipe);
@@ -75,9 +79,9 @@ public class REIRecipeManager implements IRecipeManager {
@Override
public void addRecipe(String id, List<? extends IRecipe> recipes) {
- if (recipeList.containsKey(id)) {
+ if (recipeList.containsKey(id))
recipeList.get(id).addAll(recipes);
- } else {
+ else {
List<IRecipe> newRecipeList = new LinkedList<>();
recipeList.put(id, newRecipeList);
newRecipeList.addAll(recipes);
@@ -93,21 +97,15 @@ public class REIRecipeManager implements IRecipeManager {
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()) {
+ 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;
}
@@ -115,20 +113,18 @@ public class REIRecipeManager implements IRecipeManager {
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(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()) {
+ for(IDisplayCategory iDisplayCategory : categories.keySet())
if (iDisplayCategory.getId() == iRecipe.getId()) {
categories.get(iDisplayCategory).add(iRecipe);
found = true;
}
- }
if (found)
break;
}
@@ -137,11 +133,18 @@ public class REIRecipeManager implements IRecipeManager {
break;
}
}
- }
categories.keySet().removeIf(f -> categories.get(f).isEmpty());
return categories;
}
+ 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<IDisplayCategory> getAdatapersForOutput(ItemStack stack) {
return null;
@@ -166,8 +169,7 @@ public class REIRecipeManager implements IRecipeManager {
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);
+ else gui = new RecipeGui(null, MinecraftClient.getInstance().currentGui, recipes);
MinecraftClient.getInstance().openGui(gui);
}
@@ -178,8 +180,8 @@ public class REIRecipeManager implements IRecipeManager {
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);
+ else gui = new RecipeGui(null, MinecraftClient.getInstance().currentGui, recipes);
MinecraftClient.getInstance().openGui(gui);
}
+
}