aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java')
-rw-r--r--src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java58
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;