diff options
Diffstat (limited to 'src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java')
| -rw-r--r-- | src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java | 135 |
1 files changed, 104 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 6f47615c0..d48f371b5 100644 --- a/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java +++ b/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java @@ -10,6 +10,7 @@ import me.shedaniel.rei.client.Weather; import me.shedaniel.rei.gui.widget.*; import net.minecraft.client.MinecraftClient; import net.minecraft.client.audio.PositionedSoundInstance; +import net.minecraft.client.font.TextRenderer; import net.minecraft.client.gui.*; import net.minecraft.client.render.GuiLighting; import net.minecraft.client.resource.language.I18n; @@ -23,10 +24,8 @@ import net.minecraft.util.math.MathHelper; import net.minecraft.world.GameMode; import java.awt.*; -import java.util.Collections; -import java.util.LinkedList; +import java.util.*; import java.util.List; -import java.util.Optional; import java.util.stream.Collectors; public class ContainerScreenOverlay extends AbstractParentElement implements Drawable { @@ -108,8 +107,8 @@ public class ContainerScreenOverlay extends AbstractParentElement implements Dra } @Override - public void render(int mouseX, int mouseY, float partialTicks) { - super.render(mouseX, mouseY, partialTicks); + public void render(int mouseX, int mouseY, float delta) { + super.render(mouseX, mouseY, delta); GuiLighting.disable(); if (ClientHelper.isCheating()) fill(getBounds().x, getBounds().y, getBounds().x + 20, getBounds().y + 20, new Color(255, 0, 0, 42).getRGB()); @@ -141,9 +140,9 @@ public class ContainerScreenOverlay extends AbstractParentElement implements Dra } @Override - public void render(int mouseX, int mouseY, float partialTicks) { + public void render(int mouseX, int mouseY, float delta) { text = getGameModeShortText(getCurrentGameMode()); - super.render(mouseX, mouseY, partialTicks); + super.render(mouseX, mouseY, delta); } @Override @@ -162,8 +161,8 @@ public class ContainerScreenOverlay extends AbstractParentElement implements Dra } @Override - public void render(int mouseX, int mouseY, float partialTicks) { - super.render(mouseX, mouseY, partialTicks); + public void render(int mouseX, int mouseY, float delta) { + super.render(mouseX, mouseY, delta); GuiLighting.disable(); MinecraftClient.getInstance().getTextureManager().bindTexture(CHEST_GUI_TEXTURE); GlStateManager.color4f(1.0F, 1.0F, 1.0F, 1.0F); @@ -182,10 +181,10 @@ public class ContainerScreenOverlay extends AbstractParentElement implements Dra } widgets.add(new ClickableLabelWidget(rectangle.x + (rectangle.width / 2), rectangle.y + 10, "") { @Override - public void render(int mouseX, int mouseY, float partialTicks) { + public void render(int mouseX, int mouseY, float delta) { page = MathHelper.clamp(page, 0, getTotalPage()); this.text = String.format("%s/%s", page + 1, getTotalPage() + 1); - super.render(mouseX, mouseY, partialTicks); + super.render(mouseX, mouseY, delta); } @Override @@ -205,16 +204,7 @@ public class ContainerScreenOverlay extends AbstractParentElement implements Dra } }); if (ScreenHelper.searchField == null) - ScreenHelper.searchField = new TextFieldWidget(0, 0, 0, 0) { - @Override - public boolean mouseClicked(double double_1, double double_2, int int_1) { - if (isVisible() && getBounds().contains(double_1, double_2) && int_1 == 1) { - setText(""); - return true; - } - return super.mouseClicked(double_1, double_2, int_1); - } - }; + ScreenHelper.searchField = new SearchFieldWidget(0, 0, 0, 0); ScreenHelper.searchField.setChangedListener(s -> { searchTerm = s; itemListOverlay.updateList(getItemListArea(), page, searchTerm); @@ -229,6 +219,12 @@ public class ContainerScreenOverlay extends AbstractParentElement implements Dra RoughlyEnoughItemsCore.getConfigManager().toggleCraftableOnly(); itemListOverlay.updateList(getItemListArea(), page, searchTerm); } + + @Override + public void render(int mouseX, int mouseY, float delta) { + blitOffset = 600f; + super.render(mouseX, mouseY, delta); + } }); this.itemListOverlay.updateList(getItemListArea(), page, searchTerm); @@ -310,7 +306,7 @@ public class ContainerScreenOverlay extends AbstractParentElement implements Dra } @Override - public void render(int mouseX, int mouseY, float partialTicks) { + public void render(int mouseX, int mouseY, float delta) { List<ItemStack> currentStacks = ClientHelper.getInventoryItemsTypes(); if (getLeft() != lastLeft) init(true); @@ -320,17 +316,66 @@ public class ContainerScreenOverlay extends AbstractParentElement implements Dra } GlStateManager.color4f(1.0F, 1.0F, 1.0F, 1.0F); GuiLighting.disable(); - this.renderWidgets(mouseX, mouseY, partialTicks); - GuiLighting.disable(); + this.renderWidgets(mouseX, mouseY, delta); + } + + public void lateRender(int mouseX, int mouseY, float delta) { + ScreenHelper.searchField.laterRender(mouseX, mouseY, delta); Screen currentScreen = MinecraftClient.getInstance().currentScreen; if (!(currentScreen instanceof RecipeViewingScreen) || !((RecipeViewingScreen) currentScreen).choosePageActivated) - QUEUED_TOOLTIPS.stream().filter(queuedTooltip -> queuedTooltip != null).forEach(queuedTooltip -> { - GlStateManager.translatef(0, 0, 600); - MinecraftClient.getInstance().currentScreen.renderTooltip(queuedTooltip.getText(), queuedTooltip.getLocation().x, queuedTooltip.getLocation().y); - GlStateManager.translatef(0, 0, -600); - }); + QUEUED_TOOLTIPS.stream().filter(queuedTooltip -> queuedTooltip != null).forEach(queuedTooltip -> renderTooltip(queuedTooltip.getText(), queuedTooltip.getLocation().x, queuedTooltip.getLocation().y)); QUEUED_TOOLTIPS.clear(); - GuiLighting.disable(); + } + + public void renderTooltip(List<String> list_1, int int_1, int int_2) { + TextRenderer font = MinecraftClient.getInstance().textRenderer; + Window window = MinecraftClient.getInstance().window; + if (!list_1.isEmpty()) { + GlStateManager.disableRescaleNormal(); + GuiLighting.disable(); + GlStateManager.disableLighting(); + int int_3 = 0; + Iterator var5 = list_1.iterator(); + while (var5.hasNext()) { + String string_1 = (String) var5.next(); + int int_4 = font.getStringWidth(string_1); + if (int_4 > int_3) + int_3 = int_4; + } + int int_5 = int_1 + 12; + int int_6 = int_2 - 12; + int int_8 = 8; + if (list_1.size() > 1) + int_8 += 2 + (list_1.size() - 1) * 10; + if (int_5 + int_3 > window.getScaledWidth()) + int_5 -= 28 + int_3; + if (int_6 + int_8 + 6 > window.getScaledHeight()) + int_6 = window.getScaledHeight() - int_8 - 6; + + this.blitOffset = 1000f; + this.fillGradient(int_5 - 3, int_6 - 4, int_5 + int_3 + 3, int_6 - 3, -267386864, -267386864); + this.fillGradient(int_5 - 3, int_6 + int_8 + 3, int_5 + int_3 + 3, int_6 + int_8 + 4, -267386864, -267386864); + this.fillGradient(int_5 - 3, int_6 - 3, int_5 + int_3 + 3, int_6 + int_8 + 3, -267386864, -267386864); + this.fillGradient(int_5 - 4, int_6 - 3, int_5 - 3, int_6 + int_8 + 3, -267386864, -267386864); + this.fillGradient(int_5 + int_3 + 3, int_6 - 3, int_5 + int_3 + 4, int_6 + int_8 + 3, -267386864, -267386864); + this.fillGradient(int_5 - 3, int_6 - 3 + 1, int_5 - 3 + 1, int_6 + int_8 + 3 - 1, 1347420415, 1344798847); + this.fillGradient(int_5 + int_3 + 2, int_6 - 3 + 1, int_5 + int_3 + 3, int_6 + int_8 + 3 - 1, 1347420415, 1344798847); + this.fillGradient(int_5 - 3, int_6 - 3, int_5 + int_3 + 3, int_6 - 3 + 1, 1347420415, 1347420415); + this.fillGradient(int_5 - 3, int_6 + int_8 + 2, int_5 + int_3 + 3, int_6 + int_8 + 3, 1344798847, 1344798847); + + for(int int_12 = 0; int_12 < list_1.size(); ++int_12) { + GlStateManager.disableDepthTest(); + font.drawWithShadow(list_1.get(int_12), (float) int_5, (float) int_6, -1); + GlStateManager.enableDepthTest(); + if (int_12 == 0) + int_6 += 2; + int_6 += 10; + } + this.blitOffset = 0.0F; + GlStateManager.enableLighting(); + GuiLighting.enable(); + GlStateManager.enableRescaleNormal(); + } } private boolean hasSameListContent(List<ItemStack> list1, List<ItemStack> list2) { @@ -389,7 +434,9 @@ public class ContainerScreenOverlay extends AbstractParentElement implements Dra } private int getTotalPage() { - return MathHelper.ceil(itemListOverlay.getCurrentDisplayed().size() / itemListOverlay.getTotalSlotsPerPage()); + if (itemListOverlay.getTotalSlotsPerPage() > 0) + return MathHelper.ceil(itemListOverlay.getCurrentDisplayed().size() / itemListOverlay.getTotalSlotsPerPage()); + return 0; } @Override @@ -467,4 +514,30 @@ public class ContainerScreenOverlay extends AbstractParentElement implements Dra return false; } + public static class SearchFieldWidget extends TextFieldWidget { + public SearchFieldWidget(int x, int y, int width, int height) { + super(x, y, width, height); + } + + public void laterRender(int int_1, int int_2, float float_1) { + GuiLighting.disable(); + GlStateManager.disableDepthTest(); + super.render(int_1, int_2, float_1); + GlStateManager.enableDepthTest(); + } + + @Override + public boolean mouseClicked(double double_1, double double_2, int int_1) { + if (isVisible() && getBounds().contains(double_1, double_2) && int_1 == 1) { + setText(""); + return true; + } + return super.mouseClicked(double_1, double_2, int_1); + } + + @Override + public void render(int int_1, int int_2, float float_1) { + } + } + } |
