diff options
| author | shedaniel <daniel@shedaniel.me> | 2021-03-25 18:15:16 +0800 |
|---|---|---|
| committer | shedaniel <daniel@shedaniel.me> | 2021-03-25 18:15:16 +0800 |
| commit | 02d1d95dd54285cc1237d1b5016401274a5ae5f0 (patch) | |
| tree | c3bed1a8a8ff8d4775394d6c0354587c0460f729 /runtime/src/main | |
| parent | 995b8b58aa8c890c9181ae479e12a4facfa05a25 (diff) | |
| download | RoughlyEnoughItems-02d1d95dd54285cc1237d1b5016401274a5ae5f0.tar.gz RoughlyEnoughItems-02d1d95dd54285cc1237d1b5016401274a5ae5f0.tar.bz2 RoughlyEnoughItems-02d1d95dd54285cc1237d1b5016401274a5ae5f0.zip | |
Refactor Default Plugin packages, fix favorites
Signed-off-by: shedaniel <daniel@shedaniel.me>
Diffstat (limited to 'runtime/src/main')
38 files changed, 341 insertions, 348 deletions
diff --git a/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java b/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java index 787a25cb6..7bc63e0b3 100644 --- a/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java +++ b/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java @@ -36,12 +36,12 @@ import me.shedaniel.math.Point; import me.shedaniel.rei.api.client.REIHelper; import me.shedaniel.rei.api.client.REIOverlay; import me.shedaniel.rei.api.client.config.ConfigObject; +import me.shedaniel.rei.api.client.entry.renderer.EntryRenderer; import me.shedaniel.rei.api.client.favorites.FavoriteEntry; import me.shedaniel.rei.api.client.favorites.FavoriteEntryType; import me.shedaniel.rei.api.client.favorites.FavoriteMenuEntry; import me.shedaniel.rei.api.client.gui.Renderer; -import me.shedaniel.rei.api.client.gui.widgets.*; -import me.shedaniel.rei.api.client.entry.renderer.EntryRenderer; +import me.shedaniel.rei.api.client.gui.widgets.Tooltip; import me.shedaniel.rei.api.client.plugins.REIClientPlugin; import me.shedaniel.rei.api.client.registry.screen.ClickArea; import me.shedaniel.rei.api.client.registry.screen.OverlayDecider; @@ -51,40 +51,41 @@ import me.shedaniel.rei.api.common.entry.EntryStack; import me.shedaniel.rei.api.common.entry.type.BuiltinEntryTypes; import me.shedaniel.rei.api.common.entry.type.EntryDefinition; import me.shedaniel.rei.api.common.entry.type.EntryType; -import me.shedaniel.rei.api.common.util.EntryStacks; import me.shedaniel.rei.api.common.plugins.PluginManager; import me.shedaniel.rei.api.common.plugins.PluginView; import me.shedaniel.rei.api.common.plugins.REIPlugin; import me.shedaniel.rei.api.common.plugins.REIServerPlugin; +import me.shedaniel.rei.api.common.util.EntryStacks; +import me.shedaniel.rei.impl.ClientInternals; +import me.shedaniel.rei.impl.Internals; import me.shedaniel.rei.impl.client.REIHelperImpl; +import me.shedaniel.rei.impl.client.config.ConfigManagerImpl; +import me.shedaniel.rei.impl.client.entry.type.types.RenderingEntryDefinition; +import me.shedaniel.rei.impl.client.favorites.FavoriteEntryTypeRegistryImpl; import me.shedaniel.rei.impl.client.gui.ContainerScreenOverlay; import me.shedaniel.rei.impl.client.gui.widget.InternalWidgets; import me.shedaniel.rei.impl.client.gui.widget.QueuedTooltip; -import me.shedaniel.rei.impl.*; +import me.shedaniel.rei.impl.client.registry.category.CategoryRegistryImpl; +import me.shedaniel.rei.impl.client.registry.display.DisplayRegistryImpl; +import me.shedaniel.rei.impl.client.registry.screen.ScreenRegistryImpl; +import me.shedaniel.rei.impl.client.search.SearchProviderImpl; +import me.shedaniel.rei.impl.client.subsets.SubsetsRegistryImpl; +import me.shedaniel.rei.impl.client.transfer.TransferHandlerRegistryImpl; +import me.shedaniel.rei.impl.client.view.ViewsImpl; import me.shedaniel.rei.impl.common.category.CategoryIdentifierImpl; import me.shedaniel.rei.impl.common.display.DisplaySerializerRegistryImpl; -import me.shedaniel.rei.impl.common.plugins.PluginManagerImpl; -import me.shedaniel.rei.impl.common.transfer.MenuInfoRegistryImpl; -import me.shedaniel.rei.impl.client.config.ConfigManagerImpl; import me.shedaniel.rei.impl.common.entry.EntryIngredientImpl; -import me.shedaniel.rei.impl.client.favorites.FavoriteEntryTypeRegistryImpl; +import me.shedaniel.rei.impl.common.entry.TypedEntryStack; import me.shedaniel.rei.impl.common.entry.comparison.ItemComparatorRegistryImpl; import me.shedaniel.rei.impl.common.entry.comparison.NbtHasherProviderImpl; -import me.shedaniel.rei.impl.common.entry.TypedEntryStack; import me.shedaniel.rei.impl.common.entry.type.EntryRegistryImpl; import me.shedaniel.rei.impl.common.entry.type.EntryTypeDeferred; import me.shedaniel.rei.impl.common.entry.type.EntryTypeRegistryImpl; import me.shedaniel.rei.impl.common.entry.type.types.EmptyEntryDefinition; -import me.shedaniel.rei.impl.client.entry.type.types.RenderingEntryDefinition; import me.shedaniel.rei.impl.common.fluid.FluidSupportProviderImpl; -import me.shedaniel.rei.impl.client.registry.category.CategoryRegistryImpl; -import me.shedaniel.rei.impl.client.registry.display.DisplayRegistryImpl; -import me.shedaniel.rei.impl.client.registry.screen.ScreenRegistryImpl; -import me.shedaniel.rei.impl.client.search.SearchProviderImpl; -import me.shedaniel.rei.impl.client.subsets.SubsetsRegistryImpl; +import me.shedaniel.rei.impl.common.plugins.PluginManagerImpl; +import me.shedaniel.rei.impl.common.transfer.MenuInfoRegistryImpl; import me.shedaniel.rei.impl.common.util.IssuesDetector; -import me.shedaniel.rei.impl.client.transfer.TransferHandlerRegistryImpl; -import me.shedaniel.rei.impl.client.view.ViewsImpl; import me.shedaniel.rei.plugin.test.REITestPlugin; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/ClientHelperImpl.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/ClientHelperImpl.java index 887230dcd..64700c4cd 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/ClientHelperImpl.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/ClientHelperImpl.java @@ -26,7 +26,6 @@ package me.shedaniel.rei.impl.client; import io.netty.buffer.Unpooled; import me.shedaniel.architectury.networking.NetworkManager; import me.shedaniel.architectury.platform.Platform; -import me.shedaniel.rei.RoughlyEnoughItemsCore; import me.shedaniel.rei.RoughlyEnoughItemsNetwork; import me.shedaniel.rei.api.client.ClientHelper; import me.shedaniel.rei.api.client.REIHelper; diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/REIHelperImpl.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/REIHelperImpl.java index f47aba025..82c3eb983 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/REIHelperImpl.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/REIHelperImpl.java @@ -38,8 +38,8 @@ import me.shedaniel.rei.api.client.gui.widgets.TextField; import me.shedaniel.rei.api.client.gui.widgets.Tooltip; import me.shedaniel.rei.api.client.registry.screen.ScreenRegistry; import me.shedaniel.rei.impl.client.gui.ContainerScreenOverlay; -import me.shedaniel.rei.impl.client.gui.widget.search.OverlaySearchField; import me.shedaniel.rei.impl.client.gui.screen.RecipeScreen; +import me.shedaniel.rei.impl.client.gui.widget.search.OverlaySearchField; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.Minecraft; diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/config/ConfigManagerImpl.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/config/ConfigManagerImpl.java index b58e14524..4ce4c30f6 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/config/ConfigManagerImpl.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/config/ConfigManagerImpl.java @@ -57,14 +57,14 @@ import me.shedaniel.rei.api.client.gui.config.SyntaxHighlightingMode; import me.shedaniel.rei.api.client.registry.entry.EntryRegistry; import me.shedaniel.rei.api.common.entry.EntryStack; import me.shedaniel.rei.api.common.util.CollectionUtils; +import me.shedaniel.rei.impl.client.REIHelperImpl; import me.shedaniel.rei.impl.client.config.entries.*; +import me.shedaniel.rei.impl.client.entry.filtering.FilteringRule; +import me.shedaniel.rei.impl.client.entry.filtering.rules.ManualFilteringRule; import me.shedaniel.rei.impl.client.gui.ContainerScreenOverlay; +import me.shedaniel.rei.impl.client.gui.credits.CreditsScreen; import me.shedaniel.rei.impl.client.gui.screen.TransformingScreen; import me.shedaniel.rei.impl.client.gui.screen.WarningAndErrorScreen; -import me.shedaniel.rei.impl.client.gui.credits.CreditsScreen; -import me.shedaniel.rei.impl.client.REIHelperImpl; -import me.shedaniel.rei.impl.client.entry.filtering.FilteringRule; -import me.shedaniel.rei.impl.client.entry.filtering.rules.ManualFilteringRule; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.fabricmc.loader.api.FabricLoader; diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringScreen.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringScreen.java index 6c5a37fbc..adabe8d62 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringScreen.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringScreen.java @@ -46,8 +46,8 @@ import me.shedaniel.rei.api.client.search.SearchFilter; import me.shedaniel.rei.api.client.search.SearchProvider; import me.shedaniel.rei.api.common.entry.EntryStack; import me.shedaniel.rei.impl.client.gui.ContainerScreenOverlay; -import me.shedaniel.rei.impl.client.gui.widget.search.OverlaySearchField; import me.shedaniel.rei.impl.client.gui.widget.EntryWidget; +import me.shedaniel.rei.impl.client.gui.widget.search.OverlaySearchField; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.components.Button; import net.minecraft.client.gui.components.events.GuiEventListener; diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/entry/filtering/rules/ManualFilteringRule.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/entry/filtering/rules/ManualFilteringRule.java index 8504a8aa8..5bcd19e2c 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/entry/filtering/rules/ManualFilteringRule.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/entry/filtering/rules/ManualFilteringRule.java @@ -27,8 +27,8 @@ import it.unimi.dsi.fastutil.ints.IntOpenHashSet; import it.unimi.dsi.fastutil.ints.IntSet; import me.shedaniel.rei.api.client.config.ConfigObject; import me.shedaniel.rei.api.common.entry.EntryStack; -import me.shedaniel.rei.api.common.util.EntryStacks; import me.shedaniel.rei.api.common.util.CollectionUtils; +import me.shedaniel.rei.api.common.util.EntryStacks; import me.shedaniel.rei.impl.client.entry.filtering.AbstractFilteringRule; import me.shedaniel.rei.impl.client.entry.filtering.FilteringContext; import me.shedaniel.rei.impl.client.entry.filtering.FilteringResult; diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/entry/filtering/rules/SearchFilteringRule.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/entry/filtering/rules/SearchFilteringRule.java index 072fb2f24..3113cc79c 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/entry/filtering/rules/SearchFilteringRule.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/entry/filtering/rules/SearchFilteringRule.java @@ -24,12 +24,12 @@ package me.shedaniel.rei.impl.client.entry.filtering.rules; import com.google.common.collect.Lists; -import me.shedaniel.rei.impl.client.config.entries.FilteringEntry; -import me.shedaniel.rei.impl.client.config.entries.FilteringRuleOptionsScreen; import me.shedaniel.rei.api.client.search.SearchFilter; import me.shedaniel.rei.api.client.search.SearchProvider; import me.shedaniel.rei.api.common.entry.EntryStack; import me.shedaniel.rei.api.common.util.CollectionUtils; +import me.shedaniel.rei.impl.client.config.entries.FilteringEntry; +import me.shedaniel.rei.impl.client.config.entries.FilteringRuleOptionsScreen; import me.shedaniel.rei.impl.client.entry.filtering.AbstractFilteringRule; import me.shedaniel.rei.impl.client.entry.filtering.FilteringContext; import me.shedaniel.rei.impl.client.entry.filtering.FilteringResult; diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/entry/type/types/RenderingEntryDefinition.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/entry/type/types/RenderingEntryDefinition.java index 90aa654ee..d04a86e14 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/entry/type/types/RenderingEntryDefinition.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/entry/type/types/RenderingEntryDefinition.java @@ -27,10 +27,10 @@ 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.gui.Renderer; -import me.shedaniel.rei.api.client.gui.widgets.Tooltip; import me.shedaniel.rei.api.client.entry.renderer.EntryRenderer; import me.shedaniel.rei.api.client.entry.type.BuiltinClientEntryTypes; +import me.shedaniel.rei.api.client.gui.Renderer; +import me.shedaniel.rei.api.client.gui.widgets.Tooltip; import me.shedaniel.rei.api.common.entry.EntryStack; import me.shedaniel.rei.api.common.entry.type.EntryDefinition; import me.shedaniel.rei.impl.common.entry.type.types.BuiltinEntryDefinition; diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/ContainerScreenOverlay.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/ContainerScreenOverlay.java index a53fb7fc6..68d9a7782 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/ContainerScreenOverlay.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/ContainerScreenOverlay.java @@ -34,7 +34,6 @@ import com.mojang.math.Vector4f; import me.shedaniel.math.Point; import me.shedaniel.math.Rectangle; import me.shedaniel.math.impl.PointHelper; -import me.shedaniel.rei.RoughlyEnoughItemsCore; import me.shedaniel.rei.api.client.ClientHelper; import me.shedaniel.rei.api.client.REIHelper; import me.shedaniel.rei.api.client.REIOverlay; @@ -45,10 +44,7 @@ import me.shedaniel.rei.api.client.gui.config.SearchFieldLocation; import me.shedaniel.rei.api.client.gui.drag.DraggableStackProvider; import me.shedaniel.rei.api.client.gui.drag.DraggableStackVisitor; import me.shedaniel.rei.api.client.gui.drag.DraggingContext; -import me.shedaniel.rei.api.client.gui.widgets.Button; -import me.shedaniel.rei.api.client.gui.widgets.Tooltip; -import me.shedaniel.rei.api.client.gui.widgets.Widget; -import me.shedaniel.rei.api.client.gui.widgets.Widgets; +import me.shedaniel.rei.api.client.gui.widgets.*; import me.shedaniel.rei.api.client.registry.category.CategoryRegistry; import me.shedaniel.rei.api.client.registry.screen.ClickArea; import me.shedaniel.rei.api.client.registry.screen.OverlayDecider; @@ -56,9 +52,11 @@ import me.shedaniel.rei.api.client.registry.screen.ScreenRegistry; import me.shedaniel.rei.api.client.view.ViewSearchBuilder; import me.shedaniel.rei.api.common.category.CategoryIdentifier; import me.shedaniel.rei.api.common.entry.EntryStack; -import me.shedaniel.rei.api.common.util.EntryStacks; import me.shedaniel.rei.api.common.util.CollectionUtils; +import me.shedaniel.rei.api.common.util.EntryStacks; import me.shedaniel.rei.api.common.util.ImmutableTextComponent; +import me.shedaniel.rei.impl.client.ClientHelperImpl; +import me.shedaniel.rei.impl.client.REIHelperImpl; import me.shedaniel.rei.impl.client.gui.dragging.CurrentDraggingStack; import me.shedaniel.rei.impl.client.gui.modules.Menu; import me.shedaniel.rei.impl.client.gui.modules.entries.GameModeMenuEntry; @@ -66,12 +64,10 @@ import me.shedaniel.rei.impl.client.gui.modules.entries.WeatherMenuEntry; import me.shedaniel.rei.impl.client.gui.screen.DefaultDisplayViewingScreen; import me.shedaniel.rei.impl.client.gui.widget.EntryListWidget; import me.shedaniel.rei.impl.client.gui.widget.FavoritesListWidget; -import me.shedaniel.rei.impl.client.gui.widget.LateRenderable; import me.shedaniel.rei.impl.client.gui.widget.InternalWidgets; -import me.shedaniel.rei.impl.client.REIHelperImpl; +import me.shedaniel.rei.impl.client.gui.widget.LateRenderable; import me.shedaniel.rei.impl.client.gui.widget.search.OverlaySearchField; import me.shedaniel.rei.impl.common.util.Weather; -import me.shedaniel.rei.impl.client.ClientHelperImpl; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.chat.NarratorChatListener; import net.minecraft.client.gui.components.events.ContainerEventHandler; @@ -83,9 +79,8 @@ import net.minecraft.client.multiplayer.PlayerInfo; import net.minecraft.client.renderer.entity.ItemRenderer; import net.minecraft.client.resources.language.I18n; import net.minecraft.client.resources.sounds.SimpleSoundInstance; -import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextComponent; -import net.minecraft.network.chat.TranslatableComponent; +import net.minecraft.locale.Language; +import net.minecraft.network.chat.*; import net.minecraft.resources.ResourceLocation; import net.minecraft.sounds.SoundEvents; import net.minecraft.util.FormattedCharSequence; @@ -100,6 +95,7 @@ import org.jetbrains.annotations.Nullable; import java.util.*; import java.util.function.Consumer; import java.util.function.Predicate; +import java.util.stream.Collectors; @ApiStatus.Internal public class ContainerScreenOverlay extends REIOverlay { @@ -134,16 +130,16 @@ public class ContainerScreenOverlay extends REIOverlay { } private static class OverlayMenu { - private UUID uuid; - private Menu menu; - private Widget wrappedMenu; - private Predicate<Point> inBounds; + private UUID uuid; + private Menu menu; + private Widget wrappedMenu; + private Predicate<Point> inBounds; - public OverlayMenu(UUID uuid, Menu menu, Widget wrappedMenu, Predicate<Point> inBounds) { + public OverlayMenu(UUID uuid, Menu menu, Widget wrappedMenu, Predicate<Point> or, Predicate<Point> and) { this.uuid = uuid; this.menu = menu; this.wrappedMenu = wrappedMenu; - this.inBounds = inBounds.or(point -> menu.getBounds().contains(point)); + this.inBounds = or.or(point -> menu.getBounds().contains(point)).and(and); } } @@ -172,8 +168,11 @@ public class ContainerScreenOverlay extends REIOverlay { } } - public void openMenu(UUID uuid, Menu menu, Predicate<Point> inPoint) { - this.overlayMenu = new OverlayMenu(uuid, menu, Widgets.withTranslate(menu, 0, 0, 400), inPoint); + public void openMenu(UUID uuid, Menu menu) { + openMenu(uuid, menu, point -> false, point -> true); + } + public void openMenu(UUID uuid, Menu menu, Predicate<Point> or, Predicate<Point> and) { + this.overlayMenu = new OverlayMenu(uuid, menu, Widgets.withTranslate(menu, 0, 0, 400), or, and); } @ApiStatus.Internal @@ -204,34 +203,7 @@ public class ContainerScreenOverlay extends REIOverlay { } private static <T> Iterable<T> buildWidgetsTree(Iterable<? extends GuiEventListener> listeners, Class<T> type) { - return () -> new AbstractIterator<T>() { - Stack<Iterator<? extends GuiEventListener>> stack; - - { - stack = new Stack<>(); - stack.push(listeners.iterator()); - } - - @Override - protected T computeNext() { - while (!stack.empty()) { - Iterator<? extends GuiEventListener> peek = stack.peek(); - GuiEventListener listener = peek.next(); - if (!peek.hasNext()) - stack.pop(); - if (type.isInstance(listener)) { - return (T) listener; - } - if (listener instanceof ContainerEventHandler) { - List<? extends GuiEventListener> children = ((ContainerEventHandler) listener).children(); - if (!children.isEmpty()) { - stack.push(children.iterator()); - } - } - } - return endOfData(); - } - }; + return Widgets.walk(listeners, type::isInstance); } public void init(boolean useless) { @@ -305,7 +277,7 @@ public class ContainerScreenOverlay extends REIOverlay { .focusable(false) .containsMousePredicate((button, point) -> button.getBounds().contains(point) && isNotInExclusionZones(point.x, point.y)) .tooltipSupplier(button -> { - List<Component> tooltips =new ArrayList<>(); + List<Component> tooltips = new ArrayList<>(); tooltips.add(new TranslatableComponent("text.rei.config_tooltip")); tooltips.add(new ImmutableTextComponent(" ")); if (!ClientHelper.getInstance().isCheating()) @@ -340,7 +312,7 @@ public class ContainerScreenOverlay extends REIOverlay { CollectionUtils.map(GameType.values(), GameModeMenuEntry::new)); if (ConfigObject.getInstance().isLeftHandSidePanel()) menu.menuStartPoint.x -= menu.getBounds().width - button.getBounds().width; - openMenu(Menu.GAME_TYPE, menu, point -> button.isFocused() && button.containsMouse(PointHelper.ofMouse())); + openMenu(Menu.GAME_TYPE, menu, point -> button.isFocused() && button.containsMouse(PointHelper.ofMouse()), point -> true); } else { closeOverlayMenu(); } @@ -363,7 +335,7 @@ public class ContainerScreenOverlay extends REIOverlay { CollectionUtils.map(Weather.values(), WeatherMenuEntry::new)); if (ConfigObject.getInstance().isLeftHandSidePanel()) menu.menuStartPoint.x -= menu.getBounds().width - button.getBounds().width; - openMenu(Menu.WEATHER, menu, point -> button.isFocused() && button.containsMouse(PointHelper.ofMouse())); + openMenu(Menu.WEATHER, menu, point -> button.isFocused() && button.containsMouse(PointHelper.ofMouse()), point -> true); } else { closeOverlayMenu(); } @@ -384,7 +356,7 @@ public class ContainerScreenOverlay extends REIOverlay { widgets.add(InternalWidgets.wrapLateRenderable(Widgets.withTranslate(Widgets.createButton(subsetsButtonBounds, ClientHelperImpl.getInstance().isAprilFools.get() ? new TranslatableComponent("text.rei.tiny_potato") : new TranslatableComponent("text.rei.subsets")) .onClick(button -> { proceedOpenMenuOrElse(Menu.SUBSETS, () -> { - openMenu(Menu.SUBSETS, Menu.createSubsetsMenuFromRegistry(new Point(subsetsButtonBounds.x, subsetsButtonBounds.getMaxY())), point -> true); + openMenu(Menu.SUBSETS, Menu.createSubsetsMenuFromRegistry(new Point(subsetsButtonBounds.x, subsetsButtonBounds.getMaxY())), point -> true, point -> true); }, menu -> { closeOverlayMenu(); }); @@ -592,10 +564,14 @@ public class ContainerScreenOverlay extends REIOverlay { widget.render(matrices, mouseX, mouseY, delta); } if (overlayMenu != null) { - if (overlayMenu.wrappedMenu.containsMouse(mouseX, mouseY)) { - TOOLTIPS.clear(); + if (!overlayMenu.inBounds.test(PointHelper.ofMouse())) { + closeOverlayMenu(); + } else { + if (overlayMenu.wrappedMenu.containsMouse(mouseX, mouseY)) { + TOOLTIPS.clear(); + } + overlayMenu.wrappedMenu.render(matrices, mouseX, mouseY, delta); } - overlayMenu.wrappedMenu.render(matrices, mouseX, mouseY, delta); } } Screen currentScreen = Minecraft.getInstance().screen; @@ -615,19 +591,23 @@ public class ContainerScreenOverlay extends REIOverlay { } public void renderTooltip(Pose |
