aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/me/shedaniel/rei/gui/renderers/SimpleRecipeRenderer.java
diff options
context:
space:
mode:
authorDanielshe <shekwancheung0528@gmail.com>2019-11-03 19:02:00 +0800
committerDanielshe <shekwancheung0528@gmail.com>2019-11-03 19:02:00 +0800
commitad7f945d6f724d51ee843b334838fda84c6197f2 (patch)
treeb67cd5a1b95826435ef54813e4221ff3fda39212 /src/main/java/me/shedaniel/rei/gui/renderers/SimpleRecipeRenderer.java
parent9f5a9eae9a7863412cc5eb433bf15e5ee71da616 (diff)
downloadRoughlyEnoughItems-ad7f945d6f724d51ee843b334838fda84c6197f2.tar.gz
RoughlyEnoughItems-ad7f945d6f724d51ee843b334838fda84c6197f2.tar.bz2
RoughlyEnoughItems-ad7f945d6f724d51ee843b334838fda84c6197f2.zip
API Changes
Diffstat (limited to 'src/main/java/me/shedaniel/rei/gui/renderers/SimpleRecipeRenderer.java')
-rw-r--r--src/main/java/me/shedaniel/rei/gui/renderers/SimpleRecipeRenderer.java175
1 files changed, 0 insertions, 175 deletions
diff --git a/src/main/java/me/shedaniel/rei/gui/renderers/SimpleRecipeRenderer.java b/src/main/java/me/shedaniel/rei/gui/renderers/SimpleRecipeRenderer.java
deleted file mode 100644
index db124a3b2..000000000
--- a/src/main/java/me/shedaniel/rei/gui/renderers/SimpleRecipeRenderer.java
+++ /dev/null
@@ -1,175 +0,0 @@
-/*
- * Roughly Enough Items by Danielshe.
- * Licensed under the MIT License.
- */
-
-package me.shedaniel.rei.gui.renderers;
-
-import com.google.common.collect.Lists;
-import me.shedaniel.rei.api.EntryStack;
-import me.shedaniel.rei.api.Renderer;
-import me.shedaniel.rei.gui.VillagerRecipeViewingScreen;
-import me.shedaniel.rei.gui.widget.QueuedTooltip;
-import net.minecraft.client.MinecraftClient;
-import net.minecraft.client.render.GuiLighting;
-import net.minecraft.fluid.Fluid;
-import net.minecraft.item.ItemStack;
-import net.minecraft.util.Identifier;
-import net.minecraft.util.Pair;
-import net.minecraft.util.math.MathHelper;
-
-import javax.annotation.Nullable;
-import java.util.Comparator;
-import java.util.List;
-import java.util.Optional;
-import java.util.concurrent.atomic.AtomicInteger;
-import java.util.function.Supplier;
-import java.util.stream.Collectors;
-
-public class SimpleRecipeRenderer extends RecipeRenderer {
-
- private static final Comparator<EntryStack> ENTRY_COMPARATOR = (o1, o2) -> {
- if (o1.getType() == EntryStack.Type.FLUID) {
- if (o2.getType() == EntryStack.Type.ITEM)
- return -1;
- return o1.getFluid().hashCode() - o2.getFluid().hashCode();
- } else if (o2.getType() == EntryStack.Type.FLUID) {
- if (o1.getType() == EntryStack.Type.ITEM)
- return 1;
- return o1.getFluid().hashCode() - o2.getFluid().hashCode();
- }
- ItemStack i1 = o1.getItemStack();
- ItemStack i2 = o2.getItemStack();
- if (i1.getItem() == i2.getItem()) {
- if (i1.getCount() != i2.getCount())
- return i1.getCount() - i2.getCount();
- int compare = Boolean.compare(i1.hasTag(), i2.hasTag());
- if (compare != 0)
- return compare;
- if (i1.getTag().getSize() != i2.getTag().getSize())
- return i1.getTag().getSize() - i2.getTag().getSize();
- return i1.getTag().hashCode() - i2.getTag().hashCode();
- }
- return i1.getItem().hashCode() - i2.getItem().hashCode();
- };
- private static final Identifier CHEST_GUI_TEXTURE = new Identifier("roughlyenoughitems", "textures/gui/recipecontainer.png");
- private List<Renderer> inputRenderer;
- private Renderer outputRenderer;
- private QueuedTooltip lastTooltip;
-
- @Deprecated
- public SimpleRecipeRenderer(Supplier<List<List<ItemStack>>> input, Supplier<List<ItemStack>> output) {
- this(() -> (List<List<EntryStack>>) input.get().stream().map(s -> s.stream().map(EntryStack::create).collect(Collectors.toList())).collect(Collectors.toList()),
- () -> output.get().stream().map(EntryStack::create).collect(Collectors.toList()), 0);
- }
-
- public SimpleRecipeRenderer(Supplier<List<List<EntryStack>>> input, Supplier<List<EntryStack>> output, int forDifferentConstructor) {
- List<Pair<List<EntryStack>, AtomicInteger>> newList = Lists.newArrayList();
- List<Pair<List<EntryStack>, Integer>> a = input.get().stream().map(stacks -> new Pair<>(stacks, stacks.stream().map(EntryStack::getAmount).max(Integer::compareTo).orElse(1))).collect(Collectors.toList());
- for (Pair<List<EntryStack>, Integer> pair : a) {
- Optional<Pair<List<EntryStack>, AtomicInteger>> any = newList.stream().filter(pairr -> equalsList(pair.getLeft(), pairr.getLeft())).findAny();
- if (any.isPresent()) {
- any.get().getRight().addAndGet(pair.getRight());
- } else
- newList.add(new Pair<>(pair.getLeft(), new AtomicInteger(pair.getRight())));
- }
- List<List<EntryStack>> b = Lists.newArrayList();
- for (Pair<List<EntryStack>, AtomicInteger> pair : newList)
- b.add(pair.getLeft().stream().map(stack -> {
- EntryStack s = stack.copy();
- s.setAmount(pair.getRight().get());
- return s;
- }).collect(Collectors.toList()));
- this.inputRenderer = b.stream().filter(stacks -> !stacks.isEmpty()).map(stacks -> fromEntries(stacks)).collect(Collectors.toList());
- this.outputRenderer = fromEntries(output.get().stream().filter(stack -> !stack.isEmpty()).collect(Collectors.toList()));
- }
-
- @Deprecated
- private static Renderer fromEntries(List<EntryStack> entries) {
- boolean isItem = true;
- for (EntryStack entry : entries) {
- if (entry.getType() != EntryStack.Type.ITEM)
- isItem = false;
- }
- if (isItem)
- return Renderer.fromItemStacks(entries.stream().map(EntryStack::getItemStack).collect(Collectors.toList()));
- boolean isFluid = true;
- for (EntryStack entry : entries) {
- if (entry.getType() != EntryStack.Type.FLUID)
- isFluid = false;
- }
-
- if (isFluid) {
- List<Fluid> fluids = entries.stream().map(EntryStack::getFluid).collect(Collectors.toList());
- if (!fluids.isEmpty())
- return Renderer.fromFluid(fluids.get(0));
- }
- return Renderer.empty();
- }
-
- public static boolean equalsList(List<EntryStack> list_1, List<EntryStack> list_2) {
- List<EntryStack> stacks_1 = list_1.stream().distinct().sorted(ENTRY_COMPARATOR).collect(Collectors.toList());
- List<EntryStack> stacks_2 = list_2.stream().distinct().sorted(ENTRY_COMPARATOR).collect(Collectors.toList());
- if (stacks_1.equals(stacks_2))
- return true;
- if (stacks_1.size() != stacks_2.size())
- return false;
- for (int i = 0; i < stacks_1.size(); i++)
- if (!stacks_1.get(i).equalsIgnoreTagsAndAmount(stacks_2.get(i)))
- return false;
- return true;
- }
-
- @Override
- public void render(int x, int y, double mouseX, double mouseY, float delta) {
- lastTooltip = null;
- int xx = x + 4, yy = y + 2;
- int j = 0;
- int itemsPerLine = getItemsPerLine();
- for (Renderer itemStackRenderer : inputRenderer) {
- itemStackRenderer.setBlitOffset(getBlitOffset() + 50);
- if (lastTooltip == null && MinecraftClient.getInstance().currentScreen instanceof VillagerRecipeViewingScreen && mouseX >= xx && mouseX <= xx + 16 && mouseY >= yy && mouseY <= yy + 16) {
- lastTooltip = itemStackRenderer.getQueuedTooltip(delta);
- }
- itemStackRenderer.render(xx + 8, yy + 6, mouseX, mouseY, delta);
- xx += 18;
- j++;
- if (j >= getItemsPerLine() - 2) {
- yy += 18;
- xx = x + 5;
- j = 0;
- }
- }
- xx = x + 5 + 18 * (getItemsPerLine() - 2);
- yy = y + getHeight() / 2 - 8;
- GuiLighting.disable();
- MinecraftClient.getInstance().getTextureManager().bindTexture(CHEST_GUI_TEXTURE);
- blit(xx, yy, 0, 28, 18, 18);
- xx += 18;
- outputRenderer.setBlitOffset(getBlitOffset() + 50);
- outputRenderer.render(xx + 8, yy + 6, mouseX, mouseY, delta);
- if (lastTooltip == null && MinecraftClient.getInstance().currentScreen instanceof VillagerRecipeViewingScreen && mouseX >= xx && mouseX <= xx + 16 && mouseY >= yy && mouseY <= yy + 16) {
- lastTooltip = outputRenderer.getQueuedTooltip(delta);
- }
- }
-
- @Nullable
- @Override
- public QueuedTooltip getQueuedTooltip(float delta) {
- return lastTooltip;
- }
-
- @Override
- public int getHeight() {
- return 4 + getItemsHeight() * 18;
- }
-
- public int getItemsHeight() {
- return MathHelper.ceil(((float) inputRenderer.size()) / (getItemsPerLine() - 2));
- }
-
- public int getItemsPerLine() {
- return MathHelper.floor((getWidth() - 4f) / 18f);
- }
-
-}