diff options
| author | shedaniel <daniel@shedaniel.me> | 2022-06-27 23:27:37 +0800 |
|---|---|---|
| committer | shedaniel <daniel@shedaniel.me> | 2023-05-29 21:06:52 +0800 |
| commit | e089c386b1dc73341a157aefb979bdbc232a0b98 (patch) | |
| tree | f428020757a077b219a8e94fcca7963b99c29061 /runtime/src/main/java | |
| parent | 055805e64285bb36133a727d761d111a17b916d2 (diff) | |
| download | RoughlyEnoughItems-e089c386b1dc73341a157aefb979bdbc232a0b98.tar.gz RoughlyEnoughItems-e089c386b1dc73341a157aefb979bdbc232a0b98.tar.bz2 RoughlyEnoughItems-e089c386b1dc73341a157aefb979bdbc232a0b98.zip | |
Add expanded view to tag trees, fix #948
Diffstat (limited to 'runtime/src/main/java')
13 files changed, 92 insertions, 63 deletions
diff --git a/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCoreClient.java b/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCoreClient.java index 73fb8c1cf..7e1a92728 100644 --- a/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCoreClient.java +++ b/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCoreClient.java @@ -413,7 +413,9 @@ public class RoughlyEnoughItemsCoreClient { if (shouldReturn(screen)) return; resetFocused(screen); - getOverlay().render(matrices, mouseX, mouseY, delta); + if (!(screen instanceof DisplayScreen)) { + getOverlay().render(matrices, mouseX, mouseY, delta); + } ((ScreenOverlayImpl) getOverlay()).lateRender(matrices, mouseX, mouseY, delta); 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 9ed29fd92..f73bea3fa 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 @@ -99,6 +99,13 @@ public class REIRuntimeImpl implements REIRuntime { } @Override + public void clearTooltips() { + if (overlay != null) { + overlay.clearTooltips(); + } + } + + @Override @Nullable public TextField getSearchTextField() { if (searchField == null) { 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 e6874c8ef..93c9adb00 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 @@ -732,10 +732,9 @@ public class ScreenOverlayImpl extends ScreenOverlay { } Screen currentScreen = Minecraft.getInstance().screen; if (choosePageWidget == null) { - for (Tooltip tooltip : TOOLTIPS) { - if (tooltip != null) - renderTooltip(matrices, tooltip); - } + TOOLTIPS.stream().filter(Objects::nonNull) + .reduce((tooltip, tooltip2) -> tooltip2) + .ifPresent(tooltip -> renderTooltip(matrices, tooltip)); } TOOLTIPS.clear(); if (REIRuntime.getInstance().isOverlayVisible()) { @@ -763,6 +762,10 @@ public class ScreenOverlayImpl extends ScreenOverlay { TOOLTIPS.add(tooltip); } + public void clearTooltips() { + TOOLTIPS.clear(); + } + public void renderWidgets(PoseStack matrices, int mouseX, int mouseY, float delta) { if (!REIRuntime.getInstance().isOverlayVisible()) return; diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/AbstractDisplayViewingScreen.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/AbstractDisplayViewingScreen.java index 7d9cffa63..b842c6f7a 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/AbstractDisplayViewingScreen.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/AbstractDisplayViewingScreen.java @@ -86,8 +86,11 @@ public abstract class AbstractDisplayViewingScreen extends Screen implements Dis } } - public List<GuiEventListener> _children() { - return (List<GuiEventListener>) children(); + @Override + public List<GuiEventListener> children() { + List<? extends GuiEventListener> children = super.children(); + children.sort(Comparator.comparingDouble(value -> value instanceof Widget widget ? widget.getZRenderingPriority() : 0).reversed()); + return (List<GuiEventListener>) children; } @Override @@ -243,7 +246,7 @@ public abstract class AbstractDisplayViewingScreen extends Screen implements Dis widget.tooltipProcessor(new TooltipProcessor()); } - private static ScreenOverlay getOverlay() { + protected static ScreenOverlay getOverlay() { return REIRuntime.getInstance().getOverlay().orElseThrow(() -> new IllegalStateException("Overlay not initialized!")); } diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/CompositeDisplayViewingScreen.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/CompositeDisplayViewingScreen.java index 97857d8dc..2df64cd27 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/CompositeDisplayViewingScreen.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/CompositeDisplayViewingScreen.java @@ -24,6 +24,7 @@ package me.shedaniel.rei.impl.client.gui.screen; import com.google.common.collect.Lists; +import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.vertex.PoseStack; import me.shedaniel.clothconfig2.ClothConfigInitializer; import me.shedaniel.clothconfig2.api.ScissorsHandler; @@ -229,9 +230,9 @@ public class CompositeDisplayViewingScreen extends AbstractDisplayViewingScreen ViewSearchBuilder.builder().addAllCategories().open(); }).tooltip(new TranslatableComponent("text.rei.view_all_categories")).noShadow().color(0xFF404040, 0xFFBBBBBB).hoveredColor(0xFF0041FF, 0xFFFFBD4D)); - this._children().addAll(buttonList); + this.children().addAll(buttonList); this.widgets.addAll(tabs); - this._children().addAll(widgets); + this.children().addAll(widgets); } @Override @@ -351,10 +352,12 @@ public class CompositeDisplayViewingScreen extends AbstractDisplayViewingScreen scrolling.updatePosition(delta); renderBackground(matrices); int yOffset = 0; + getOverlay().render(matrices, mouseX, mouseY, delta); + super.render(matrices, mouseX, mouseY, delta); for (Widget widget : widgets) { + RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F); widget.render(matrices, mouseX, mouseY, delta); } - super.render(matrices, mouseX, mouseY, delta); matrices.pushPose(); ScissorsHandler.INSTANCE.scissor(scrolling.getBounds()); for (Button button : buttonList) { diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/DefaultDisplayViewingScreen.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/DefaultDisplayViewingScreen.java index 46ddf61d7..3e3a16ff9 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/DefaultDisplayViewingScreen.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/DefaultDisplayViewingScreen.java @@ -84,10 +84,8 @@ import java.util.function.Supplier; @ApiStatus.Internal public class DefaultDisplayViewingScreen extends AbstractDisplayViewingScreen { public static final ResourceLocation CHEST_GUI_TEXTURE = new ResourceLocation("roughlyenoughitems", "textures/gui/recipecontainer.png"); - private final List<Widget> preWidgets = Lists.newArrayList(); - private final List<Widget> widgets = Lists.newArrayList(); private final Map<Rectangle, Pair<DisplaySpec, List<Widget>>> recipeBounds = Maps.newHashMap(); - private final List<TabWidget> tabs = Lists.newArrayList(); + private List<Widget> widgets = Lists.newArrayList(); public int page; public int categoryPages = -1; @Nullable @@ -148,8 +146,6 @@ public class DefaultDisplayViewingScreen extends AbstractDisplayViewingScreen { super.init(); this.children().clear(); this.recipeBounds.clear(); - this.tabs.clear(); - this.preWidgets.clear(); this.widgets.clear(); int largestHeight = Math.min(Math.max(height - 34 - 30, 100), ConfigObject.getInstance().getMaxRecipesPageHeight()); int maxWidthDisplay = CollectionUtils.<DisplaySpec, Integer>mapAndMax(getCurrentDisplayed(), display -> getCurrentCategory().getDisplayWidth(display.provideInternalDisplay()), Comparator.naturalOrder()).orElse(150); @@ -235,7 +231,7 @@ public class DefaultDisplayViewingScreen extends AbstractDisplayViewingScreen { int tabIndex = id + categoryPages * tabsPerPage; if (categories.size() > tabIndex) { TabWidget tab; - tabs.add(tab = TabWidget.create(id, tabSize, bounds.x + bounds.width / 2 - Math.min(categories.size() - categoryPages * tabsPerPage, tabsPerPage) * tabSize / 2, bounds.y, 0, isCompactTabs ? 166 : 192, widget -> { + widgets.add(tab = TabWidget.create(id, tabSize, bounds.x + bounds.width / 2 - Math.min(categories.size() - categoryPages * tabsPerPage, tabsPerPage) * tabSize / 2, bounds.y, 0, isCompactTabs ? 166 : 192, widget -> { Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.UI_BUTTON_CLICK, 1.0F)); if (widget.getId() + categoryPages * tabsPerPage == selectedCategoryIndex) return false; @@ -246,11 +242,15 @@ public class DefaultDisplayViewingScreen extends AbstractDisplayViewingScreen { } } initDisplays(); - initWorkstations(preWidgets); + widgets = CollectionUtils.map(widgets, widget -> Widgets.withTranslate(widget, 0, 0, 10)); + widgets.add(Widgets.withTranslate(new PanelWidget(bounds), 0, 0, 5)); + widgets.add(Widgets.withTranslate(Widgets.createDrawableWidget((helper, matrices, mouseX, mouseY, delta) -> { + fill(matrices, bounds.x + 17, bounds.y + 5, bounds.x + bounds.width - 17, bounds.y + 17, darkStripesColor.value().getColor()); + fill(matrices, bounds.x + 17, bounds.y + 19, bounds.x + bounds.width - 17, bounds.y + 31, darkStripesColor.value().getColor()); + }), 0, 0, 6)); + initWorkstations(widgets); - _children().addAll(tabs); - _children().addAll(widgets); - _children().addAll(preWidgets); + children().addAll(widgets); } private void initDisplays() { @@ -287,7 +287,7 @@ public class DefaultDisplayViewingScreen extends AbstractDisplayViewingScreen { } } - private void initWorkstations(List<Widget> preWidgets) { + private void initWorkstations(List<Widget> widgets) { workingStationsBaseWidget = null; List<EntryIngredient> workstations = CategoryRegistry.getInstance().get(getCurrentCategoryId()).getWorkstations(); if (!workstations.isEmpty()) { @@ -296,12 +296,12 @@ public class DefaultDisplayViewingScreen extends AbstractDisplayViewingScreen { int innerWidth = Mth.ceil(workstations.size() / ((float) hh)); int xx = bounds.x - (8 + innerWidth * 16) + 6; int yy = bounds.y + 16; - preWidgets.add(workingStationsBaseWidget = Widgets.createCategoryBase(new Rectangle(xx - 5, yy - 5, 15 + innerWidth * 16, 10 + actualHeight * 16))); - preWidgets.add(Widgets.createSlotBase(new Rectangle(xx - 1, yy - 1, innerWidth * 16 + 2, actualHeight * 16 + 2))); + widgets.add(workingStationsBaseWidget = Widgets.createCategoryBase(new Rectangle(xx - 5, yy - 5, 15 + innerWidth * 16, 10 + actualHeight * 16))); + widgets.add(Widgets.createSlotBase(new Rectangle(xx - 1, yy - 1, innerWidth * 16 + 2, actualHeight * 16 + 2))); int index = 0; xx += (innerWidth - 1) * 16; for (EntryIngredient workingStation : workstations) { - preWidgets.add(new WorkstationSlotWidget(xx, yy, workingStation)); + widgets.add(new WorkstationSlotWidget(xx, yy, workingStation)); index++; yy += 16; if (index >= hh) { @@ -313,7 +313,8 @@ public class DefaultDisplayViewingScreen extends AbstractDisplayViewingScreen { } } - public List<Widget> getWidgets() { + public List<Widget> widgets() { + widgets.sort(Comparator.comparingDouble(Widget::getZRenderingPriority)); return widgets; } @@ -355,31 +356,16 @@ public class DefaultDisplayViewingScreen extends AbstractDisplayViewingScreen { public void render(PoseStack matrices, int mouseX, int mouseY, float delta) { darkStripesColor.update(delta); renderBackground(matrices); - for (Widget widget : preWidgets) { - widget.render(matrices, mouseX, mouseY, delta); - } - PanelWidget.render(matrices, bounds, -1, delta); - fill(matrices, bounds.x + 17, bounds.y + 5, bounds.x + bounds.width - 17, bounds.y + 17, darkStripesColor.value().getColor()); - fill(matrices, bounds.x + 17, bounds.y + 19, bounds.x + bounds.width - 17, bounds.y + 31, darkStripesColor.value().getColor()); - for (TabWidget tab : tabs) { - if (!tab.isSelected()) { - tab.render(matrices, mouseX, mouseY, delta); - } - } super.render(matrices, mouseX, mouseY, delta); - for (Widget widget : widgets) { + getOverlay().render(matrices, mouseX, mouseY, delta); + for (Widget widget : widgets()) { + RenderSystem.color4f(1.0F, 1.0F, 1.0F, 1.0F); widget.render(matrices, mouseX, mouseY, delta); } - RenderSystem.color4f(1.0F, 1.0F, 1.0F, 1.0F); - for (TabWidget tab : tabs) { - if (tab.isSelected()) { - tab.render(matrices, mouseX, mouseY, delta); - } - } { ModifierKeyCode export = ConfigObject.getInstance().getExportImageKeybind(); if (export.matchesCurrentKey() || export.matchesCurrentMouse()) { - for (Rectangle bounds : Iterables.concat(recipeBounds.keySet(), Iterables.transform(tabs, TabWidget::getBounds))) { + for (Rectangle bounds : Iterables.concat(recipeBounds.keySet(), Iterables.transform(getTabs(), TabWidget::getBounds))) { setBlitOffset(470); if (bounds.contains(mouseX, mouseY)) { fillGradient(matrices, bounds.x, bounds.y, bounds.getMaxX(), bounds.getMaxY(), 1744822402, 1744822402); @@ -400,6 +386,10 @@ public class DefaultDisplayViewingScreen extends AbstractDisplayViewingScreen { } } + private Iterable<TabWidget> getTabs() { + return Widgets.walk(widgets(), widget -> widget instanceof TabWidget); + } + @Override public boolean keyReleased(int keyCode, int scanCode, int modifiers) { ModifierKeyCode export = ConfigObject.getInstance().getExportImageKeybind(); @@ -418,19 +408,19 @@ public class DefaultDisplayViewingScreen extends AbstractDisplayViewingScreen { } @Override - public boolean charTyped(char char_1, int int_1) { + public boolean charTyped(char character, int modifiers) { for (GuiEventListener listener : children()) - if (listener.charTyped(char_1, int_1)) + if (listener.charTyped(character, modifiers)) return true; - return super.charTyped(char_1, int_1); + return super.charTyped(character, modifiers); } @Override - public boolean mouseDragged(double double_1, double double_2, int int_1, double double_3, double double_4) { + public boolean mouseDragged(double mouseX, double mouseY, int button, double deltaX, double deltaY) { for (GuiEventListener entry : children()) - if (entry.mouseDragged(double_1, double_2, int_1, double_3, double_4)) + if (entry.mouseDragged(mouseX, mouseY, button, deltaX, deltaY)) return true; - return super.mouseDragged(double_1, double_2, int_1, double_3, double_4); + return super.mouseDragged(mouseX, mouseY, button, deltaX, deltaY); } @Override @@ -453,7 +443,7 @@ public class DefaultDisplayViewingScreen extends AbstractDisplayViewingScreen { return true; } } - for (TabWidget tab : tabs) { + for (TabWidget tab : getTabs()) { Rectangle bounds = tab.getBounds(); if (bounds.contains(PointHelper.ofMouse())) { minecraft.setScreen(new ConfirmScreen(confirmed -> { @@ -477,7 +467,7 @@ public class DefaultDisplayViewingScreen extends AbstractDisplayViewingScreen { transformFiltering(setupDisplay); transformIngredientNotice(setupDisplay, ingredientStackToNotice); transformResultNotice(setupDisplay, resultStackToNotice); - for (EntryWidget widget : Widgets.<EntryWidget>walk(widgets, EntryWidget.class::isInstance)) { + for (EntryWidget widget : Widgets.<EntryWidget>walk(widgets(), EntryWidget.class::isInstance)) { widget.removeTagMatch = true; } @@ -551,5 +541,4 @@ public class DefaultDisplayViewingScreen extends AbstractDisplayViewingScreen { return getInnerBounds().contains(mouseX, mouseY); } } - } diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/DelegateWidgetWithTranslate.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/DelegateWidgetWithTranslate.java index 582a01830..9daf12aa2 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/DelegateWidgetWithTranslate.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/DelegateWidgetWithTranslate.java @@ -26,7 +26,6 @@ package me.shedaniel.rei.impl.client.gui.widget; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.math.Matrix4f; import com.mojang.math.Transformation; -import com.mojang.math.Vector3f; import com.mojang.math.Vector4f; import me.shedaniel.rei.api.client.gui.widgets.DelegateWidget; import me.shedaniel.rei.api.client.gui.widgets.Widget; @@ -127,4 +126,10 @@ public class DelegateWidgetWithTranslate extends DelegateWidget { Widget.popMouse(); } } + + @Override + public double getZRenderingPriority() { + Transformation transformation = new Transformation(translate()); + return transformation.getTranslation().z() + super.getZRenderingPriority(); + } }
\ No newline at end of file diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/MergedWidget.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/MergedWidget.java index ecb5bc287..01ceb32d0 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/MergedWidget.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/MergedWidget.java @@ -26,8 +26,11 @@ package me.shedaniel.rei.impl.client.gui.widget; import com.google.common.collect.Lists; import com.mojang.blaze3d.vertex.PoseStack; import me.shedaniel.rei.api.client.gui.widgets.Widget; +import me.shedaniel.rei.api.client.gui.widgets.Widgets; +import me.shedaniel.rei.api.common.util.CollectionUtils; import net.minecraft.client.gui.components.events.GuiEventListener; +import java.util.Comparator; import java.util.List; import java.util.Objects; @@ -108,4 +111,10 @@ public class MergedWidget extends Widget { } return false; } + + @Override + public double getZRenderingPriority() { + return CollectionUtils.max(widgets, Comparator.comparingDouble(Widget::getZRenderingPriority)) + .map(Widget::getZRenderingPriority).orElse(0.0); + } }
\ No newline at end of file diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/OverflowWidget.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/OverflowWidget.java index b46640493..b47eac3df 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/OverflowWidget.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/OverflowWidget.java @@ -48,7 +48,7 @@ public class OverflowWidget extends DelegateWidgetWithTranslate { this.scale = ValueAnimator.ofFloat() .setAs(1f); this.translate = ValueAnimator.ofFloatingPoint() - .setAs(new FloatingPoint(-widget.getBounds().width / 2f, -widget.getBounds().height / 2f)); + .setAs(new FloatingPoint(-widget.getBounds().width / 2f, -bounds.height / 2f)); this.velocity = ValueAnimator.ofFloatingPoint() .setAs(new FloatingPoint(0f, 0f)); } @@ -64,7 +64,7 @@ public class OverflowWidget extends DelegateWidgetWithTranslate { @Override public void render(PoseStack poseStack, int mouseX, int mouseY, float delta) { - Rectangle widgetBounds = ((WidgetWithBounds) widget).getBounds(); + Rectangle widgetBounds = ((WidgetWithBounds) delegate()).getBounds(); this.scale.update(delta); this.scale.setTarget(ScrollingContainer.handleBounceBack(this.scale.target() - 0.78, Math.min(widgetBounds.width * 1.0F / getBounds().width, widgetBounds.height * 1.0F / getBounds().height) - 0.78, delta, .001) + 0.78); @@ -120,8 +120,11 @@ public class OverflowWidget extends DelegateWidgetWithTranslate { @Override public boolean mouseClicked(double mouseX, double mouseY, int button) { if (super.mouseClicked(mouseX, mouseY, button)) return true; - if (containsMouse(mouseX, mouseY) && button == 0) { - dragging = true; + if (containsMouse(mouseX, mouseY)) { + if (button == 0) { + dragging = true; + } + return true; } diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/PaddedCenterWidget.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/PaddedCenterWidget.java index 7848fa7f0..6dca02880 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/PaddedCenterWidget.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/PaddedCenterWidget.java @@ -37,7 +37,7 @@ public class PaddedCenterWidget extends DelegateWidgetWithTranslate { @Override protected Matrix4f translate() { - Rectangle widgetBounds = ((WidgetWithBounds) widget).getBounds(); + Rectangle widgetBounds = ((WidgetWithBounds) delegate()).getBounds(); float xTranslate = 0, yTranslate = 0; if (widgetBounds.width < bounds.width) { xTranslate = (bounds.width - widgetBounds.width) / 2f; @@ -50,7 +50,7 @@ public class PaddedCenterWidget extends DelegateWidgetWithTranslate { @Override public Rectangle getBounds() { - Rectangle widgetBounds = ((WidgetWithBounds) widget).getBounds(); + Rectangle widgetBounds = ((WidgetWithBounds) delegate()).getBounds(); int newWidth = Math.max(widgetBounds.width, bounds.width); int newHeight = Math.max(widgetBounds.height, bounds.height); return new Rectangle(bounds.getCenterX() - newWidth / 2f, bounds.getCenterY() - newHeight / 2f, newWidth, newHeight); diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/PaddedWidget.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/PaddedWidget.java index 4151ffb45..42a10c70b 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/PaddedWidget.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/PaddedWidget.java @@ -45,7 +45,7 @@ public class PaddedWidget extends DelegateWidgetWithTranslate { @Override public Rectangle getBounds() { - Rectangle widgetBounds = ((WidgetWithBounds) widget).getBounds(); + Rectangle widgetBounds = ((WidgetWithBounds) delegate()).getBounds(); return new Rectangle(widgetBounds.x - padLeft, widgetBounds.y - padTop, widgetBounds.width + padLeft + padRight, widgetBounds.height + padTop + padBottom); } } diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/TabWidget.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/TabWidget.java index 87ff8e743..dad09c0ce 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/TabWidget.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/TabWidget.java @@ -150,6 +150,11 @@ public class TabWidget extends WidgetWithBounds implements DraggableStackProvide } @Override + public double getZRenderingPriority() { + return selected ? 10 : -10; + } + + @Override @Nullable public DraggableStack getHoveredStack(DraggingContext<Screen> context, double mouseX, double mouseY) { if (isShown() && renderer instanceof EntryStack<?> && containsMouse(mouseX, mouseY)) { diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/basewidgets/ButtonWidget.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/basewidgets/ButtonWidget.java index f462a12b9..1715370aa 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/basewidgets/ButtonWidget.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/basewidgets/ButtonWidget.java @@ -76,7 +76,7 @@ public class ButtonWidget extends Button { private ValueProvider<Double> alpha; public ButtonWidget(Rectangle rectangle, Component text) { - this.bounds = new Rectangle(Objects.requireNonNull(rectangle)); + this.bounds = Objects.requireNonNull(rectangle); this.text = Objects.requireNonNull(text); this.darkBackground = ValueAnimator.ofColor() .withConvention(() -> Color.ofTransparent(REIRuntime.getInstance().isDarkThemeEnabled() ? 0xFFFFFFFF : 0x00FFFFFF), ValueAnimator.typicalTransitionTime()); |
