aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java
diff options
context:
space:
mode:
authorDanielshe <shekwancheung0528@gmail.com>2019-10-10 20:42:31 +0800
committerDanielshe <shekwancheung0528@gmail.com>2019-10-10 20:42:31 +0800
commit675387b674b648f013d7fd95508845eedc0e4647 (patch)
tree196600eceebd667de41ca32fee42df5d611b3027 /src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java
parentbfbd294a9485f54248d7510aefcbcc4828c5ea2d (diff)
downloadRoughlyEnoughItems-675387b674b648f013d7fd95508845eedc0e4647.tar.gz
RoughlyEnoughItems-675387b674b648f013d7fd95508845eedc0e4647.tar.bz2
RoughlyEnoughItems-675387b674b648f013d7fd95508845eedc0e4647.zip
19w41a
Diffstat (limited to 'src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java')
-rw-r--r--src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java72
1 files changed, 41 insertions, 31 deletions
diff --git a/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java b/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java
index 024da33d0..1f44adaa4 100644
--- a/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java
+++ b/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java
@@ -22,14 +22,17 @@ import me.shedaniel.rei.impl.ScreenHelper;
import me.shedaniel.rei.impl.Weather;
import me.shedaniel.rei.listeners.ContainerScreenHooks;
import net.minecraft.client.MinecraftClient;
-import net.minecraft.client.font.TextRenderer;
import net.minecraft.client.gui.Element;
import net.minecraft.client.gui.screen.Screen;
import net.minecraft.client.gui.screen.ingame.AbstractContainerScreen;
import net.minecraft.client.render.GuiLighting;
+import net.minecraft.client.render.LayeredVertexConsumerStorage;
+import net.minecraft.client.render.Tessellator;
+import net.minecraft.client.render.item.ItemRenderer;
import net.minecraft.client.resource.language.I18n;
import net.minecraft.client.sound.PositionedSoundInstance;
import net.minecraft.client.util.Window;
+import net.minecraft.client.util.math.Matrix4f;
import net.minecraft.client.world.ClientWorld;
import net.minecraft.container.Slot;
import net.minecraft.item.ItemStack;
@@ -38,7 +41,9 @@ import net.minecraft.text.TranslatableText;
import net.minecraft.util.ActionResult;
import net.minecraft.util.Identifier;
import net.minecraft.util.math.MathHelper;
+import net.minecraft.util.math.MatrixStack;
import net.minecraft.world.GameMode;
+import org.apache.logging.log4j.util.TriConsumer;
import javax.annotation.Nullable;
import java.util.*;
@@ -53,6 +58,36 @@ public class ContainerScreenOverlay extends Widget {
private static EntryListWidget entryListWidget;
private final List<Widget> widgets = Lists.newLinkedList();
public boolean shouldReInit = false;
+ private int tooltipWidth;
+ private int tooltipHeight;
+ private List<String> tooltipLines;
+ public final TriConsumer<Integer, Integer, Float> renderTooltipCallback = (x, y, aFloat) -> {
+ RenderSystem.disableRescaleNormal();
+ RenderSystem.disableDepthTest();
+ setBlitOffset(1000);
+ this.fillGradient(x - 3, y - 4, x + tooltipWidth + 3, y - 3, -267386864, -267386864);
+ this.fillGradient(x - 3, y + tooltipHeight + 3, x + tooltipWidth + 3, y + tooltipHeight + 4, -267386864, -267386864);
+ this.fillGradient(x - 3, y - 3, x + tooltipWidth + 3, y + tooltipHeight + 3, -267386864, -267386864);
+ this.fillGradient(x - 4, y - 3, x - 3, y + tooltipHeight + 3, -267386864, -267386864);
+ this.fillGradient(x + tooltipWidth + 3, y - 3, x + tooltipWidth + 4, y + tooltipHeight + 3, -267386864, -267386864);
+ this.fillGradient(x - 3, y - 3 + 1, x - 3 + 1, y + tooltipHeight + 3 - 1, 1347420415, 1344798847);
+ this.fillGradient(x + tooltipWidth + 2, y - 3 + 1, x + tooltipWidth + 3, y + tooltipHeight + 3 - 1, 1347420415, 1344798847);
+ this.fillGradient(x - 3, y - 3, x + tooltipWidth + 3, y - 3 + 1, 1347420415, 1347420415);
+ this.fillGradient(x - 3, y + tooltipHeight + 2, x + tooltipWidth + 3, y + tooltipHeight + 3, 1344798847, 1344798847);
+ int currentY = y;
+ MatrixStack matrixStack_1 = new MatrixStack();
+ LayeredVertexConsumerStorage.class_4598 layeredVertexConsumerStorage$class_4598_1 = LayeredVertexConsumerStorage.method_22991(Tessellator.getInstance().getBufferBuilder());
+ matrixStack_1.translate(0.0D, 0.0D, getBlitOffset());
+ Matrix4f matrix4f_1 = matrixStack_1.peek();
+ for (int lineIndex = 0; lineIndex < tooltipLines.size(); lineIndex++) {
+ font.method_22942(tooltipLines.get(lineIndex), (float) x, (float) currentY, -1, true, matrix4f_1, layeredVertexConsumerStorage$class_4598_1, false, 0, 15728880);
+ currentY += lineIndex == 0 ? 12 : 10;
+ }
+ layeredVertexConsumerStorage$class_4598_1.method_22993();
+ setBlitOffset(0);
+ RenderSystem.enableDepthTest();
+ RenderSystem.enableRescaleNormal();
+ };
private Rectangle rectangle;
private Window window;
private CraftableToggleButtonWidget toggleButtonWidget;
@@ -74,7 +109,7 @@ public class ContainerScreenOverlay extends Widget {
this.shouldReInit = false;
//Update Variables
this.children().clear();
- this.window = MinecraftClient.getInstance().method_22683();
+ this.window = MinecraftClient.getInstance().getWindow();
DisplayHelper.DisplayBoundsHandler boundsHandler = RoughlyEnoughItemsCore.getDisplayHelper().getResponsibleBoundsHandler(MinecraftClient.getInstance().currentScreen.getClass());
this.rectangle = RoughlyEnoughItemsCore.getConfigManager().getConfig().isLeftHandSidePanel() ? boundsHandler.getLeftBounds(MinecraftClient.getInstance().currentScreen) : boundsHandler.getRightBounds(MinecraftClient.getInstance().currentScreen);
widgets.add(entryListWidget = new EntryListWidget(page));
@@ -422,35 +457,10 @@ public class ContainerScreenOverlay extends Widget {
public void renderTooltip(List<String> lines, int mouseX, int mouseY) {
if (lines.isEmpty())
return;
- TextRenderer font = MinecraftClient.getInstance().textRenderer;
- int width = lines.stream().map(font::getStringWidth).max(Integer::compareTo).get();
- int height = lines.size() <= 1 ? 8 : lines.size() * 10;
- ScreenHelper.drawHoveringWidget(mouseX, mouseY, (x, y, aFloat) -> {
- RenderSystem.disableRescaleNormal();
- GuiLighting.disable();
- RenderSystem.disableLighting();
- setBlitOffset(1000);
- this.fillGradient(x - 3, y - 4, x + width + 3, y - 3, -267386864, -267386864);
- this.fillGradient(x - 3, y + height + 3, x + width + 3, y + height + 4, -267386864, -267386864);
- this.fillGradient(x - 3, y - 3, x + width + 3, y + height + 3, -267386864, -267386864);
- this.fillGradient(x - 4, y - 3, x - 3, y + height + 3, -267386864, -267386864);
- this.fillGradient(x + width + 3, y - 3, x + width + 4, y + height + 3, -267386864, -267386864);
- this.fillGradient(x - 3, y - 3 + 1, x - 3 + 1, y + height + 3 - 1, 1347420415, 1344798847);
- this.fillGradient(x + width + 2, y - 3 + 1, x + width + 3, y + height + 3 - 1, 1347420415, 1344798847);
- this.fillGradient(x - 3, y - 3, x + width + 3, y - 3 + 1, 1347420415, 1347420415);
- this.fillGradient(x - 3, y + height + 2, x + width + 3, y + height + 3, 1344798847, 1344798847);
- int currentY = y;
- for (int lineIndex = 0; lineIndex < lines.size(); lineIndex++) {
- RenderSystem.disableDepthTest();
- font.drawWithShadow(lines.get(lineIndex), x, currentY, -1);
- RenderSystem.enableDepthTest();
- currentY += lineIndex == 0 ? 12 : 10;
- }
- setBlitOffset(0);
- RenderSystem.enableLighting();
- GuiLighting.enable();
- RenderSystem.enableRescaleNormal();
- }, width, height, 0);
+ tooltipWidth = lines.stream().map(font::getStringWidth).max(Integer::compareTo).get();
+ tooltipHeight = lines.size() <= 1 ? 8 : lines.size() * 10;
+ tooltipLines = lines;
+ ScreenHelper.drawHoveringWidget(mouseX, mouseY, renderTooltipCallback, tooltipWidth, tooltipHeight, 0);
}
private boolean hasSameListContent(List<ItemStack> list1, List<ItemStack> list2) {