diff options
| author | shedaniel <daniel@shedaniel.me> | 2020-04-20 01:29:05 +0800 |
|---|---|---|
| committer | shedaniel <daniel@shedaniel.me> | 2020-04-20 01:29:05 +0800 |
| commit | b12bf996dd2b786b9166bd4534bdd3182a078d2f (patch) | |
| tree | d34efa77d1ac179ffd411f90b2c370207afb3bfe /src/main/java/me/shedaniel/rei/impl/ScreenHelper.java | |
| parent | f1c9330818037365503f5eb6bce5c09d1d1a045d (diff) | |
| download | RoughlyEnoughItems-b12bf996dd2b786b9166bd4534bdd3182a078d2f.tar.gz RoughlyEnoughItems-b12bf996dd2b786b9166bd4534bdd3182a078d2f.tar.bz2 RoughlyEnoughItems-b12bf996dd2b786b9166bd4534bdd3182a078d2f.zip | |
Fix endless recursion with item and fluid
Signed-off-by: shedaniel <daniel@shedaniel.me>
Diffstat (limited to 'src/main/java/me/shedaniel/rei/impl/ScreenHelper.java')
| -rw-r--r-- | src/main/java/me/shedaniel/rei/impl/ScreenHelper.java | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/src/main/java/me/shedaniel/rei/impl/ScreenHelper.java b/src/main/java/me/shedaniel/rei/impl/ScreenHelper.java index 0b21f6175..f5f836552 100644 --- a/src/main/java/me/shedaniel/rei/impl/ScreenHelper.java +++ b/src/main/java/me/shedaniel/rei/impl/ScreenHelper.java @@ -34,9 +34,9 @@ import me.shedaniel.rei.api.ConfigObject; import me.shedaniel.rei.api.REIHelper; import me.shedaniel.rei.api.widgets.Tooltip; import me.shedaniel.rei.gui.ContainerScreenOverlay; -import me.shedaniel.rei.gui.FailedToLoadScreen; import me.shedaniel.rei.gui.OverlaySearchField; import me.shedaniel.rei.gui.RecipeScreen; +import me.shedaniel.rei.gui.WarningAndErrorScreen; import me.shedaniel.rei.gui.widget.TextFieldWidget; import net.fabricmc.api.ClientModInitializer; import net.fabricmc.fabric.api.event.client.ClientTickCallback; @@ -204,10 +204,15 @@ public class ScreenHelper implements ClientModInitializer, REIHelper { @Override public void onInitializeClient() { ClothClientHooks.SCREEN_INIT_PRE.register((client, screen, screenHooks) -> { - if ((!RoughlyEnoughItemsState.getErrors().isEmpty() || !RoughlyEnoughItemsState.getWarnings().isEmpty()) && !(screen instanceof FailedToLoadScreen)) { - FailedToLoadScreen failedToLoadScreen = FailedToLoadScreen.INSTANCE.get(); - failedToLoadScreen.setParent(screen); - client.openScreen(failedToLoadScreen); + if ((!RoughlyEnoughItemsState.getErrors().isEmpty() || !RoughlyEnoughItemsState.getWarnings().isEmpty()) && !(screen instanceof WarningAndErrorScreen)) { + WarningAndErrorScreen warningAndErrorScreen = WarningAndErrorScreen.INSTANCE.get(); + warningAndErrorScreen.setParent(screen); + try { + if (client.currentScreen != null) client.currentScreen.removed(); + } catch (Throwable ignored) { + } + client.currentScreen = null; + client.openScreen(warningAndErrorScreen); } else if (lastHandledScreen != screen && screen instanceof HandledScreen) lastHandledScreen = (HandledScreen<?>) screen; return ActionResult.PASS; |
