aboutsummaryrefslogtreecommitdiff
path: root/runtime/src/main/java
diff options
context:
space:
mode:
authorshedaniel <daniel@shedaniel.me>2022-08-26 16:48:42 +0900
committershedaniel <daniel@shedaniel.me>2022-08-26 21:17:48 +0900
commita6900532610247cae49f1c782442d07d8f7b1d2d (patch)
tree5b01e2e8a84f5fc5254b9613b15ec1ef84961133 /runtime/src/main/java
parentd3bfd79800aacfde6617d5430ead5fdda0a506fe (diff)
downloadRoughlyEnoughItems-a6900532610247cae49f1c782442d07d8f7b1d2d.tar.gz
RoughlyEnoughItems-a6900532610247cae49f1c782442d07d8f7b1d2d.tar.bz2
RoughlyEnoughItems-a6900532610247cae49f1c782442d07d8f7b1d2d.zip
It compiles now
Diffstat (limited to 'runtime/src/main/java')
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCoreClient.java9
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/REIRuntimeImpl.java5
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/ScreenOverlayImpl.java486
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/changelog/ChangelogLoader.java85
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/changelog/JParseDown.java30
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/changelog/JParseDownToMinecraft.java18
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/dragging/CurrentDraggingStack.java4
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/AbstractScreenOverlay.java345
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/InternalOverlayBounds.java51
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/AbstractDisplayViewingScreen.java49
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/CompositeDisplayViewingScreen.java8
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/DefaultDisplayViewingScreen.java44
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/AutoCraftingButtonWidget.java29
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/AutoCraftingEvaluator.java196
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/CraftableFilterButtonWidget.java7
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/DefaultDisplayChoosePageWidget.java193
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/DisplayedEntryWidget.java95
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/DraggableWidget.java104
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/EntryWidget.java515
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/entrylist/EntryListStackEntry.java151
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/entrylist/EntryListWidget.java37
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/entrylist/PaginatedEntryListWidget.java78
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/entrylist/ScrolledEntryListWidget.java40
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/favorites/history/DisplayEntry.java28
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/favorites/panel/rows/FavoritesPanelEntriesRow.java66
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/region/EntryStacksRegionWidget.java29
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/region/RealRegionEntry.java13
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/region/RegionEntryWidget.java39
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/search/DelegateTextField.java10
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/search/OverlaySearchField.java23
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/common/util/Weather.java61
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/plugin/client/runtime/DefaultClientRuntimePlugin.java2
32 files changed, 926 insertions, 1924 deletions
diff --git a/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCoreClient.java b/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCoreClient.java
index 2c8abbdb7..435bdc722 100644
--- a/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCoreClient.java
+++ b/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCoreClient.java
@@ -51,6 +51,7 @@ import me.shedaniel.rei.api.common.util.EntryStacks;
import me.shedaniel.rei.api.common.util.ImmutableTextComponent;
import me.shedaniel.rei.impl.client.ClientInternals;
import me.shedaniel.rei.impl.client.REIRuntimeImpl;
+import me.shedaniel.rei.impl.client.gui.InternalCursorState;
import me.shedaniel.rei.impl.client.gui.ScreenOverlayImpl;
import me.shedaniel.rei.impl.client.gui.widget.CatchingExceptionUtils;
import me.shedaniel.rei.impl.client.gui.widget.TooltipImpl;
@@ -94,8 +95,6 @@ import java.util.stream.Stream;
@Environment(EnvType.CLIENT)
public class RoughlyEnoughItemsCoreClient {
- public static boolean isLeftMousePressed = false;
-
public static void attachClientInternals() {
CatchingExceptionUtils.attach();
ClientInternals.attachInstance((Function<CompoundTag, DataResult<FavoriteEntry>>) (object) -> {
@@ -260,7 +259,8 @@ public class RoughlyEnoughItemsCoreClient {
}
});
ClientScreenInputEvent.MOUSE_CLICKED_PRE.register((minecraftClient, screen, mouseX, mouseY, button) -> {
- isLeftMousePressed = true;
+ if (button == 0) InternalCursorState.isLeftMousePressed = true;
+ if (button == 1) InternalCursorState.isRightMousePressed = true;
if (shouldReturn(screen) || screen instanceof DisplayScreen)
return EventResult.pass();
resetFocused(screen);
@@ -274,7 +274,8 @@ public class RoughlyEnoughItemsCoreClient {
return EventResult.pass();
});
ClientScreenInputEvent.MOUSE_RELEASED_PRE.register((minecraftClient, screen, mouseX, mouseY, button) -> {
- isLeftMousePressed = false;
+ if (button == 0) InternalCursorState.isLeftMousePressed = false;
+ if (button == 1) InternalCursorState.isRightMousePressed = false;
if (shouldReturn(screen) || screen instanceof DisplayScreen)
return EventResult.pass();
resetFocused(screen);
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/REIRuntimeImpl.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/REIRuntimeImpl.java
index 5cff0c22d..88f2d8bdd 100644
--- a/runtime/src/main/java/me/shedaniel/rei/impl/client/REIRuntimeImpl.java
+++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/REIRuntimeImpl.java
@@ -48,6 +48,7 @@ import me.shedaniel.rei.impl.client.gui.TooltipQueue;
import me.shedaniel.rei.impl.client.gui.hints.HintProvider;
import me.shedaniel.rei.impl.client.gui.widget.CachedEntryListRender;
import me.shedaniel.rei.impl.client.gui.widget.search.OverlaySearchField;
+import me.shedaniel.rei.impl.client.provider.OverlayTicker;
import me.shedaniel.rei.impl.common.Internals;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
@@ -274,7 +275,9 @@ public class REIRuntimeImpl implements REIRuntime {
ClientTickEvent.CLIENT_POST.register(minecraft -> {
if (isOverlayVisible() && REIRuntime.getInstance().getOverlay().isPresent()) {
REIRuntime.getInstance().getSearchTextField().tick();
- ScreenOverlayImpl.getInstance().tick();
+ for (OverlayTicker ticker : ClientInternals.getOverlayTickers()) {
+ ticker.tick();
+ }
}
});
}
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/ScreenOverlayImpl.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/ScreenOverlayImpl.java
index 3f8fb9be9..1943ad379 100644
--- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/ScreenOverlayImpl.java
+++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/ScreenOverlayImpl.java
@@ -23,37 +23,17 @@
package me.shedaniel.rei.impl.client.gui;
-import com.google.common.collect.Lists;
import com.mojang.blaze3d.platform.Window;
-import com.mojang.blaze3d.systems.RenderSystem;
-import com.mojang.blaze3d.vertex.PoseStack;
-import me.shedaniel.math.Point;
import me.shedaniel.math.Rectangle;
-import me.shedaniel.math.impl.PointHelper;
import me.shedaniel.rei.api.client.REIRuntime;
import me.shedaniel.rei.api.client.config.ConfigObject;
-import me.shedaniel.rei.api.client.favorites.FavoriteEntry;
-import me.shedaniel.rei.api.client.gui.config.DisplayPanelLocation;
import me.shedaniel.rei.api.client.gui.config.SearchFieldLocation;
-import me.shedaniel.rei.api.client.gui.drag.DraggingContext;
-import me.shedaniel.rei.api.client.gui.drag.component.DraggableComponentProvider;
-import me.shedaniel.rei.api.client.gui.drag.component.DraggableComponentVisitor;
import me.shedaniel.rei.api.client.gui.widgets.TextField;
-import me.shedaniel.rei.api.client.gui.widgets.Tooltip;
-import me.shedaniel.rei.api.client.gui.widgets.Widget;
import me.shedaniel.rei.api.client.overlay.OverlayListWidget;
-import me.shedaniel.rei.api.client.overlay.ScreenOverlay;
-import me.shedaniel.rei.api.client.registry.screen.ClickArea;
-import me.shedaniel.rei.api.client.registry.screen.OverlayDecider;
import me.shedaniel.rei.api.client.registry.screen.ScreenRegistry;
-import me.shedaniel.rei.api.client.view.ViewSearchBuilder;
-import me.shedaniel.rei.api.common.entry.EntryStack;
-import me.shedaniel.rei.api.common.plugins.PluginManager;
-import me.shedaniel.rei.impl.client.gui.craftable.CraftableFilter;
-import me.shedaniel.rei.impl.client.gui.dragging.CurrentDraggingStack;
-import me.shedaniel.rei.impl.client.gui.menu.MenuAccess;
-import me.shedaniel.rei.impl.client.gui.menu.MenuAccessImpl;
-import me.shedaniel.rei.impl.client.gui.widget.*;
+import me.shedaniel.rei.impl.client.gui.overlay.AbstractScreenOverlay;
+import me.shedaniel.rei.impl.client.gui.widget.ConfigButtonWidget;
+import me.shedaniel.rei.impl.client.gui.widget.CraftableFilterButtonWidget;
import me.shedaniel.rei.impl.client.gui.widget.entrylist.EntryListWidget;
import me.shedaniel.rei.impl.client.gui.widget.entrylist.PaginatedEntryListWidget;
import me.shedaniel.rei.impl.client.gui.widget.entrylist.ScrolledEntryListWidget;
@@ -61,137 +41,54 @@ import me.shedaniel.rei.impl.client.gui.widget.favorites.FavoritesListWidget;
import me.shedaniel.rei.impl.client.gui.widget.search.OverlaySearchField;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.components.events.GuiEventListener;
-import net.minecraft.client.gui.screens.Screen;
-import net.minecraft.network.chat.Component;
-import net.minecraft.world.InteractionResult;
import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.Nullable;
-import java.util.List;
import java.util.Objects;
import java.util.Optional;
-import static me.shedaniel.rei.impl.client.gui.widget.entrylist.EntryListWidget.entrySize;
-
@ApiStatus.Internal
-public abstract class ScreenOverlayImpl extends ScreenOverlay {
- private static EntryListWidget entryListWidget = null;
- private static FavoritesListWidget favoritesListWidget = null;
- private static OverlaySearchField searchField = null;
- private final List<Widget> widgets = Lists.newLinkedList();
- public boolean shouldReload = false;
- public boolean shouldReloadSearch = false;
- private Rectangle bounds;
- private Widget configButton;
- private CurrentDraggingStack draggingStack = new CurrentDraggingStack();
- @Nullable
- public DefaultDisplayChoosePageWidget choosePageWidget;
- private MenuAccessImpl menuAccess = new MenuAccessImpl();
+public abstract class ScreenOverlayImpl extends AbstractScreenOverlay {
+ private EntryListWidget entryListWidget = null;
+ private FavoritesListWidget favoritesListWidget = null;
+ private OverlaySearchField searchField = null;
public static EntryListWidget getEntryListWidget() {
- boolean widgetScrolled = ConfigObject.getInstance().isEntryListWidgetScrolled();
-
- if (entryListWidget != null) {
- if (widgetScrolled && entryListWidget instanceof ScrolledEntryListWidget) {
- return entryListWidget;
- } else if (!widgetScrolled && entryListWidget instanceof PaginatedEntryListWidget) {
- return entryListWidget;
- }
- }
-
- entryListWidget = widgetScrolled ? new ScrolledEntryListWidget() : new PaginatedEntryListWidget();
-
- ScreenOverlayImpl overlay = ScreenOverlayImpl.getInstance();
- Rectangle overlayBounds = overlay.bounds;
- entryListWidget.updateArea(Objects.requireNonNullElse(overlayBounds, new Rectangle()), overlay.getSearchField().getText());
- entryListWidget.updateEntriesPosition();
-
- return entryListWidget;
+ return getInstance().getEntryList();
}
@Nullable
public static FavoritesListWidget getFavoritesListWidget() {
- return favoritesListWidget;
+ return getInstance().getFavoritesListNullable();
}
public static ScreenOverlayImpl getInstance() {
return (ScreenOverlayImpl) REIRuntime.getInstance().getOverlay().get();
}
- public void tick() {
- if (searchField != null) {
- if (Minecraft.getInstance().player != null && !PluginManager.areAnyReloading() && Minecraft.getInstance().player.tickCount % 5 == 0) {
- CraftableFilter.INSTANCE.tick();
- }
- }
- }
-
@Override
- public void queueReloadOverlay() {
- shouldReload = true;
- }
-
- @Override
- public void queueReloadSearch() {
- shouldReloadSearch = true;
- }
-
- @Override
- public boolean isOverlayReloadQueued() {
- return shouldReload;
- }
-
- @Override
- public boolean isSearchReloadQueued() {
- return shouldReloadSearch || shouldReload;
- }
-
- @Override
- public DraggingContext<?> getDraggingContext() {
- return draggingStack;
- }
-
- protected boolean hasSpace() {
- return !this.bounds.isEmpty();
- }
-
public void init() {
- this.draggingStack.set(DraggableComponentProvider.from(ScreenRegistry.getInstance()::getDraggableComponentProviders),
- DraggableComponentVisitor.from(ScreenRegistry.getInstance()::getDraggableComponentVisitors));
+ super.init();
- this.shouldReload = false;
- this.shouldReloadSearch = false;
- this.children().clear();
- this.bounds = calculateOverlayBounds();
-
- if (choosePageWidget != null) {
- this.widgets.add(choosePageWidget);
- }
+ TextField searchField = getSearchField();
+ searchField.asWidget().getBounds().setBounds(getSearchFieldArea());
+ this.children().add(searchField.asWidget());
if (ConfigObject.getInstance().isFavoritesEnabled()) {
- if (favoritesListWidget == null) {
- favoritesListWidget = new FavoritesListWidget();
- }
- favoritesListWidget.favoritePanel.resetRows();
- this.widgets.add(favoritesListWidget);
+ getFavoritesListWidget().favoritePanel.resetRows();
+ this.children().add(getFavoritesListWidget());
}
- TextField searchField = getSearchField();
- searchField.asWidget().getBounds().setBounds(getSearchFieldArea());
- this.widgets.add(searchField.asWidget());
-
EntryListWidget entryListWidget = getEntryListWidget();
- entryListWidget.updateArea(this.bounds, searchField.getText());
- this.widgets.add(entryListWidget);
+ entryListWidget.updateArea(this.getBounds(), searchField.getText());
+ this.children().add(entryListWidget);
searchField.setResponder(s -> entryListWidget.updateSearch(s, false));
entryListWidget.init(this);
- this.widgets.add(configButton = ConfigButtonWidget.create(this));
+ this.children().add(ConfigButtonWidget.create(this));
if (ConfigObject.getInstance().isCraftableFilterEnabled()) {
- this.widgets.add(CraftableFilterButtonWidget.create(this));
+ this.children().add(CraftableFilterButtonWidget.create(this));
}
-
- this.widgets.add(draggingStack);
}
private Rectangle getSearchFieldArea() {
@@ -207,12 +104,12 @@ public abstract class ScreenOverlayImpl extends ScreenOverlay {
}
private Rectangle getTopSideSearchFieldArea(int widthRemoved) {
- return new Rectangle(bounds.x + 2, 4, bounds.width - 6 - widthRemoved, 18);
+ return new Rectangle(getBounds().x + 2, 4, getBounds().width - 6 - widthRemoved, 18);
}
private Rectangle getBottomSideSearchFieldArea(int widthRemoved) {
Window window = Minecraft.getInstance().getWindow();
- return new Rectangle(bounds.x + 2, window.getGuiScaledHeight() - 22, bounds.width - 6 - widthRemoved, 18);
+ return new Rectangle(getBounds().x + 2, window.getGuiScaledHeight() - 22, getBounds().width - 6 - widthRemoved, 18);
}
private Rectangle getCenterSearchFieldArea(int widthRemoved) {
@@ -222,179 +119,15 @@ public abstract class ScreenOverlayImpl extends ScreenOverlay {
}
@Override
- public Rectangle getBounds() {
- return bounds;
- }
-
- @Override
- public void render(PoseStack matrices, int mouseX, int mouseY, float delta) {
- if (shouldReload || !calculateOverlayBounds().equals(bounds)) {
- init();
- getEntryListWidget().updateSearch(REIRuntime.getInstance().getSearchTextField().getText(), true);
- } else {
- for (OverlayDecider decider : ScreenRegistry.getInstance().getDeciders(minecraft.screen)) {
- if (decider != null && decider.shouldRecalculateArea(ConfigObject.getInstance().getDisplayPanelLocation(), bounds)) {
- init();
- break;
- }
- }
- }
- if (shouldReloadSearch) {
- shouldReloadSearch = false;
- getEntryListWidget().updateSearch(getSearchField().getText(), true);
- }
- if (OverlaySearchField.isHighlighting) {
- EntryHighlighter.render(matrices);
- }
- if (!hasSpace()) return;
- RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F);
- this.renderWidgets(matrices, mouseX, mouseY, delta);
- if (ConfigObject.getInstance().areClickableRecipeArrowsEnabled()) {
- Screen screen = Minecraft.getInstance().screen;
- ClickArea.ClickAreaContext<Screen> context = createClickAreaContext(mouseX, mouseY, screen);
- List<Component> clickAreaTooltips = ScreenRegistry.getInstance().getClickAreaTooltips((Class<Screen>) screen.getClass(), context);
- if (clickAreaTooltips != null && !clickAreaTooltips.isEmpty()) {
- Tooltip.create(clickAreaTooltips).queue();
- }
- }
- }
-
- private ClickArea.ClickAreaContext<Screen> createClickAreaContext(double mouseX, double mouseY, Screen screen) {
- return new ClickArea.ClickAreaContext<>() {
- @Override
- public Screen getScreen() {
- return screen;
- }
-
- @Override
- public Point getMousePosition() {
- return new Point(mouseX, mouseY);
- }
- };
- }
-
- private static Rectangle calculateOverlayBounds() {
- Rectangle bounds = ScreenRegistry.getInstance().getOverlayBounds(ConfigObject.getInstance().getDisplayPanelLocation(), Minecraft.getInstance().screen);
-
- int widthReduction = (int) Math.round(bounds.width * (1 - ConfigObject.getInstance().getHorizontalEntriesBoundariesPercentage()));
- if (ConfigObject.getInstance().getDisplayPanelLocation() == DisplayPanelLocation.RIGHT)
- bounds.x += widthReduction;
- bounds.width -= widthReduction;
- int maxWidth = (int) Math.ceil(entrySize() * ConfigObject.getInstance().getHorizontalEntriesBoundariesColumns() + entrySize() * 0.75);
- if (bounds.width > maxWidth) {
- if (ConfigObject.getInstance().getDisplayPanelLocation() == DisplayPanelLocation.RIGHT)
- bounds.x += bounds.width - maxWidth;
- bounds.width = maxWidth;
- }
-
- return bounds;
- }
-
- public void lateRender(PoseStack matrices, int mouseX, int mouseY, float delta) {
- if (REIRuntime.getInstance().isOverlayVisible() && hasSpace()) {
- getSearchField().laterRender(matrices, mouseX, mouseY, delta);
- for (Widget widget : widgets) {
- if (widget instanceof LateRenderable && widget != menuAccess.widget())
- widget.render(matrices, mouseX, mouseY, delta);
- }
- matrices.pushPose();
- matrices.translate(0, 0, 500);
- menuAccess.lateRender(matrices, mouseX, mouseY, delta);
- matrices.popPose();
- if (choosePageWidget != null) {
- setBlitOffset(500);
- Window window = Minecraft.getInstance().getWindow();
- this.fillGradient(matrices, 0, 0, window.getGuiScaledWidth(), window.getGuiScaledHeight(), -1072689136, -804253680);
- setBlitOffset(0);
- choosePageWidget.render(matrices, mouseX, mouseY, delta);
- }
- }
- if (choosePageWidget == null) {
- Tooltip tooltip = TooltipQueue.get();
-
- if (tooltip != null) {
- renderTooltip(matrices, tooltip);
- }
- }
-
- REIRuntime.getInstance().clearTooltips();
- if (REIRuntime.getInstance().isOverlayVisible()) {
- menuAccess.afterRender();
- }
- }
-
- @Override
- public void renderTooltip(PoseStack matrices, Tooltip tooltip) {
- renderTooltipInner(minecraft.screen, matrices, tooltip, tooltip.getX(), tooltip.getY());
- }
-
- protected abstract void renderTooltipInner(Screen screen, PoseStack matrices, Tooltip tooltip, int mouseX, int mouseY);
-
- public void renderWidgets(PoseStack matrices, int mouseX, int mouseY, float delta) {
- if (!REIRuntime.getInstance().isOverlayVisible())
- return;
- for (Widget widget : widgets) {
- if (!(widget instanceof LateRenderable))
- widget.render(matrices, mouseX, mouseY, delta);
- }
- }
-
- @Override
- public boolean mouseScrolled(double mouseX, double mouseY, double amount) {
- if (!REIRuntime.getInstance().isOverlayVisible())
- return false;
- if (menuAccess.mouseScrolled(mouseX, mouseY, amount))
- return true;
- if (isInside(mouseX, mouseY) && getEntryListWidget().mouseScrolled(mouseX, mouseY, amount)) {
- return true;
- }
- if (isNotInExclusionZones(PointHelper.getMouseX(), PointHelper.getMouseY())) {
- if (favoritesListWidget != null && favoritesListWidget.mouseScrolled(mouseX, mouseY, amount))
- return true;
- }
- for (Widget widget : widgets)
- if (widget != getEntryListWidget() && (favoritesListWidget == null || widget != favoritesListWidget)
- && widget != menuAccess.widget()
- && widget.mouseScrolled(mouseX, mouseY, amount))
- return true;
- return false;
+ protected void updateSearch() {
+ getEntryListWidget().updateSearch(getSearchField().getText(), true);
}
@Override
public boolean keyPressed(int keyCode, int scanCode, int modifiers) {
+ if (super.keyPressed(keyCode, scanCode, modifiers)) return true;
if (!hasSpace()) return false;
- if (REIRuntime.getInstance().isOverlayVisible()) {
- if (keyCode == 256 && choosePageWidget != null) {
- choosePageWidget = null;
- return true;
- }
- if (choosePageWidget != null)
- return choosePageWidget.keyPressed(keyCode, scanCode, modifiers);
- if (getSearchField().keyPressed(keyCode, scanCode, modifiers))
- return true;
- for (GuiEventListener listener : widgets)
- if (listener != getSearchField() && listener.keyPressed(keyCode, scanCode, modifiers))
- return true;
- }
- if (ConfigObject.getInstance().getHideKeybind().matchesKey(keyCode, scanCode)) {
- REIRuntime.getInstance().toggleOverlayVisible();
- return true;
- }
- EntryStack<?> stack = ScreenRegistry.getInstance().getFocusedStack(Minecraft.getInstance().screen, PointHelper.ofMouse());
- if (stack != null && !stack.isEmpty()) {
- stack = stack.copy();
- if (ConfigObject.getInstance().getRecipeKeybind().matchesKey(keyCode, scanCode)) {
- return ViewSearchBuilder.builder().addRecipesFor(stack).open();
- } else if (ConfigObject.getInstance().getUsageKeybind().matchesKey(keyCode, scanCode)) {
- return ViewSearchBuilder.builder().addUsagesFor(stack).open();
- } else if (ConfigObject.getInstance().getFavoriteKeyCode().matchesKey(keyCode, scanCode)) {
- FavoriteEntry favoriteEntry = FavoriteEntry.fromEntryStack(stack);
- ConfigObject.getInstance().getFavoriteEntries().add(favoriteEntry);
- return true;
- }
- }
- if (!REIRuntime.getInstance().isOverlayVisible())
- return false;
+ if (!REIRuntime.getInstance().isOverlayVisible()) return false;
if (ConfigObject.getInstance().getFocusSearchFieldKeybind().matchesKey(keyCode, scanCode)) {
getSearchField().setFocused(true);
setFocused(getSearchField());
@@ -406,107 +139,10 @@ public abstract class ScreenOverlayImpl extends ScreenOverlay {
}
@Override
- public boolean keyReleased(int keyCode, int scanCode, int modifiers) {
- if (!hasSpace()) return false;
- if (REIRuntime.getInstance().isOverlayVisible()) {
- if (choosePageWidget == null) {
- if (getSearchField().keyReleased(keyCode, scanCode, modifiers))
- return true;
- for (GuiEventListener listener : widgets)
- if (listener != getSearchField() && listener == getFocused() && listener.keyPressed(keyCode, scanCode, modifiers))
- return true;
- }
- }
- return false;
- }
-
- @Override
- public boolean charTyped(char character, int modifiers) {
- if (!REIRuntime.getInstance().isOverlayVisible())
- return false;
- if (!hasSpace()) return false;
- if (choosePageWidget != null) {
- return choosePageWidget.charTyped(character, modifiers);
- }
- if (getSearchField().charTyped(character, modifiers))
- return true;
- for (GuiEventListener listener : widgets)
- if (listener != getSearchField() && listener.charTyped(character, modifiers))
- return true;
- return false;
- }
-
- @Override
- public List<Widget> children() {
- return widgets;
- }
-
- @Override
public boolean mouseClicked(double mouseX, double mouseY, int button) {
+ if (super.mouseClicked(mouseX, mouseY, button)) return true;
boolean visible = REIRuntime.getInstance().isOverlayVisible();
- if (choosePageWidget != null) {
- if (choosePageWidget.containsMouse(mouseX, mouseY)) {
- return choosePageWidget.mouseClicked(mouseX, mouseY, button);
- } else {
- choosePageWidget = null;
- init();
- return false;
- }
- }
- if (!hasSpace()) return false;
- if (visible && configButton.mouseClicked(mouseX, mouseY, button)) {
- this.setFocused(configButton);
- if (button == 0)
- this.setDragging(true);
- return true;
- }
- if (ConfigObject.getInstance().getHideKeybind().matchesMouse(button)) {
- REIRuntime.getInstance().toggleOverlayVisible();
- return REIRuntime.getInstance().isOverlayVisible();
- }
- EntryStack<?> stack = ScreenRegistry.getInstance().getFocusedStack(Minecraft.getInstance().screen, PointHelper.ofMouse());