aboutsummaryrefslogtreecommitdiff
path: root/RoughlyEnoughItems-runtime/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java
diff options
context:
space:
mode:
Diffstat (limited to 'RoughlyEnoughItems-runtime/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java')
-rw-r--r--RoughlyEnoughItems-runtime/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java44
1 files changed, 26 insertions, 18 deletions
diff --git a/RoughlyEnoughItems-runtime/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java b/RoughlyEnoughItems-runtime/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java
index a437bdfe1..366fc5691 100644
--- a/RoughlyEnoughItems-runtime/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java
+++ b/RoughlyEnoughItems-runtime/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java
@@ -74,10 +74,7 @@ import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Random;
-import java.util.Set;
+import java.util.*;
@ApiStatus.Internal
public class ContainerScreenOverlay extends WidgetWithBounds implements REIOverlay {
@@ -530,15 +527,20 @@ public class ContainerScreenOverlay extends WidgetWithBounds implements REIOverl
}
RenderSystem.color4f(1.0F, 1.0F, 1.0F, 1.0F);
this.renderWidgets(matrices, mouseX, mouseY, delta);
- if (Minecraft.getInstance().screen instanceof AbstractContainerScreen && ConfigObject.getInstance().areClickableRecipeArrowsEnabled()) {
- AbstractContainerScreen<?> containerScreen = (AbstractContainerScreen<?>) Minecraft.getInstance().screen;
+ if (ConfigObject.getInstance().areClickableRecipeArrowsEnabled()) {
+ List<ResourceLocation> categories = null;
+ Screen screen = Minecraft.getInstance().screen;
for (RecipeHelper.ScreenClickArea area : RecipeHelper.getInstance().getScreenClickAreas())
- if (area.getScreenClass().equals(Minecraft.getInstance().screen.getClass()))
- if (area.getRectangle().contains(mouseX - containerScreen.leftPos, mouseY - containerScreen.topPos)) {
- String collect = CollectionUtils.mapAndJoinToString(area.getCategories(), identifier -> RecipeHelper.getInstance().getCategory(identifier).getCategoryName(), ", ");
- TOOLTIPS.add(Tooltip.create(new TranslatableComponent("text.rei.view_recipes_for", collect)));
- break;
+ if (area.getScreenClass().equals(screen.getClass()))
+ if (area.getRectangle().contains(mouseX, mouseY)) {
+ if (categories == null) {
+ categories = new ArrayList<>(Arrays.asList(area.getCategories()));
+ } else categories.addAll(Arrays.asList(area.getCategories()));
}
+ if (categories != null && !categories.isEmpty()) {
+ String collect = CollectionUtils.mapAndJoinToString(categories, identifier -> RecipeHelper.getInstance().getCategory(identifier).getCategoryName(), ", ");
+ Tooltip.create(new TranslatableComponent("text.rei.view_recipes_for", collect)).queue();
+ }
}
}
@@ -767,15 +769,21 @@ public class ContainerScreenOverlay extends WidgetWithBounds implements REIOverl
removeGameModeMenu();
}
}
- if (Minecraft.getInstance().screen instanceof AbstractContainerScreen && ConfigObject.getInstance().areClickableRecipeArrowsEnabled()) {
- AbstractContainerScreen<?> containerScreen = (AbstractContainerScreen<?>) Minecraft.getInstance().screen;
+ if (ConfigObject.getInstance().areClickableRecipeArrowsEnabled()) {
+ List<ResourceLocation> categories = null;
+ Screen screen = Minecraft.getInstance().screen;
for (RecipeHelper.ScreenClickArea area : RecipeHelper.getInstance().getScreenClickAreas())
- if (area.getScreenClass().equals(containerScreen.getClass()))
- if (area.getRectangle().contains(mouseX - containerScreen.leftPos, mouseY - containerScreen.topPos)) {
- ClientHelper.getInstance().executeViewAllRecipesFromCategories(Arrays.asList(area.getCategories()));
- Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.UI_BUTTON_CLICK, 1.0F));
- return true;
+ if (area.getScreenClass().equals(screen.getClass()))
+ if (area.getRectangle().contains(mouseX, mouseY)) {
+ if (categories == null) {
+ categories = new ArrayList<>(Arrays.asList(area.getCategories()));
+ } else categories.addAll(Arrays.asList(area.getCategories()));
}
+ if (categories != null && !categories.isEmpty()) {
+ ClientHelper.getInstance().openView(ClientHelper.ViewSearchBuilder.builder().addCategories(categories).fillPreferredOpenedCategory());
+ Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.UI_BUTTON_CLICK, 1.0F));
+ return true;
+ }
}
for (GuiEventListener element : widgets)
if (element != wrappedSubsetsMenu && element != wrappedWeatherMenu && element != wrappedGameModeMenu && element.mouseClicked(mouseX, mouseY, button)) {