diff options
| author | shedaniel <daniel@shedaniel.me> | 2022-11-12 15:46:45 +0800 |
|---|---|---|
| committer | shedaniel <daniel@shedaniel.me> | 2022-11-12 15:52:21 +0800 |
| commit | 15ccf3bde1c84595b92d0bdd275f31588ff6c9b1 (patch) | |
| tree | 3ecaae5725be55527a415a2520b0cafafea7372d /runtime/src | |
| parent | 7d18e7ed9db822639121831922b30cf824fe974c (diff) | |
| download | RoughlyEnoughItems-15ccf3bde1c84595b92d0bdd275f31588ff6c9b1.tar.gz RoughlyEnoughItems-15ccf3bde1c84595b92d0bdd275f31588ff6c9b1.tar.bz2 RoughlyEnoughItems-15ccf3bde1c84595b92d0bdd275f31588ff6c9b1.zip | |
Fix #835
Diffstat (limited to 'runtime/src')
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 01e4fc1fd..0c1b9f5cf 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 dev.architectury.event.Event; import dev.architectury.event.EventFactory; @@ -394,14 +396,51 @@ public class RoughlyEnoughItemsCoreClient { return EventResult.interruptFalse(); return EventResult.pass(); }); - ClientGuiEvent.RENDER_POST.register((screen, matrices, mouseX, mouseY, delta) -> { + int[] rendered = {0}; + ClientGuiEvent.RENDER_PRE.register((screen, matrices, mouseX, mouseY, delta) -> { + if (shouldReturn(screen)) + return EventResult.pass(); + rendered[0] = 0; + return EventResult.pass(); + }); + ClientGuiEvent.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); + }); + ClientGuiEvent.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); + }); + ClientGuiEvent.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 8d01c05b7..fe6abb1ba 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 b68708fc6..cf4a4703f 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 @@ -92,7 +92,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 bef9eaa02..94bf01921 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 @@ -85,7 +85,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 70dbfd321..3180c2b0b 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 @@ -80,7 +80,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) { @@ -254,8 +254,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; @@ -263,7 +261,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 @@ -365,5 +362,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); } } |
