aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorSebastian Hartte <sebastian@hartte.de>2020-07-12 23:30:27 +0200
committerSebastian Hartte <sebastian@hartte.de>2020-07-12 23:36:38 +0200
commit3de9a6a1b94b1fcbc188aed879e381b937cfe65c (patch)
tree9ecb8ad8e20786ebf69b547577a744645d71100e /src/main/java
parent627b2524ee1111a020a38928818858cd8f1bd804 (diff)
downloadRoughlyEnoughItems-3de9a6a1b94b1fcbc188aed879e381b937cfe65c.tar.gz
RoughlyEnoughItems-3de9a6a1b94b1fcbc188aed879e381b937cfe65c.tar.bz2
RoughlyEnoughItems-3de9a6a1b94b1fcbc188aed879e381b937cfe65c.zip
Adds convenience methods to convert from Ingredient and Lists of ItemStacks directly to equivalent EntryStacks.
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/me/shedaniel/rei/api/EntryStack.java35
-rw-r--r--src/main/java/me/shedaniel/rei/plugin/campfire/DefaultCampfireDisplay.java8
-rw-r--r--src/main/java/me/shedaniel/rei/plugin/cooking/DefaultCookingDisplay.java2
-rw-r--r--src/main/java/me/shedaniel/rei/plugin/crafting/DefaultShapedDisplay.java8
-rw-r--r--src/main/java/me/shedaniel/rei/plugin/crafting/DefaultShapelessDisplay.java8
-rw-r--r--src/main/java/me/shedaniel/rei/plugin/smithing/DefaultSmithingDisplay.java4
-rw-r--r--src/main/java/me/shedaniel/rei/plugin/stonecutting/DefaultStoneCuttingDisplay.java8
7 files changed, 37 insertions, 36 deletions
diff --git a/src/main/java/me/shedaniel/rei/api/EntryStack.java b/src/main/java/me/shedaniel/rei/api/EntryStack.java
index 3f2c3490d..a963f4274 100644
--- a/src/main/java/me/shedaniel/rei/api/EntryStack.java
+++ b/src/main/java/me/shedaniel/rei/api/EntryStack.java
@@ -32,7 +32,6 @@ import me.shedaniel.rei.api.widgets.Tooltip;
import me.shedaniel.rei.impl.EmptyEntryStack;
import me.shedaniel.rei.impl.FluidEntryStack;
import me.shedaniel.rei.impl.ItemEntryStack;
-import me.shedaniel.rei.utils.CollectionUtils;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.minecraft.client.resource.language.I18n;
@@ -43,15 +42,16 @@ import net.minecraft.item.ItemConvertible;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.nbt.StringNbtReader;
-import net.minecraft.text.LiteralText;
+import net.minecraft.recipe.Ingredient;
import net.minecraft.text.Text;
-import net.minecraft.util.Formatting;
import net.minecraft.util.Identifier;
import net.minecraft.util.math.MathHelper;
import net.minecraft.util.registry.Registry;
import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.Nullable;
+import java.util.ArrayList;
+import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.Optional;
@@ -81,11 +81,36 @@ public interface EntryStack extends TextRepresentable {
static EntryStack create(ItemStack stack) {
return new ItemEntryStack(stack);
}
-
+
static EntryStack create(ItemConvertible item) {
return create(new ItemStack(item));
}
-
+
+ static List<EntryStack> create(Collection<ItemStack> stacks) {
+ List<EntryStack> result = new ArrayList<>(stacks.size());
+ for (ItemStack stack : stacks) {
+ result.add(create(stack));
+ }
+ return result;
+ }
+
+ static List<EntryStack> create(Ingredient ingredient) {
+ ItemStack[] matchingStacks = ingredient.getMatchingStacksClient();
+ List<EntryStack> result = new ArrayList<>(matchingStacks.length);
+ for (ItemStack matchingStack : matchingStacks) {
+ result.add(create(matchingStack));
+ }
+ return result;
+ }
+
+ static List<List<EntryStack>> create(List<Ingredient> ingredients) {
+ List<List<EntryStack>> result = new ArrayList<>(ingredients.size());
+ for (Ingredient ingredient : ingredients) {
+ result.add(create(ingredient));
+ }
+ return result;
+ }
+
@ApiStatus.Internal
static EntryStack readFromJson(JsonElement jsonElement) {
try {
diff --git a/src/main/java/me/shedaniel/rei/plugin/campfire/DefaultCampfireDisplay.java b/src/main/java/me/shedaniel/rei/plugin/campfire/DefaultCampfireDisplay.java
index bb9b54122..9ae044f21 100644
--- a/src/main/java/me/shedaniel/rei/plugin/campfire/DefaultCampfireDisplay.java
+++ b/src/main/java/me/shedaniel/rei/plugin/campfire/DefaultCampfireDisplay.java
@@ -52,13 +52,7 @@ public class DefaultCampfireDisplay implements RecipeDisplay {
}
public DefaultCampfireDisplay(DefaultedList<Ingredient> ingredients, ItemStack output, int cookTime) {
- this.inputs = ingredients.stream().map(i -> {
- List<EntryStack> entries = new ArrayList<>();
- for (ItemStack stack : i.getMatchingStacksClient()) {
- entries.add(EntryStack.create(stack));
- }
- return entries;
- }).collect(Collectors.toList());
+ this.inputs = EntryStack.create(ingredients);
this.output = Collections.singletonList(EntryStack.create(output));
this.cookTime = cookTime;
}
diff --git a/src/main/java/me/shedaniel/rei/plugin/cooking/DefaultCookingDisplay.java b/src/main/java/me/shedaniel/rei/plugin/cooking/DefaultCookingDisplay.java
index 02f5e57eb..5a501d9c9 100644
--- a/src/main/java/me/shedaniel/rei/plugin/cooking/DefaultCookingDisplay.java
+++ b/src/main/java/me/shedaniel/rei/plugin/cooking/DefaultCookingDisplay.java
@@ -56,7 +56,7 @@ public abstract class DefaultCookingDisplay implements TransferRecipeDisplay {
public DefaultCookingDisplay(AbstractCookingRecipe recipe) {
this.recipe = recipe;
- this.input = CollectionUtils.map(recipe.getPreviewInputs(), i -> CollectionUtils.map(i.getMatchingStacksClient(), EntryStack::create));
+ this.input = EntryStack.create(recipe.getPreviewInputs());
this.output = Collections.singletonList(EntryStack.create(recipe.getOutput()));
this.xp = recipe.getExperience();
this.cookTime = recipe.getCookTime();
diff --git a/src/main/java/me/shedaniel/rei/plugin/crafting/DefaultShapedDisplay.java b/src/main/java/me/shedaniel/rei/plugin/crafting/DefaultShapedDisplay.java
index 292a7c3db..2510336ba 100644
--- a/src/main/java/me/shedaniel/rei/plugin/crafting/DefaultShapedDisplay.java
+++ b/src/main/java/me/shedaniel/rei/plugin/crafting/DefaultShapedDisplay.java
@@ -43,13 +43,7 @@ public class DefaultShapedDisplay implements DefaultCraftingDisplay {
public DefaultShapedDisplay(ShapedRecipe recipe) {
this.display = recipe;
- this.input = recipe.getPreviewInputs().stream().map(i -> {
- List<EntryStack> entries = new ArrayList<>();
- for (ItemStack stack : i.getMatchingStacksClient()) {
- entries.add(EntryStack.create(stack));
- }
- return entries;
- }).collect(Collectors.toList());
+ this.input = EntryStack.create(recipe.getPreviewInputs());
this.output = Collections.singletonList(EntryStack.create(recipe.getOutput()));
}
diff --git a/src/main/java/me/shedaniel/rei/plugin/crafting/DefaultShapelessDisplay.java b/src/main/java/me/shedaniel/rei/plugin/crafting/DefaultShapelessDisplay.java
index 32afa8540..eb3c99d85 100644
--- a/src/main/java/me/shedaniel/rei/plugin/crafting/DefaultShapelessDisplay.java
+++ b/src/main/java/me/shedaniel/rei/plugin/crafting/DefaultShapelessDisplay.java
@@ -43,13 +43,7 @@ public class DefaultShapelessDisplay implements DefaultCraftingDisplay {
public DefaultShapelessDisplay(ShapelessRecipe recipe) {
this.display = recipe;
- this.input = recipe.getPreviewInputs().stream().map(i -> {
- List<EntryStack> entries = new ArrayList<>();
- for (ItemStack stack : i.getMatchingStacksClient()) {
- entries.add(EntryStack.create(stack));
- }
- return entries;
- }).collect(Collectors.toList());
+ this.input = EntryStack.create(recipe.getPreviewInputs());
this.output = Collections.singletonList(EntryStack.create(recipe.getOutput()));
}
diff --git a/src/main/java/me/shedaniel/rei/plugin/smithing/DefaultSmithingDisplay.java b/src/main/java/me/shedaniel/rei/plugin/smithing/DefaultSmithingDisplay.java
index 7b7f0d4f5..05b5bbc87 100644
--- a/src/main/java/me/shedaniel/rei/plugin/smithing/DefaultSmithingDisplay.java
+++ b/src/main/java/me/shedaniel/rei/plugin/smithing/DefaultSmithingDisplay.java
@@ -48,8 +48,8 @@ public class DefaultSmithingDisplay implements RecipeDisplay {
public DefaultSmithingDisplay(@NotNull SmithingRecipe recipe) {
this(
Lists.newArrayList(
- CollectionUtils.map(recipe.base.getMatchingStacksClient(), EntryStack::create),
- CollectionUtils.map(recipe.addition.getMatchingStacksClient(), EntryStack::create)
+ EntryStack.create(recipe.base),
+ EntryStack.create(recipe.addition)
),
Collections.singletonList(EntryStack.create(recipe.getOutput())),
recipe.getId()
diff --git a/src/main/java/me/shedaniel/rei/plugin/stonecutting/DefaultStoneCuttingDisplay.java b/src/main/java/me/shedaniel/rei/plugin/stonecutting/DefaultStoneCuttingDisplay.java
index bbc8a31c0..54467ece8 100644
--- a/src/main/java/me/shedaniel/rei/plugin/stonecutting/DefaultStoneCuttingDisplay.java
+++ b/src/main/java/me/shedaniel/rei/plugin/stonecutting/DefaultStoneCuttingDisplay.java
@@ -51,13 +51,7 @@ public class DefaultStoneCuttingDisplay implements RecipeDisplay {
}
public DefaultStoneCuttingDisplay(DefaultedList<Ingredient> ingredients, ItemStack output) {
- this.inputs = ingredients.stream().map(i -> {
- List<EntryStack> entries = new ArrayList<>();
- for (ItemStack stack : i.getMatchingStacksClient()) {
- entries.add(EntryStack.create(stack));
- }
- return entries;
- }).collect(Collectors.toList());
+ this.inputs = EntryStack.create(ingredients);
this.output = Collections.singletonList(EntryStack.create(output));
}