aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/me/shedaniel/rei/gui/widget/ItemSlotWidget.java
diff options
context:
space:
mode:
authorUnknown <shekwancheung0528@gmail.com>2019-01-10 16:33:18 +0800
committerUnknown <shekwancheung0528@gmail.com>2019-01-10 16:33:18 +0800
commit7b6c58c7db26747783aee7aff2eff87f08ecb8c3 (patch)
tree6a0e24aba2b869d18de65dd7dc1dcd8e78d4dcb2 /src/main/java/me/shedaniel/rei/gui/widget/ItemSlotWidget.java
parent1b21d26487636e50d03979acd5ca4a2a07761a25 (diff)
downloadRoughlyEnoughItems-7b6c58c7db26747783aee7aff2eff87f08ecb8c3.tar.gz
RoughlyEnoughItems-7b6c58c7db26747783aee7aff2eff87f08ecb8c3.tar.bz2
RoughlyEnoughItems-7b6c58c7db26747783aee7aff2eff87f08ecb8c3.zip
Basic cheating / deleting
Diffstat (limited to 'src/main/java/me/shedaniel/rei/gui/widget/ItemSlotWidget.java')
-rw-r--r--src/main/java/me/shedaniel/rei/gui/widget/ItemSlotWidget.java101
1 files changed, 101 insertions, 0 deletions
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<ItemStack> 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<ItemStack> 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<IWidget> 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<String> toolTip = getTooltip(itemStack);
+ containerGui.getOverlay().addTooltip(new QueuedTooltip(new Point(mouseX, mouseY), toolTip));
+ }
+ }
+
+ protected List<String> getTooltip(ItemStack itemStack) {
+ final String modString = "§9§o" + ClientHelper.getModFromItemStack(itemStack);
+ MinecraftClient mc = MinecraftClient.getInstance();
+ List<String> 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);
+ }
+
+}