From 7b6c58c7db26747783aee7aff2eff87f08ecb8c3 Mon Sep 17 00:00:00 2001 From: Unknown Date: Thu, 10 Jan 2019 16:33:18 +0800 Subject: Basic cheating / deleting --- .../shedaniel/rei/gui/widget/ItemSlotWidget.java | 101 +++++++++++++++++++++ 1 file changed, 101 insertions(+) create mode 100644 src/main/java/me/shedaniel/rei/gui/widget/ItemSlotWidget.java (limited to 'src/main/java/me/shedaniel/rei/gui/widget/ItemSlotWidget.java') diff --git a/src/main/java/me/shedaniel/rei/gui/widget/ItemSlotWidget.java b/src/main/java/me/shedaniel/rei/gui/widget/ItemSlotWidget.java new file mode 100644 index 000000000..292f5e5f5 --- /dev/null +++ b/src/main/java/me/shedaniel/rei/gui/widget/ItemSlotWidget.java @@ -0,0 +1,101 @@ +package me.shedaniel.rei.gui.widget; + +import com.google.common.collect.Lists; +import me.shedaniel.rei.client.ClientHelper; +import me.shedaniel.rei.listeners.IMixinContainerGui; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.gui.ContainerGui; +import net.minecraft.client.gui.Drawable; +import net.minecraft.client.render.GuiLighting; +import net.minecraft.client.render.item.ItemRenderer; +import net.minecraft.item.ItemStack; +import net.minecraft.util.Identifier; +import net.minecraft.util.math.MathHelper; + +import java.awt.*; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.LinkedList; +import java.util.List; +import java.util.stream.Collectors; + +public class ItemSlotWidget extends Drawable implements HighlightableWidget { + + private static final Identifier RECIPE_GUI = new Identifier("roughlyenoughitems", "textures/gui/recipecontainer.png"); + private List itemList = new LinkedList<>(); + private boolean drawBackground, showToolTips; + private int x, y; + private IMixinContainerGui containerGui; + + public ItemSlotWidget(int x, int y, ItemStack itemStack, boolean drawBackground, boolean showToolTips, IMixinContainerGui containerGui) { + this(x, y, Arrays.asList(itemStack), drawBackground, showToolTips, containerGui); + } + + public ItemSlotWidget(int x, int y, List itemList, boolean drawBackground, boolean showToolTips, IMixinContainerGui containerGui) { + this.itemList = itemList; + this.drawBackground = drawBackground; + this.showToolTips = showToolTips; + this.x = x; + this.y = y; + this.containerGui = containerGui; + } + + public boolean isDrawBackground() { + return drawBackground; + } + + @Override + public List getListeners() { + return new ArrayList<>(); + } + + @Override + public void draw(int mouseX, int mouseY, float partialTicks) { + final ItemStack itemStack = getCurrentStack(); + if (drawBackground) { + MinecraftClient.getInstance().getTextureManager().bindTexture(RECIPE_GUI); + drawTexturedRect(this.x - 1, this.y - 1, 0, 222, 18, 18); + } + if (itemStack.isEmpty()) + return; + GuiLighting.enableForItems(); + ItemRenderer itemRenderer = MinecraftClient.getInstance().getItemRenderer(); + itemRenderer.zOffset = 200.0F; + itemRenderer.renderItemAndGlowInGui(itemStack, x, y); + assert containerGui != null; + if (containerGui.getDraggedStack().isEmpty()) + itemRenderer.renderItemOverlaysInGUIWithText(MinecraftClient.getInstance().fontRenderer, itemStack, x, y - 0, getItemCountOverlay(itemStack)); + else + itemRenderer.renderItemOverlaysInGUIWithText(MinecraftClient.getInstance().fontRenderer, itemStack, x, y - 8, getItemCountOverlay(itemStack)); + itemRenderer.zOffset = 0.0F; + if (isHighlighted(mouseX, mouseY) && showToolTips) { + List toolTip = getTooltip(itemStack); + containerGui.getOverlay().addTooltip(new QueuedTooltip(new Point(mouseX, mouseY), toolTip)); + } + } + + protected List getTooltip(ItemStack itemStack) { + final String modString = "§9§o" + ClientHelper.getModFromItemStack(itemStack); + MinecraftClient mc = MinecraftClient.getInstance(); + List toolTip = Lists.newArrayList(); + if (containerGui != null) + toolTip = containerGui.getContainerGui().getStackTooltip(itemStack).stream().filter(s -> !s.equals(modString)).collect(Collectors.toList()); + else toolTip.add(itemStack.getDisplayName().getFormattedText()); + toolTip.add("§9§o" + ClientHelper.getModFromItemStack(itemStack)); + return toolTip; + } + + protected String getItemCountOverlay(ItemStack currentStack) { + return ""; + } + + protected ItemStack getCurrentStack() { + return itemList.get(MathHelper.clamp((int) (System.currentTimeMillis() / 500) % itemList.size(), 0, itemList.size() - 1)); + } + + @Override + public Rectangle getBounds() { + return new Rectangle(this.x, this.y, 18, 18); + } + +} -- cgit