aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/me/shedaniel/rei/plugin/crafting
diff options
context:
space:
mode:
authorDanielshe <shekwancheung0528@gmail.com>2019-11-03 14:44:52 +0800
committerDanielshe <shekwancheung0528@gmail.com>2019-11-03 14:44:59 +0800
commit9f5a9eae9a7863412cc5eb433bf15e5ee71da616 (patch)
tree0e6b0b94af061c5e9023b1ff19f339a6c30149be /src/main/java/me/shedaniel/rei/plugin/crafting
parent3e3e25855b9f6df507a7d4c8a07c64b9a502fae2 (diff)
downloadRoughlyEnoughItems-9f5a9eae9a7863412cc5eb433bf15e5ee71da616.tar.gz
RoughlyEnoughItems-9f5a9eae9a7863412cc5eb433bf15e5ee71da616.tar.bz2
RoughlyEnoughItems-9f5a9eae9a7863412cc5eb433bf15e5ee71da616.zip
3.2.1
Diffstat (limited to 'src/main/java/me/shedaniel/rei/plugin/crafting')
-rw-r--r--src/main/java/me/shedaniel/rei/plugin/crafting/DefaultCraftingCategory.java14
-rw-r--r--src/main/java/me/shedaniel/rei/plugin/crafting/DefaultCraftingDisplay.java10
-rw-r--r--src/main/java/me/shedaniel/rei/plugin/crafting/DefaultCustomDisplay.java20
-rw-r--r--src/main/java/me/shedaniel/rei/plugin/crafting/DefaultShapedDisplay.java28
-rw-r--r--src/main/java/me/shedaniel/rei/plugin/crafting/DefaultShapelessDisplay.java28
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;
}