diff options
| author | Danielshe <shekwancheung0528@gmail.com> | 2019-11-03 14:44:52 +0800 |
|---|---|---|
| committer | Danielshe <shekwancheung0528@gmail.com> | 2019-11-03 14:44:59 +0800 |
| commit | 9f5a9eae9a7863412cc5eb433bf15e5ee71da616 (patch) | |
| tree | 0e6b0b94af061c5e9023b1ff19f339a6c30149be /src/main/java/me/shedaniel/rei/plugin/crafting | |
| parent | 3e3e25855b9f6df507a7d4c8a07c64b9a502fae2 (diff) | |
| download | RoughlyEnoughItems-9f5a9eae9a7863412cc5eb433bf15e5ee71da616.tar.gz RoughlyEnoughItems-9f5a9eae9a7863412cc5eb433bf15e5ee71da616.tar.bz2 RoughlyEnoughItems-9f5a9eae9a7863412cc5eb433bf15e5ee71da616.zip | |
3.2.1
Diffstat (limited to 'src/main/java/me/shedaniel/rei/plugin/crafting')
5 files changed, 66 insertions, 34 deletions
diff --git a/src/main/java/me/shedaniel/rei/plugin/crafting/DefaultCraftingCategory.java b/src/main/java/me/shedaniel/rei/plugin/crafting/DefaultCraftingCategory.java index 0837c0ab5..a0c2320e4 100644 --- a/src/main/java/me/shedaniel/rei/plugin/crafting/DefaultCraftingCategory.java +++ b/src/main/java/me/shedaniel/rei/plugin/crafting/DefaultCraftingCategory.java @@ -9,9 +9,11 @@ import com.google.common.collect.Lists; import it.unimi.dsi.fastutil.ints.IntList; import me.shedaniel.math.api.Point; import me.shedaniel.math.api.Rectangle; +import me.shedaniel.rei.api.EntryStack; import com.mojang.blaze3d.systems.RenderSystem; import me.shedaniel.rei.api.Renderer; import me.shedaniel.rei.api.TransferRecipeCategory; +import me.shedaniel.rei.gui.widget.EntryWidget; import me.shedaniel.rei.gui.widget.RecipeBaseWidget; import me.shedaniel.rei.gui.widget.SlotWidget; import me.shedaniel.rei.gui.widget.Widget; @@ -71,20 +73,20 @@ public class DefaultCraftingCategory implements TransferRecipeCategory<DefaultCr blit(startPoint.x, startPoint.y, 0, 0, 116, 54); } })); - List<List<ItemStack>> input = recipeDisplaySupplier.get().getInput(); - List<SlotWidget> slots = Lists.newArrayList(); + List<List<EntryStack>> input = recipeDisplaySupplier.get().getInputEntries(); + List<EntryWidget> slots = Lists.newArrayList(); for (int y = 0; y < 3; y++) for (int x = 0; x < 3; x++) - slots.add(new SlotWidget(startPoint.x + 1 + x * 18, startPoint.y + 1 + y * 18, Lists.newArrayList(), true, true, true)); + slots.add(EntryWidget.create(startPoint.x + 1 + x * 18, startPoint.y + 1 + y * 18)); for (int i = 0; i < input.size(); i++) { if (recipeDisplaySupplier.get() instanceof DefaultShapedDisplay) { if (!input.get(i).isEmpty()) - slots.get(getSlotWithSize(recipeDisplaySupplier.get(), i, 3)).setRenderers(Collections.singletonList(Renderer.fromItemStacks(input.get(i)))); + slots.get(getSlotWithSize(recipeDisplaySupplier.get(), i, 3)).entries(input.get(i)); } else if (!input.get(i).isEmpty()) - slots.get(i).setRenderers(Collections.singletonList(Renderer.fromItemStacks(input.get(i)))); + slots.get(i).entries(input.get(i)); } widgets.addAll(slots); - widgets.add(new SlotWidget(startPoint.x + 95, startPoint.y + 19, Renderer.fromItemStacks(recipeDisplaySupplier.get().getOutput()), false, true, true)); + widgets.add(EntryWidget.create(startPoint.x + 95, startPoint.y + 19).entries(recipeDisplaySupplier.get().getOutputEntries()).noBackground()); return widgets; } diff --git a/src/main/java/me/shedaniel/rei/plugin/crafting/DefaultCraftingDisplay.java b/src/main/java/me/shedaniel/rei/plugin/crafting/DefaultCraftingDisplay.java index 48601433c..b341beba5 100644 --- a/src/main/java/me/shedaniel/rei/plugin/crafting/DefaultCraftingDisplay.java +++ b/src/main/java/me/shedaniel/rei/plugin/crafting/DefaultCraftingDisplay.java @@ -6,11 +6,11 @@ package me.shedaniel.rei.plugin.crafting; import com.google.common.collect.Lists; +import me.shedaniel.rei.api.EntryStack; import me.shedaniel.rei.api.TransferRecipeDisplay; import me.shedaniel.rei.plugin.DefaultPlugin; import me.shedaniel.rei.server.ContainerInfo; import net.minecraft.container.Container; -import net.minecraft.item.ItemStack; import net.minecraft.recipe.Recipe; import net.minecraft.util.Identifier; @@ -37,13 +37,13 @@ public interface DefaultCraftingDisplay extends TransferRecipeDisplay { Optional<Recipe<?>> getOptionalRecipe(); @Override - default List<List<ItemStack>> getOrganisedInput(ContainerInfo<Container> containerInfo, Container container) { - List<List<ItemStack>> list = Lists.newArrayListWithCapacity(containerInfo.getCraftingWidth(container) * containerInfo.getCraftingHeight(container)); + default List<List<EntryStack>> getOrganisedInputEntries(ContainerInfo<Container> containerInfo, Container container) { + List<List<EntryStack>> list = Lists.newArrayListWithCapacity(containerInfo.getCraftingWidth(container) * containerInfo.getCraftingHeight(container)); for (int i = 0; i < containerInfo.getCraftingWidth(container) * containerInfo.getCraftingHeight(container); i++) { list.add(Lists.newArrayList()); } - for (int i = 0; i < getInput().size(); i++) { - List<ItemStack> stacks = getInput().get(i); + for (int i = 0; i < getInputEntries().size(); i++) { + List<EntryStack> stacks = getInputEntries().get(i); list.set(DefaultCraftingCategory.getSlotWithSize(this, i, containerInfo.getCraftingWidth(container)), stacks); } return list; diff --git a/src/main/java/me/shedaniel/rei/plugin/crafting/DefaultCustomDisplay.java b/src/main/java/me/shedaniel/rei/plugin/crafting/DefaultCustomDisplay.java index 756b1afe1..ef6b017ae 100644 --- a/src/main/java/me/shedaniel/rei/plugin/crafting/DefaultCustomDisplay.java +++ b/src/main/java/me/shedaniel/rei/plugin/crafting/DefaultCustomDisplay.java @@ -6,6 +6,8 @@ package me.shedaniel.rei.plugin.crafting; import com.google.common.collect.Lists; +import me.shedaniel.rei.api.EntryStack; +import me.shedaniel.rei.utils.CollectionUtils; import net.minecraft.item.ItemStack; import net.minecraft.recipe.Recipe; import net.minecraft.util.Identifier; @@ -15,20 +17,24 @@ import java.util.Optional; public class DefaultCustomDisplay implements DefaultCraftingDisplay { - private List<List<ItemStack>> input; - private List<ItemStack> output; + private List<List<EntryStack>> input; + private List<EntryStack> output; private Recipe<?> possibleRecipe; private int width, height; public DefaultCustomDisplay(List<List<ItemStack>> input, List<ItemStack> output, Recipe<?> possibleRecipe) { + this(possibleRecipe, CollectionUtils.map(input, i -> CollectionUtils.map(i, EntryStack::create)), CollectionUtils.map(output, EntryStack::create)); + } + + public DefaultCustomDisplay(Recipe<?> possibleRecipe, List<List<EntryStack>> input, List<EntryStack> output) { this.input = input; this.output = output; this.possibleRecipe = possibleRecipe; List<Boolean> row = Lists.newArrayList(false, false, false); List<Boolean> column = Lists.newArrayList(false, false, false); for (int i = 0; i < 9; i++) - if (i < input.size()) { - List<ItemStack> stacks = input.get(i); + if (i < this.input.size()) { + List<EntryStack> stacks = this.input.get(i); if (stacks.stream().filter(stack -> !stack.isEmpty()).count() > 0) { row.set((i - (i % 3)) / 3, true); column.set(i % 3, true); @@ -52,17 +58,17 @@ public class DefaultCustomDisplay implements DefaultCraftingDisplay { } @Override - public List<List<ItemStack>> getInput() { + public List<List<EntryStack>> getInputEntries() { return input; } @Override - public List<ItemStack> getOutput() { + public List<EntryStack> getOutputEntries() { return output; } @Override - public List<List<ItemStack>> getRequiredItems() { + public List<List<EntryStack>> getRequiredEntries() { return input; } 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 f82a858f5..c14b18e53 100644 --- a/src/main/java/me/shedaniel/rei/plugin/crafting/DefaultShapedDisplay.java +++ b/src/main/java/me/shedaniel/rei/plugin/crafting/DefaultShapedDisplay.java @@ -5,12 +5,14 @@ package me.shedaniel.rei.plugin.crafting; +import me.shedaniel.rei.api.EntryStack; import net.minecraft.item.ItemStack; +import net.minecraft.item.PotionItem; import net.minecraft.recipe.Recipe; import net.minecraft.recipe.ShapedRecipe; import net.minecraft.util.Identifier; -import java.util.Arrays; +import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Optional; @@ -19,13 +21,23 @@ import java.util.stream.Collectors; public class DefaultShapedDisplay implements DefaultCraftingDisplay { private ShapedRecipe display; - private List<List<ItemStack>> input; - private List<ItemStack> output; + private List<List<EntryStack>> input; + private List<EntryStack> output; public DefaultShapedDisplay(ShapedRecipe recipe) { this.display = recipe; - this.input = recipe.getPreviewInputs().stream().map(i -> Arrays.asList(i.getMatchingStacksClient())).collect(Collectors.toList()); - this.output = Collections.singletonList(recipe.getOutput()); + this.input = recipe.getPreviewInputs().stream().map(i -> { + List<EntryStack> entries = new ArrayList<>(); + for (ItemStack stack : i.getStackArray()) { + if (stack.getItem() instanceof PotionItem) + entries.add(EntryStack.create(stack).setting(EntryStack.Settings.CHECK_TAGS, EntryStack.Settings.TRUE)); + else entries.add(EntryStack.create(stack)); + } + return entries; + }).collect(Collectors.toList()); + if (recipe.getOutput().getItem() instanceof PotionItem) + this.output = Collections.singletonList(EntryStack.create(recipe.getOutput()).setting(EntryStack.Settings.CHECK_TAGS, EntryStack.Settings.TRUE)); + else this.output = Collections.singletonList(EntryStack.create(recipe.getOutput())); } @Override @@ -34,17 +46,17 @@ public class DefaultShapedDisplay implements DefaultCraftingDisplay { } @Override - public List<List<ItemStack>> getInput() { + public List<List<EntryStack>> getInputEntries() { return input; } @Override - public List<ItemStack> getOutput() { + public List<EntryStack> getOutputEntries() { return output; } @Override - public List<List<ItemStack>> getRequiredItems() { + public List<List<EntryStack>> getRequiredEntries() { return input; } 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 29d0c790f..79b2b92ab 100644 --- a/src/main/java/me/shedaniel/rei/plugin/crafting/DefaultShapelessDisplay.java +++ b/src/main/java/me/shedaniel/rei/plugin/crafting/DefaultShapelessDisplay.java @@ -5,12 +5,14 @@ package me.shedaniel.rei.plugin.crafting; +import me.shedaniel.rei.api.EntryStack; import net.minecraft.item.ItemStack; +import net.minecraft.item.PotionItem; import net.minecraft.recipe.Recipe; import net.minecraft.recipe.ShapelessRecipe; import net.minecraft.util.Identifier; -import java.util.Arrays; +import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Optional; @@ -19,13 +21,23 @@ import java.util.stream.Collectors; public class DefaultShapelessDisplay implements DefaultCraftingDisplay { private ShapelessRecipe display; - private List<List<ItemStack>> input; - private List<ItemStack> output; + private List<List<EntryStack>> input; + private List<EntryStack> output; public DefaultShapelessDisplay(ShapelessRecipe recipe) { this.display = recipe; - this.input = recipe.getPreviewInputs().stream().map(i -> Arrays.asList(i.getMatchingStacksClient())).collect(Collectors.toList()); - this.output = Collections.singletonList(recipe.getOutput()); + this.input = recipe.getPreviewInputs().stream().map(i -> { + List<EntryStack> entries = new ArrayList<>(); + for (ItemStack stack : i.getStackArray()) { + if (stack.getItem() instanceof PotionItem) + entries.add(EntryStack.create(stack).setting(EntryStack.Settings.CHECK_TAGS, EntryStack.Settings.TRUE)); + else entries.add(EntryStack.create(stack)); + } + return entries; + }).collect(Collectors.toList()); + if (recipe.getOutput().getItem() instanceof PotionItem) + this.output = Collections.singletonList(EntryStack.create(recipe.getOutput()).setting(EntryStack.Settings.CHECK_TAGS, EntryStack.Settings.TRUE)); + else this.output = Collections.singletonList(EntryStack.create(recipe.getOutput())); } @Override @@ -39,17 +51,17 @@ public class DefaultShapelessDisplay implements DefaultCraftingDisplay { } @Override - public List<List<ItemStack>> getInput() { + public List<List<EntryStack>> getInputEntries() { return input; } @Override - public List<ItemStack> getOutput() { + public List<EntryStack> getOutputEntries() { return output; } @Override - public List<List<ItemStack>> getRequiredItems() { + public List<List<EntryStack>> getRequiredEntries() { return input; } |
