diff options
| author | shedaniel <daniel@shedaniel.me> | 2022-08-28 20:48:46 +0900 |
|---|---|---|
| committer | shedaniel <daniel@shedaniel.me> | 2022-08-28 21:14:21 +0900 |
| commit | fb91ed996b01f986492de4007cb86be5e68ad192 (patch) | |
| tree | b1176be6374ac6d56094c9bcf2b48226b31e68ec /runtime-frontend | |
| parent | 94e323f75c17e297c33fba1d3afb5c47ae66a8ad (diff) | |
| download | RoughlyEnoughItems-fb91ed996b01f986492de4007cb86be5e68ad192.tar.gz RoughlyEnoughItems-fb91ed996b01f986492de4007cb86be5e68ad192.tar.bz2 RoughlyEnoughItems-fb91ed996b01f986492de4007cb86be5e68ad192.zip | |
More internal changes
Diffstat (limited to 'runtime-frontend')
34 files changed, 883 insertions, 271 deletions
diff --git a/runtime-frontend/favorites-entries/src/main/java/me/shedaniel/rei/impl/client/gui/widget/favorites/panel/rows/FavoritesPanelEntriesRow.java b/runtime-frontend/favorites-entries/src/main/java/me/shedaniel/rei/impl/client/gui/widget/favorites/panel/rows/FavoritesPanelEntriesRow.java index 1d492deb2..9f281e022 100644 --- a/runtime-frontend/favorites-entries/src/main/java/me/shedaniel/rei/impl/client/gui/widget/favorites/panel/rows/FavoritesPanelEntriesRow.java +++ b/runtime-frontend/favorites-entries/src/main/java/me/shedaniel/rei/impl/client/gui/widget/favorites/panel/rows/FavoritesPanelEntriesRow.java @@ -35,6 +35,7 @@ import me.shedaniel.rei.api.client.gui.drag.DraggableStack; import me.shedaniel.rei.api.client.gui.widgets.Slot; import me.shedaniel.rei.api.client.gui.widgets.Tooltip; import me.shedaniel.rei.api.client.gui.widgets.Widgets; +import me.shedaniel.rei.api.client.overlay.ScreenOverlay; import me.shedaniel.rei.api.client.util.ClientEntryStacks; import me.shedaniel.rei.api.common.entry.EntryStack; import me.shedaniel.rei.api.common.util.CollectionUtils; @@ -52,8 +53,7 @@ import java.util.AbstractList; import java.util.List; import java.util.function.Predicate; -import static me.shedaniel.rei.impl.client.gui.overlay.InternalOverlayBounds.entrySize; -import static me.shedaniel.rei.impl.client.gui.widget.entrylist.EntryListWidget.notSteppingOnExclusionZones; +import static me.shedaniel.rei.impl.client.util.InternalEntryBounds.entrySize; @SuppressWarnings("UnstableApiUsage") public class FavoritesPanelEntriesRow extends FavoritesPanelRow { @@ -210,7 +210,7 @@ public class FavoritesPanelEntriesRow extends FavoritesPanelRow { currentY++; } - if (notSteppingOnExclusionZones(xPos, yPos + lastY - panel.getScrolledAmountInt(), entrySize, entrySize)) { + if (ScreenOverlay.getInstance().get().isNotInExclusionZones(new Rectangle(xPos, yPos + lastY - panel.getScrolledAmountInt(), entrySize, entrySize))) { widget.moveTo(animated.test(widget), xPos, yPos); break; } else { diff --git a/runtime-frontend/favorites-entries/src/main/java/me/shedaniel/rei/impl/client/gui/widget/region/EntryStacksRegionWidget.java b/runtime-frontend/favorites-entries/src/main/java/me/shedaniel/rei/impl/client/gui/widget/region/EntryStacksRegionWidget.java index 962a32d9d..942e7d8cf 100644 --- a/runtime-frontend/favorites-entries/src/main/java/me/shedaniel/rei/impl/client/gui/widget/region/EntryStacksRegionWidget.java +++ b/runtime-frontend/favorites-entries/src/main/java/me/shedaniel/rei/impl/client/gui/widget/region/EntryStacksRegionWidget.java @@ -56,7 +56,7 @@ import java.util.function.Predicate; import java.util.stream.Collectors; import java.util.stream.Stream; -import static me.shedaniel.rei.impl.client.gui.overlay.InternalOverlayBounds.entrySize; +import static me.shedaniel.rei.impl.client.util.InternalEntryBounds.entrySize; public class EntryStacksRegionWidget<T extends RegionEntry<T>> extends WidgetWithBounds implements DraggableStackProviderWidget, DraggableStackVisitorWidget { public final RegionListener<T> listener; diff --git a/runtime-frontend/favorites-entries/src/main/java/me/shedaniel/rei/impl/client/gui/widget/region/RealRegionEntry.java b/runtime-frontend/favorites-entries/src/main/java/me/shedaniel/rei/impl/client/gui/widget/region/RealRegionEntry.java index 6ed75075e..062e2bfbc 100644 --- a/runtime-frontend/favorites-entries/src/main/java/me/shedaniel/rei/impl/client/gui/widget/region/RealRegionEntry.java +++ b/runtime-frontend/favorites-entries/src/main/java/me/shedaniel/rei/impl/client/gui/widget/region/RealRegionEntry.java @@ -30,7 +30,7 @@ import me.shedaniel.rei.api.client.config.ConfigObject; import me.shedaniel.rei.api.client.entry.region.RegionEntry; import me.shedaniel.rei.api.client.gui.widgets.Slot; -import static me.shedaniel.rei.impl.client.gui.overlay.InternalOverlayBounds.entrySize; +import static me.shedaniel.rei.impl.client.util.InternalEntryBounds.entrySize; @SuppressWarnings("UnstableApiUsage") public class RealRegionEntry<T extends RegionEntry<T>> { diff --git a/runtime-frontend/favorites-entries/src/main/java/me/shedaniel/rei/impl/client/gui/widget/region/RegionEntryWidget.java b/runtime-frontend/favorites-entries/src/main/java/me/shedaniel/rei/impl/client/gui/widget/region/RegionEntryWidget.java index edce563aa..2df833fcf 100644 --- a/runtime-frontend/favorites-entries/src/main/java/me/shedaniel/rei/impl/client/gui/widget/region/RegionEntryWidget.java +++ b/runtime-frontend/favorites-entries/src/main/java/me/shedaniel/rei/impl/client/gui/widget/region/RegionEntryWidget.java @@ -33,14 +33,13 @@ import me.shedaniel.rei.api.client.favorites.FavoriteMenuEntry; import me.shedaniel.rei.api.client.gui.widgets.Slot; import me.shedaniel.rei.api.client.gui.widgets.Widgets; import me.shedaniel.rei.api.client.overlay.ScreenOverlay; -import me.shedaniel.rei.api.common.util.CollectionUtils; import me.shedaniel.rei.impl.client.gui.menu.MenuAccess; -import me.shedaniel.rei.impl.client.gui.menu.MenuEntry; import me.shedaniel.rei.impl.client.gui.overlay.AbstractScreenOverlay; import me.shedaniel.rei.impl.client.gui.overlay.widgets.DisplayedEntryWidget; -import net.minecraft.client.gui.components.events.GuiEventListener; -import java.util.*; +import java.util.Collection; +import java.util.Optional; +import java.util.UUID; import java.util.function.Supplier; @SuppressWarnings("UnstableApiUsage") @@ -75,51 +74,10 @@ public class RegionEntryWidget<T extends RegionEntry<T>> extends DisplayedEntryW MenuAccess access = overlay.menuAccess(); UUID uuid = entry.getEntry().getUuid(); - access.openOrClose(uuid, slot.getBounds(), () -> - CollectionUtils.map(menuEntries.get().get(), entry -> convertMenu(overlay, entry))); + access.openOrClose(uuid, slot.getBounds(), menuEntries.get()); } } - private MenuEntry convertMenu(AbstractScreenOverlay overlay, FavoriteMenuEntry entry) { - return new MenuEntry() { - @Override - public List<? extends GuiEventListener> children() { - return Collections.singletonList(entry); - } - - @Override - public void render(PoseStack poseStack, int i, int j, float f) { - entry.render(poseStack, i, j, f); - } - - @Override - public int getEntryWidth() { - return entry.getEntryWidth(); - } - - @Override - public int getEntryHeight() { - return entry.getEntryHeight(); - } - - @Override - public void updateInformation(int xPos, int yPos, boolean selected, boolean containsMouse, boolean rendering, int width) { - entry.closeMenu = overlay.menuAccess()::close; - entry.updateInformation(xPos, yPos, selected, containsMouse, rendering, width); - } - - @Override - public int getZ() { - return entry.getZ(); - } - - @Override - public void setZ(int z) { - entry.setZ(z); - } - }; - } - @Override public boolean doMouse(Slot slot, double mouseX, double mouseY, int button) { return entry.getEntry().doAction(button) || super.doMouse(slot, mouseX, mouseY, button); diff --git a/runtime-frontend/favorites-entries/src/main/java/me/shedaniel/rei/impl/client/gui/widget/region/RegionListener.java b/runtime-frontend/favorites-entries/src/main/java/me/shedaniel/rei/impl/client/gui/widget/region/RegionListener.java index 7ef8917ed..4f77e9782 100644 --- a/runtime-frontend/favorites-entries/src/main/java/me/shedaniel/rei/impl/client/gui/widget/region/RegionListener.java +++ b/runtime-frontend/favorites-entries/src/main/java/me/shedaniel/rei/impl/client/gui/widget/region/RegionListener.java @@ -23,11 +23,12 @@ package me.shedaniel.rei.impl.client.gui.widget.region; +import me.shedaniel.math.Rectangle; import me.shedaniel.rei.api.client.entry.region.RegionEntry; import me.shedaniel.rei.api.client.favorites.FavoriteEntry; import me.shedaniel.rei.api.client.gui.drag.DraggableStack; import me.shedaniel.rei.api.client.gui.drag.DraggingContext; -import me.shedaniel.rei.impl.client.gui.widget.entrylist.EntryListWidget; +import me.shedaniel.rei.api.client.overlay.ScreenOverlay; import net.minecraft.client.gui.screens.Screen; import org.jetbrains.annotations.Nullable; @@ -70,6 +71,6 @@ public interface RegionListener<T extends RegionEntry<T>> { default void onConsumed(RealRegionEntry<T> entry) {} default boolean notSteppingOnExclusionZones(int left, int top, int width, int height) { - return EntryListWidget.notSteppingOnExclusionZones(left, top, width, height); + return ScreenOverlay.getInstance().get().isNotInExclusionZones(new Rectangle(left, top, width, height)); } } diff --git a/runtime-frontend/overlay-entries/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/entries/CollapsedEntriesTooltip.java b/runtime-frontend/overlay-entries/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/entries/CollapsedEntriesTooltip.java index 264ac057e..9521c2e5b 100644 --- a/runtime-frontend/overlay-entries/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/entries/CollapsedEntriesTooltip.java +++ b/runtime-frontend/overlay-entries/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/entries/CollapsedEntriesTooltip.java @@ -37,7 +37,7 @@ import net.minecraft.network.chat.TextComponent; import net.minecraft.util.Mth; import net.minecraft.world.inventory.tooltip.TooltipComponent; -import static me.shedaniel.rei.impl.client.gui.overlay.InternalOverlayBounds.entrySize; +import static me.shedaniel.rei.impl.client.util.InternalEntryBounds.entrySize; public class CollapsedEntriesTooltip implements ClientTooltipComponent, TooltipComponent { private static final int MAX_WIDTH = 140; diff --git a/runtime-frontend/overlay-entries/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/entries/EntryListStackEntry.java b/runtime-frontend/overlay-entries/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/entries/EntryListStackEntry.java index e1ec62fa4..a093050f5 100644 --- a/runtime-frontend/overlay-entries/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/entries/EntryListStackEntry.java +++ b/runtime-frontend/overlay-entries/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/entries/EntryListStackEntry.java @@ -49,7 +49,7 @@ import org.jetbrains.annotations.Nullable; import java.util.List; -import static me.shedaniel.rei.impl.client.gui.overlay.InternalOverlayBounds.entrySize; +import static me.shedaniel.rei.impl.client.util.InternalEntryBounds.entrySize; @SuppressWarnings("UnstableApiUsage") public class EntryListStackEntry extends DisplayedEntryWidget { diff --git a/runtime-frontend/overlay-entries/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/entries/EntryListWidgetImpl.java b/runtime-frontend/overlay-entries/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/entries/EntryListWidgetImpl.java index 8fd0d1bd7..c9c4b3d85 100644 --- a/runtime-frontend/overlay-entries/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/entries/EntryListWidgetImpl.java +++ b/runtime-frontend/overlay-entries/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/entries/EntryListWidgetImpl.java @@ -24,8 +24,6 @@ package me.shedaniel.rei.impl.client.gui.overlay.entries; import com.mojang.blaze3d.vertex.PoseStack; -import me.shedaniel.clothconfig2.api.animator.NumberAnimator; -import me.shedaniel.clothconfig2.api.animator.ValueAnimator; import me.shedaniel.math.Point; import me.shedaniel.math.Rectangle; import me.shedaniel.rei.api.client.ClientHelper; @@ -54,7 +52,6 @@ import me.shedaniel.rei.impl.client.gui.overlay.widgets.ScaleIndicatorWidget; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.screens.Screen; import net.minecraft.client.player.LocalPlayer; -import net.minecraft.network.chat.TextComponent; import net.minecraft.network.chat.TranslatableComponent; import net.minecraft.util.Mth; import net.minecraft.world.InteractionResult; @@ -64,7 +61,7 @@ import org.jetbrains.annotations.Nullable; import java.util.List; -import static me.shedaniel.rei.impl.client.gui.overlay.InternalOverlayBounds.entrySize; +import static me.shedaniel.rei.impl.client.util.InternalEntryBounds.entrySize; @ApiStatus.Internal public abstract class EntryListWidgetImpl extends WidgetWithBounds implements EntryListWidget, DraggableStackVisitorWidget { @@ -75,28 +72,8 @@ public abstract class EntryListWidgetImpl extends WidgetWithBounds implements En private final ScaleIndicatorWidget scaleIndicator = new ScaleIndicatorWidget(); public static boolean notSteppingOnExclusionZones(int left, int top, int width, int height) { - Minecraft instance = Minecraft.getInstance(); - for (OverlayDecider decider : ScreenRegistry.getInstance().getDeciders(instance.screen)) { - InteractionResult fit = canItemSlotWidgetFit(left, top, width, height, decider); - if (fit != InteractionResult.PASS) - return fit == InteractionResult.SUCCESS; - } - return true; - } - - private static InteractionResult canItemSlotWidgetFit(int left, int top, int width, int height, OverlayDecider decider) { - InteractionResult fit; - fit = decider.isInZone(left, top); - if (fit != InteractionResult.PASS) - return fit; - fit = decider.isInZone(left + width, top); - if (fit != InteractionResult.PASS) - return fit; - fit = decider.isInZone(left, top + height); - if (fit != InteractionResult.PASS) - return fit; - fit = decider.isInZone(left + width, top + height); - return fit; + ScreenOverlay overlay = ScreenOverlay.getInstance().get(); + return overlay.isNotInExclusionZones(new Rectangle(left, top, width, height)); } private boolean containsChecked(Point point, boolean inner) { diff --git a/runtime-frontend/overlay-entries/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/entries/scrolled/ScrolledEntryListWidget.java b/runtime-frontend/overlay-entries/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/entries/scrolled/ScrolledEntryListWidget.java index d539c4848..cda032b0d 100644 --- a/runtime-frontend/overlay-entries/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/entries/scrolled/ScrolledEntryListWidget.java +++ b/runtime-frontend/overlay-entries/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/entries/scrolled/ScrolledEntryListWidget.java @@ -48,7 +48,7 @@ import java.util.Collections; import java.util.List; import java.util.stream.Stream; -import static me.shedaniel.rei.impl.client.gui.overlay.InternalOverlayBounds.entrySize; +import static me.shedaniel.rei.impl.client.util.InternalEntryBounds.entrySize; public class ScrolledEntryListWidget extends CollapsingEntryListWidget { private List</*EntryStack<?> | EntryIngredient*/ Object> stacks = new ArrayList<>(); diff --git a/runtime-frontend/overlay-entries/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/widgets/ConfigButtonWidget.java b/runtime-frontend/overlay-entries/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/widgets/ConfigButtonWidgetProvider.java index faffe97dd..eabe883a5 100644 --- a/runtime-frontend/overlay-entries/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/widgets/ConfigButtonWidget.java +++ b/runtime-frontend/overlay-entries/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/widgets/ConfigButtonWidgetProvider.java @@ -30,6 +30,7 @@ import me.shedaniel.rei.api.client.ClientHelper; import me.shedaniel.rei.api.client.REIRuntime; import me.shedaniel.rei.api.client.config.ConfigManager; import me.shedaniel.rei.api.client.config.ConfigObject; +import me.shedaniel.rei.api.client.favorites.FavoriteMenuEntry; import me.shedaniel.rei.api.client.gui.config.AppearanceTheme; import me.shedaniel.rei.api.client.gui.config.DisplayPanelLocation; import me.shedaniel.rei.api.client.gui.config.SyntaxHighlightingMode; @@ -43,8 +44,7 @@ import me.shedaniel.rei.api.common.networking.NetworkingHelper; import me.shedaniel.rei.impl.client.config.ConfigManagerInternal; import me.shedaniel.rei.impl.client.gui.InternalTextures; import me.shedaniel.rei.impl.client.gui.menu.MenuAccess; -import me.shedaniel.rei.impl.client.gui.menu.MenuEntry; -import me.shedaniel.rei.impl.client.gui.menu.entries.*; +import me.shedaniel.rei.impl.client.gui.overlay.menu.entries.*; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.chat.NarratorChatListener; import net.minecraft.client.gui.screens.Screen; @@ -56,7 +56,7 @@ import java.util.UUID; import java.util.function.Consumer; import java.util.function.UnaryOperator; -public class ConfigButtonWidget implements OverlayWidgetProvider { +public class ConfigButtonWidgetProvider implements OverlayWidgetProvider { private static final UUID CONFIG_MENU_UUID = UUID.fromString("4357bc36-0a4e-47d2-8e07-ddc220df4a0f"); @Override @@ -81,7 +81,7 @@ public class ConfigButtonWidget implements OverlayWidgetProvider { button.removeTint(); } - access.openOrClose(CONFIG_MENU_UUID, button.getBounds(), ConfigButtonWidget::menuEntries); + access.openOrClose(CONFIG_MENU_UUID, button.getBounds(), ConfigButtonWidgetProvider::menuEntries); }) .focusable(false) .containsMousePredicate((button, point) -> button.getBounds().contains(point) && overlay.isNotInExclusionZones(point.x, point.y)); @@ -94,7 +94,7 @@ public class ConfigButtonWidget implements OverlayWidgetProvider { return lateRenderable.apply(Widgets.concat(configButton, overlayWidget)); } - private static Collection<MenuEntry> menuEntries() { + private static Collection<FavoriteMenuEntry> menuEntries() { ConfigManagerInternal manager = ConfigManagerInternal.getInstance(); ConfigObject config = ConfigObject.getInstance(); return List.of( diff --git a/runtime-frontend/overlay-entries/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/widgets/CraftableFilterButtonWidget.java b/runtime-frontend/overlay-entries/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/widgets/CraftableFilterButtonWidgetProvider.java index 63ff5fd0d..f5fbc42a0 100644 --- a/runtime-frontend/overlay-entries/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/widgets/CraftableFilterButtonWidget.java +++ b/runtime-frontend/overlay-entries/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/widgets/CraftableFilterButtonWidgetProvider.java @@ -28,6 +28,7 @@ import me.shedaniel.math.Rectangle; import me.shedaniel.rei.api.client.REIRuntime; import me.shedaniel.rei.api.client.config.ConfigManager; import me.shedaniel.rei.api.client.config.ConfigObject; +import me.shedaniel.rei.api.client.favorites.FavoriteMenuEntry; import me.shedaniel.rei.api.client.gui.config.SearchFieldLocation; import me.shedaniel.rei.api.client.gui.widgets.*; import me.shedaniel.rei.api.client.overlay.OverlayListWidget; @@ -37,9 +38,8 @@ import me.shedaniel.rei.api.client.search.method.InputMethodRegistry; import me.shedaniel.rei.api.common.util.CollectionUtils; import me.shedaniel.rei.impl.client.config.ConfigManagerInternal; import me.shedaniel.rei.impl.client.gui.menu.MenuAccess; -import me.shedaniel.rei.impl.client.gui.menu.MenuEntry; -import me.shedaniel.rei.impl.client.gui.menu.entries.SubMenuEntry; -import me.shedaniel.rei.impl.client.gui.menu.entries.ToggleMenuEntry; +import me.shedaniel.rei.impl.client.gui.overlay.menu.entries.SubMenuEntry; +import me.shedaniel.rei.impl.client.gui.overlay.menu.entries.ToggleMenuEntry; import me.shedaniel.rei.impl.client.gui.screen.ConfigReloadingScreen; import me.shedaniel.rei.impl.common.InternalLogger; import net.minecraft.client.Minecraft; @@ -59,7 +59,7 @@ import java.util.concurrent.Executors; import java.util.function.Consumer; import java.util.function.UnaryOperator; -public class CraftableFilterButtonWidget implements OverlayWidgetProvider { +public class CraftableFilterButtonWidgetProvider implements OverlayWidgetProvider { public static final UUID FILTER_MENU_UUID = UUID.fromString("2839e998-1679-4f9e-a257-37411d16f1e6"); @Override @@ -84,7 +84,7 @@ public class CraftableFilterButtonWidget implements OverlayWidgetProvider { .onRender((matrices, button) -> { button.setTint(ConfigManager.getInstance().isCraftableOnlyEnabled() ? 0x3800d907 : 0x38ff0000); - access.openOrClose(FILTER_MENU_UUID, button.getBounds(), CraftableFilterButtonWidget::menuEntries); + access.openOrClose(FILTER_MENU_UUID, button.getBounds(), CraftableFilterButtonWidgetProvider::menuEntries); }) .containsMousePredicate((button, |
