aboutsummaryrefslogtreecommitdiff
path: root/runtime/src/main/java
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/src/main/java')
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCoreClient.java41
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/ScreenOverlayImpl.java1
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/ConfigButtonWidget.java2
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/CraftableFilterButtonWidget.java2
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/search/OverlaySearchField.java6
5 files changed, 44 insertions, 8 deletions
diff --git a/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCoreClient.java b/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCoreClient.java
index 650ed86d4..cf28a7232 100644
--- a/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCoreClient.java
+++ b/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCoreClient.java
@@ -24,6 +24,8 @@
package me.shedaniel.rei;
import com.google.common.collect.Lists;
+import com.mojang.blaze3d.systems.RenderSystem;
+import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.serialization.DataResult;
import me.shedaniel.architectury.event.Event;
import me.shedaniel.architectury.event.EventFactory;
@@ -396,14 +398,51 @@ public class RoughlyEnoughItemsCoreClient {
return InteractionResult.SUCCESS;
return InteractionResult.PASS;
});
- GuiEvent.RENDER_POST.register((screen, matrices, mouseX, mouseY, delta) -> {
+ int[] rendered = {0};
+ GuiEvent.RENDER_PRE.register((screen, matrices, mouseX, mouseY, delta) -> {
+ if (shouldReturn(screen))
+ return EventResult.pass();
+ rendered[0] = 0;
+ return EventResult.pass();
+ });
+ GuiEvent.RENDER_CONTAINER_BACKGROUND.register((screen, matrices, mouseX, mouseY, delta) -> {
if (shouldReturn(screen))
return;
+ rendered[0] = 1;
resetFocused(screen);
if (!(screen instanceof DisplayScreen)) {
getOverlay().render(matrices, mouseX, mouseY, delta);
}
+ resetFocused(screen);
+ });
+ GuiEvent.RENDER_CONTAINER_FOREGROUND.register((screen, matrices, mouseX, mouseY, delta) -> {
+ if (shouldReturn(screen))
+ return;
+ rendered[0] = 2;
+ resetFocused(screen);
+ PoseStack poseStack = RenderSystem.getModelViewStack();
+ poseStack.pushPose();
+ poseStack.translate(-screen.leftPos, -screen.topPos, 0.0);
+ RenderSystem.applyModelViewMatrix();
((ScreenOverlayImpl) getOverlay()).lateRender(matrices, mouseX, mouseY, delta);
+ poseStack.popPose();
+ RenderSystem.applyModelViewMatrix();
+ resetFocused(screen);
+ });
+ GuiEvent.RENDER_POST.register((screen, matrices, mouseX, mouseY, delta) -> {
+ if (shouldReturn(screen) || rendered[0] == 2)
+ return;
+ if (screen instanceof AbstractContainerScreen) {
+ InternalLogger.getInstance().warn("Screen " + screen.getClass().getName() + " did not render background and foreground! This might cause rendering issues!");
+ }
+ resetFocused(screen);
+ if (rendered[0] == 0 && !(screen instanceof DisplayScreen)) {
+ getOverlay().render(matrices, mouseX, mouseY, delta);
+ }
+ rendered[0] = 1;
+ if (rendered[0] == 1) {
+ ((ScreenOverlayImpl) getOverlay()).lateRender(matrices, mouseX, mouseY, delta);
+ }
resetFocused(screen);
});
ClientScreenInputEvent.MOUSE_DRAGGED_PRE.register((minecraftClient, screen, mouseX1, mouseY1, button, mouseX2, mouseY2) -> {
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 e056f774c..e74b16a16 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
@@ -291,7 +291,6 @@ public abstract class ScreenOverlayImpl extends ScreenOverlay {
public void lateRender(PoseStack matrices, int mouseX, int mouseY, float delta) {
if (REIRuntime.getInstance().isOverlayVisible() && hasSpace()) {
- REIRuntimeImpl.getSearchField().laterRender(matrices, mouseX, mouseY, delta);
for (Widget widget : widgets) {
if (widget instanceof LateRenderable && widget != menuHolder.widget())
widget.render(matrices, mouseX, mouseY, delta);
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/ConfigButtonWidget.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/ConfigButtonWidget.java
index 61d94e590..af454d304 100644
--- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/ConfigButtonWidget.java
+++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/ConfigButtonWidget.java
@@ -93,7 +93,7 @@ public class ConfigButtonWidget {
helper.blit(matrices, bounds.x + 3, bounds.y + 3, 0, 0, 14, 14);
helper.setBlitOffset(helper.getBlitOffset() - 1);
});
- return InternalWidgets.wrapLateRenderable(Widgets.concat(configButton, overlayWidget));
+ return Widgets.concat(configButton, overlayWidget);
}
private static Collection<MenuEntry> menuEntries() {
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/CraftableFilterButtonWidget.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/CraftableFilterButtonWidget.java
index afd0654c1..66109858d 100644
--- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/CraftableFilterButtonWidget.java
+++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/CraftableFilterButtonWidget.java
@@ -87,7 +87,7 @@ public class CraftableFilterButtonWidget {
itemRenderer.renderGuiItem(icon, (int) vector.x(), (int) vector.y());
itemRenderer.blitOffset = 0.0F;
});
- return InternalWidgets.wrapLateRenderable(Widgets.concat(filterButton, overlayWidget));
+ return Widgets.concat(filterButton, overlayWidget);
}
private static Collection<MenuEntry> menuEntries() {
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/search/OverlaySearchField.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/search/OverlaySearchField.java
index 8aada29a4..f53a85b3f 100644
--- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/search/OverlaySearchField.java
+++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/search/OverlaySearchField.java
@@ -81,7 +81,7 @@ public class OverlaySearchField extends TextFieldWidget implements TextFieldWidg
public int keybindFocusKey = -1;
public boolean isMain = true;
protected Tuple<Long, Point> lastClickedDetails = null;
- private List<String> history = Lists.newArrayListWithCapacity(100);
+ private final List<String> history = Lists.newArrayListWithCapacity(100);
private final NumberAnimator<Double> progress = ValueAnimator.ofDouble();
public OverlaySearchField(int x, int y, int width, int height) {
@@ -255,8 +255,6 @@ public class OverlaySearchField extends TextFieldWidget implements TextFieldWidg
@Override
protected void renderSuggestion(PoseStack matrices, int x, int y) {
- matrices.pushPose();
- matrices.translate(0, 0, 400);
int color;
if (containsMouse(PointHelper.ofMouse()) || isFocused()) {
color = 0xddeaeaea;
@@ -264,7 +262,6 @@ public class OverlaySearchField extends TextFieldWidget implements TextFieldWidg
color = -6250336;
}
this.font.drawShadow(matrices, this.font.plainSubstrByWidth(this.getSuggestion(), this.getWidth()), x, y, color);
- matrices.popPose();
}
@Override
@@ -366,5 +363,6 @@ public class OverlaySearchField extends TextFieldWidget implements TextFieldWidg
@Override
public void render(PoseStack matrices, int mouseX, int mouseY, float delta) {
+ laterRender(matrices, mouseX, mouseY, delta);
}
}