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 | 58 |
1 files changed, 31 insertions, 27 deletions
diff --git a/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java b/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java index eb1daa9a4..41700f7c1 100644 --- a/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java +++ b/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java @@ -5,11 +5,12 @@ import com.mojang.blaze3d.platform.GlStateManager; import me.shedaniel.rei.RoughlyEnoughItemsCore; import me.shedaniel.rei.client.ClientHelper; import me.shedaniel.rei.client.GuiHelper; +import me.shedaniel.rei.gui.credits.CreditsScreen; import me.shedaniel.rei.gui.widget.*; import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.ContainerScreen; +import net.minecraft.client.gui.DrawableContainer; import net.minecraft.client.gui.GuiEventListener; -import net.minecraft.client.gui.Screen; import net.minecraft.client.render.GuiLighting; import net.minecraft.client.resource.language.I18n; import net.minecraft.client.util.Window; @@ -22,7 +23,7 @@ import java.util.LinkedList; import java.util.List; import java.util.stream.Collectors; -public class ContainerScreenOverlay extends Screen { +public class ContainerScreenOverlay extends DrawableContainer { private static final List<QueuedTooltip> QUEUED_TOOLTIPS = Lists.newArrayList(); public static String searchTerm = ""; @@ -80,7 +81,13 @@ public class ContainerScreenOverlay extends Screen { ClientHelper.openConfigWindow(GuiHelper.getLastContainerScreen()); } }); - this.widgets.add(new LabelWidget(rectangle.x + (rectangle.width / 2), rectangle.y + 10, "") { + widgets.add(new ButtonWidget(RoughlyEnoughItemsCore.getConfigHelper().isMirrorItemPanel() ? window.getScaledWidth() - 50 : 10, window.getScaledHeight() - 30, 40, 20, I18n.translate("text.rei.credits")) { + @Override + public void onPressed(int button, double mouseX, double mouseY) { + MinecraftClient.getInstance().openScreen(new CreditsScreen(GuiHelper.getLastContainerScreen())); + } + }); + widgets.add(new LabelWidget(rectangle.x + (rectangle.width / 2), rectangle.y + 10, "") { @Override public void draw(int mouseX, int mouseY, float partialTicks) { page = MathHelper.clamp(page, 0, getTotalPage()); @@ -101,7 +108,7 @@ public class ContainerScreenOverlay extends Screen { }; GuiHelper.searchField.setChangedListener(s -> { searchTerm = s; - itemListOverlay.updateList(page, searchTerm); + itemListOverlay.updateList(getItemListArea(), page, searchTerm); }); GuiHelper.searchField.setBounds(getTextFieldArea()); this.widgets.add(GuiHelper.searchField); @@ -111,12 +118,11 @@ public class ContainerScreenOverlay extends Screen { @Override public void onPressed(int button, double mouseX, double mouseY) { RoughlyEnoughItemsCore.getConfigHelper().toggleCraftableOnly(); - itemListOverlay.updateList(page, searchTerm); + itemListOverlay.updateList(getItemListArea(), page, searchTerm); } }); this.itemListOverlay.updateList(getItemListArea(), page, searchTerm); - this.listeners.addAll(widgets); } private Rectangle getTextFieldArea() { @@ -127,7 +133,7 @@ public class ContainerScreenOverlay extends Screen { RecipeViewingWidgetScreen widget = (RecipeViewingWidgetScreen) MinecraftClient.getInstance().currentScreen; return new Rectangle(widget.getBounds().x, window.getScaledHeight() - 22, widget.getBounds().width - widthRemoved, 18); } - return new Rectangle(GuiHelper.getLastMixinContainerScreen().getContainerLeft(), window.getScaledHeight() - 22, GuiHelper.getLastMixinContainerScreen().getContainerWidth() - widthRemoved, 18); + return new Rectangle(GuiHelper.getLastMixinContainerScreen().rei_getContainerLeft(), window.getScaledHeight() - 22, GuiHelper.getLastMixinContainerScreen().rei_getContainerWidth() - widthRemoved, 18); } private Rectangle getCraftableToggleArea() { @@ -149,13 +155,13 @@ public class ContainerScreenOverlay extends Screen { return rectangle; } - public void render(int mouseX, int mouseY, float partialTicks) { + public void drawOverlay(int mouseX, int mouseY, float partialTicks) { List<ItemStack> currentStacks = ClientHelper.getInventoryItemsTypes(); if (getLeft() != lastLeft) onInitialized(); else if (RoughlyEnoughItemsCore.getConfigHelper().craftableOnly() && (!hasSameListContent(new LinkedList<>(GuiHelper.inventoryStacks), currentStacks) || (currentStacks.size() != GuiHelper.inventoryStacks.size()))) { GuiHelper.inventoryStacks = ClientHelper.getInventoryItemsTypes(); - itemListOverlay.updateList(page, searchTerm); + itemListOverlay.updateList(getItemListArea(), page, searchTerm); } GlStateManager.color4f(1.0F, 1.0F, 1.0F, 1.0F); GuiLighting.disable(); @@ -185,7 +191,6 @@ public class ContainerScreenOverlay extends Screen { QUEUED_TOOLTIPS.add(queuedTooltip); } - @Override public void draw(int int_1, int int_2, float float_1) { if (!GuiHelper.isOverlayVisible()) return; @@ -194,14 +199,11 @@ public class ContainerScreenOverlay extends Screen { widget.draw(int_1, int_2, float_1); }); GuiLighting.disable(); - itemListOverlay.draw(int_1, int_2, float_1); - GuiLighting.disable(); - super.draw(int_1, int_2, float_1); } private Rectangle calculateBoundary() { if (!RoughlyEnoughItemsCore.getConfigHelper().isMirrorItemPanel()) { - int startX = GuiHelper.getLastMixinContainerScreen().getContainerLeft() + GuiHelper.getLastMixinContainerScreen().getContainerWidth() + 10; + int startX = GuiHelper.getLastMixinContainerScreen().rei_getContainerLeft() + GuiHelper.getLastMixinContainerScreen().rei_getContainerWidth() + 10; int width = window.getScaledWidth() - startX; if (MinecraftClient.getInstance().currentScreen instanceof RecipeViewingWidgetScreen) { RecipeViewingWidgetScreen widget = (RecipeViewingWidgetScreen) MinecraftClient.getInstance().currentScreen; @@ -210,12 +212,7 @@ public class ContainerScreenOverlay extends Screen { } return new Rectangle(startX, 0, width, window.getScaledHeight()); } - int width = GuiHelper.getLastMixinContainerScreen().getContainerLeft() - 6; - if (MinecraftClient.getInstance().currentScreen instanceof RecipeViewingWidgetScreen) { - RecipeViewingWidgetScreen widget = (RecipeViewingWidgetScreen) MinecraftClient.getInstance().currentScreen; - width = widget.getBounds().x - 6; - } - return new Rectangle(4, 0, width, window.getScaledHeight()); + return new Rectangle(4, 0, getLeft() - 6, window.getScaledHeight()); } private int getLeft() { @@ -223,7 +220,9 @@ public class ContainerScreenOverlay extends Screen { RecipeViewingWidgetScreen widget = (RecipeViewingWidgetScreen) MinecraftClient.getInstance().currentScreen; return widget.getBounds().x; } - return GuiHelper.getLastMixinContainerScreen().getContainerLeft(); + if (MinecraftClient.getInstance().player.getRecipeBook().isGuiOpen()) + return GuiHelper.getLastMixinContainerScreen().rei_getContainerLeft() - 147 - 30; + return GuiHelper.getLastMixinContainerScreen().rei_getContainerLeft(); } private int getTotalPage() { @@ -251,15 +250,15 @@ public class ContainerScreenOverlay extends Screen { @Override public boolean keyPressed(int int_1, int int_2, int int_3) { + for(GuiEventListener listener : widgets) + if (listener.keyPressed(int_1, int_2, int_3)) + return true; if (ClientHelper.HIDE.matchesKey(int_1, int_2)) { GuiHelper.toggleOverlayVisible(); return true; } if (!GuiHelper.isOverlayVisible()) return false; - for(GuiEventListener listener : listeners) - if (listener.keyPressed(int_1, int_2, int_3)) - return true; Point point = ClientHelper.getMouseLocation(); ItemStack itemStack = null; for(IWidget widget : itemListOverlay.getListeners()) @@ -276,8 +275,8 @@ public class ContainerScreenOverlay extends Screen { } } if (itemStack == null && MinecraftClient.getInstance().currentScreen instanceof ContainerScreen) - if (GuiHelper.getLastMixinContainerScreen().getHoveredSlot() != null) - itemStack = GuiHelper.getLastMixinContainerScreen().getHoveredSlot().getStack(); + if (GuiHelper.getLastMixinContainerScreen().rei_getHoveredSlot() != null) + itemStack = GuiHelper.getLastMixinContainerScreen().rei_getHoveredSlot().getStack(); if (itemStack != null && !itemStack.isEmpty()) { if (ClientHelper.RECIPE.matchesKey(int_1, int_2)) return ClientHelper.executeRecipeKeyBind(this, itemStack); @@ -291,13 +290,18 @@ public class ContainerScreenOverlay extends Screen { public boolean charTyped(char char_1, int int_1) { if (!GuiHelper.isOverlayVisible()) return false; - for(GuiEventListener listener : listeners) + for(GuiEventListener listener : getEntries()) if (listener.charTyped(char_1, int_1)) return true; return super.charTyped(char_1, int_1); } @Override + protected List<? extends GuiEventListener> getEntries() { + return widgets; + } + + @Override public boolean mouseClicked(double double_1, double double_2, int int_1) { if (!GuiHelper.isOverlayVisible()) return false; |
