diff options
| author | shedaniel <daniel@shedaniel.me> | 2022-11-12 15:46:45 +0800 |
|---|---|---|
| committer | shedaniel <daniel@shedaniel.me> | 2023-05-29 21:20:10 +0800 |
| commit | c7b82192334b01b28ed6c740fedfc7bc08ea4b0d (patch) | |
| tree | 6d33738f5960808b92cace84dfee391e855632fd /runtime/src/main/java/me | |
| parent | e7f02cc97d19c99e02bffeaa97f3422bc8b764ad (diff) | |
| download | RoughlyEnoughItems-c7b82192334b01b28ed6c740fedfc7bc08ea4b0d.tar.gz RoughlyEnoughItems-c7b82192334b01b28ed6c740fedfc7bc08ea4b0d.tar.bz2 RoughlyEnoughItems-c7b82192334b01b28ed6c740fedfc7bc08ea4b0d.zip | |
Fix #835
Diffstat (limited to 'runtime/src/main/java/me')
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); } } |
