From 3de9a6a1b94b1fcbc188aed879e381b937cfe65c Mon Sep 17 00:00:00 2001 From: Sebastian Hartte Date: Sun, 12 Jul 2020 23:30:27 +0200 Subject: Adds convenience methods to convert from Ingredient and Lists of ItemStacks directly to equivalent EntryStacks. --- src/main/java/me/shedaniel/rei/api/EntryStack.java | 35 ++++++++++++++++++---- 1 file changed, 30 insertions(+), 5 deletions(-) (limited to 'src/main/java/me/shedaniel/rei/api/EntryStack.java') 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 create(Collection stacks) { + List result = new ArrayList<>(stacks.size()); + for (ItemStack stack : stacks) { + result.add(create(stack)); + } + return result; + } + + static List create(Ingredient ingredient) { + ItemStack[] matchingStacks = ingredient.getMatchingStacksClient(); + List result = new ArrayList<>(matchingStacks.length); + for (ItemStack matchingStack : matchingStacks) { + result.add(create(matchingStack)); + } + return result; + } + + static List> create(List ingredients) { + List> result = new ArrayList<>(ingredients.size()); + for (Ingredient ingredient : ingredients) { + result.add(create(ingredient)); + } + return result; + } + @ApiStatus.Internal static EntryStack readFromJson(JsonElement jsonElement) { try { -- cgit