aboutsummaryrefslogtreecommitdiff
path: root/runtime/src/main/java
diff options
context:
space:
mode:
authorshedaniel <daniel@shedaniel.me>2022-06-27 23:27:37 +0800
committershedaniel <daniel@shedaniel.me>2023-05-29 21:06:52 +0800
commite089c386b1dc73341a157aefb979bdbc232a0b98 (patch)
treef428020757a077b219a8e94fcca7963b99c29061 /runtime/src/main/java
parent055805e64285bb36133a727d761d111a17b916d2 (diff)
downloadRoughlyEnoughItems-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')
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCoreClient.java4
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/REIRuntimeImpl.java7
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/ScreenOverlayImpl.java11
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/AbstractDisplayViewingScreen.java9
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/CompositeDisplayViewingScreen.java9
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/DefaultDisplayViewingScreen.java75
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/DelegateWidgetWithTranslate.java7
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/MergedWidget.java9
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/OverflowWidget.java11
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/PaddedCenterWidget.java4
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/PaddedWidget.java2
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/TabWidget.java5
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/basewidgets/ButtonWidget.java2
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());