aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/crafting/DefaultCraftingDisplay.java6
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/crafting/DefaultCustomDisplay.java8
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/crafting/DefaultCustomShapedDisplay.java7
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/view/ViewsImpl.java27
4 files changed, 22 insertions, 26 deletions
diff --git a/default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/crafting/DefaultCraftingDisplay.java b/default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/crafting/DefaultCraftingDisplay.java
index 53601861d..a921b82b1 100644
--- a/default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/crafting/DefaultCraftingDisplay.java
+++ b/default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/crafting/DefaultCraftingDisplay.java
@@ -59,7 +59,11 @@ public abstract class DefaultCraftingDisplay<C extends Recipe<?>> extends BasicD
protected Optional<C> recipe;
public DefaultCraftingDisplay(List<EntryIngredient> inputs, List<EntryIngredient> outputs, Optional<C> recipe) {
- super(inputs, outputs, Optional.empty());
+ this(inputs, outputs, recipe.map(Recipe::getId), recipe);
+ }
+
+ public DefaultCraftingDisplay(List<EntryIngredient> inputs, List<EntryIngredient> outputs, Optional<ResourceLocation> location, Optional<C> recipe) {
+ super(inputs, outputs, location);
this.recipe = recipe;
}
diff --git a/default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/crafting/DefaultCustomDisplay.java b/default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/crafting/DefaultCustomDisplay.java
index 6d0676fdb..8f3b35dc8 100644
--- a/default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/crafting/DefaultCustomDisplay.java
+++ b/default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/crafting/DefaultCustomDisplay.java
@@ -38,7 +38,11 @@ public class DefaultCustomDisplay extends DefaultCraftingDisplay<Recipe<?>> {
private int height;
public DefaultCustomDisplay(@Nullable Recipe<?> possibleRecipe, List<EntryIngredient> input, List<EntryIngredient> output) {
- super(input, output, Optional.ofNullable(possibleRecipe));
+ this(null, possibleRecipe, input, output);
+ }
+
+ public DefaultCustomDisplay(@Nullable ResourceLocation location, @Nullable Recipe<?> possibleRecipe, List<EntryIngredient> input, List<EntryIngredient> output) {
+ super(input, output, Optional.ofNullable(location == null && possibleRecipe != null ? possibleRecipe.getId() : location), Optional.ofNullable(possibleRecipe));
BitSet row = new BitSet(3);
BitSet column = new BitSet(3);
for (int i = 0; i < 9; i++)
@@ -56,7 +60,7 @@ public class DefaultCustomDisplay extends DefaultCraftingDisplay<Recipe<?>> {
public static DefaultCustomDisplay simple(List<EntryIngredient> input, List<EntryIngredient> output, Optional<ResourceLocation> location) {
Recipe<?> optionalRecipe = location.flatMap(resourceLocation -> RecipeManagerContext.getInstance().getRecipeManager().byKey(resourceLocation))
.orElse(null);
- return new DefaultCustomDisplay(optionalRecipe, input, output);
+ return new DefaultCustomDisplay(location.orElse(null), optionalRecipe, input, output);
}
@Override
diff --git a/default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/crafting/DefaultCustomShapedDisplay.java b/default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/crafting/DefaultCustomShapedDisplay.java
index 8ef10b757..a8bb9f9b9 100644
--- a/default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/crafting/DefaultCustomShapedDisplay.java
+++ b/default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/crafting/DefaultCustomShapedDisplay.java
@@ -24,6 +24,7 @@
package me.shedaniel.rei.plugin.common.displays.crafting;
import me.shedaniel.rei.api.common.entry.EntryIngredient;
+import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.item.crafting.Recipe;
import org.jetbrains.annotations.Nullable;
@@ -35,7 +36,11 @@ public class DefaultCustomShapedDisplay extends DefaultCraftingDisplay<Recipe<?>
private int height;
public DefaultCustomShapedDisplay(@Nullable Recipe<?> possibleRecipe, List<EntryIngredient> input, List<EntryIngredient> output, int width, int height) {
- super(input, output, Optional.ofNullable(possibleRecipe));
+ this(null, possibleRecipe, input, output, width, height);
+ }
+
+ public DefaultCustomShapedDisplay(@Nullable ResourceLocation location, @Nullable Recipe<?> possibleRecipe, List<EntryIngredient> input, List<EntryIngredient> output, int width, int height) {
+ super(input, output, Optional.ofNullable(location == null && possibleRecipe != null ? possibleRecipe.getId() : location), Optional.ofNullable(possibleRecipe));
this.width = width;
this.height = height;
}
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/view/ViewsImpl.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/view/ViewsImpl.java
index fcfc17807..c07a29072 100644
--- a/runtime/src/main/java/me/shedaniel/rei/impl/client/view/ViewsImpl.java
+++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/view/ViewsImpl.java
@@ -24,7 +24,6 @@
package me.shedaniel.rei.impl.client.view;
import com.google.common.base.Stopwatch;
-import com.google.common.collect.AbstractIterator;
import com.google.common.collect.Iterables;
import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
@@ -107,13 +106,13 @@ public class ViewsImpl implements Views {
if (!recipesForStacks.isEmpty()) {
if (isRecipesFor(recipesForStacks, display)) {
set.add(display);
- break;
+ continue;
}
}
if (!usagesForStacks.isEmpty()) {
if (isUsagesFor(usagesForStacks, display)) {
set.add(display);
- break;
+ continue;
}
}
}
@@ -243,7 +242,7 @@ public class ViewsImpl implements Views {
}
private static boolean checkUsages(List<EntryStack<?>> stacks, Display display, List<EntryIngredient> entries) {
- for (List<? extends EntryStack<?>> results : entries) {
+ for (EntryIngredient results : entries) {
for (EntryStack<?> otherEntry : results) {
for (EntryStack<?> recipesFor : stacks) {
if (EntryStacks.equalsFuzzy(otherEntry, recipesFor)) {
@@ -270,24 +269,8 @@ public class ViewsImpl implements Views {
}
}
- return Iterables.concat(successfulDisplays, applicableDisplays, () -> new AbstractIterator<Display>() {
- Iterator<Display> iterator = displays.iterator();
-
- @Override
- protected Display computeNext() {
- while (iterator.hasNext()) {
- Display next = iterator.next();
-
- if (successfulDisplays.contains(next) || applicableDisplays.contains(next)) {
- continue;
- }
-
- return next;
- }
-
- return endOfData();
- }
- });
+ return Iterables.concat(successfulDisplays, applicableDisplays,
+ Iterables.filter(displays, display -> !successfulDisplays.contains(display) && !applicableDisplays.contains(display)));
}
private static <T extends Display> void generateLiveDisplays(DisplayRegistry displayRegistry, DynamicDisplayGenerator<T> generator, ViewSearchBuilder builder, Consumer<T> displayConsumer) {