diff options
Diffstat (limited to 'src/main/java/me/shedaniel/rei/impl/ScreenHelper.java')
| -rw-r--r-- | src/main/java/me/shedaniel/rei/impl/ScreenHelper.java | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/src/main/java/me/shedaniel/rei/impl/ScreenHelper.java b/src/main/java/me/shedaniel/rei/impl/ScreenHelper.java index c95153a75..c1bafeb1e 100644 --- a/src/main/java/me/shedaniel/rei/impl/ScreenHelper.java +++ b/src/main/java/me/shedaniel/rei/impl/ScreenHelper.java @@ -27,16 +27,20 @@ import com.google.common.collect.Iterables; import com.google.common.collect.Lists; import com.google.common.collect.Sets; import me.shedaniel.cloth.hooks.ClothClientHooks; +import me.shedaniel.math.api.Executor; +import me.shedaniel.rei.RoughlyEnoughItemsState; import me.shedaniel.rei.api.ConfigManager; 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.widget.TextFieldWidget; import net.fabricmc.api.ClientModInitializer; import net.fabricmc.fabric.api.event.client.ClientTickCallback; +import net.fabricmc.loader.api.FabricLoader; import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.screen.Screen; import net.minecraft.client.gui.screen.ingame.HandledScreen; @@ -190,13 +194,22 @@ public class ScreenHelper implements ClientModInitializer, REIHelper { @Override public void onInitializeClient() { ClothClientHooks.SCREEN_INIT_PRE.register((client, screen, screenHooks) -> { - if (lastHandledScreen != screen && screen instanceof HandledScreen) + if (!RoughlyEnoughItemsState.getFailedToLoad().isEmpty() && !(screen instanceof FailedToLoadScreen)) { + client.openScreen(FailedToLoadScreen.INSTANCE.get()); + } else if (lastHandledScreen != screen && screen instanceof HandledScreen) lastHandledScreen = (HandledScreen<?>) screen; return ActionResult.PASS; }); - ClientTickCallback.EVENT.register(minecraftClient -> { - if (isOverlayVisible() && getSearchField() != null) - getSearchField().tick(); + boolean loaded = FabricLoader.getInstance().isModLoaded("fabric-events-lifecycle-v0"); + if (!loaded) { + RoughlyEnoughItemsState.failedToLoad("Fabric API is not installed!", "https://www.curseforge.com/minecraft/mc-mods/fabric-api/files/all"); + return; + } + Executor.run(() -> () -> { + ClientTickCallback.EVENT.register(minecraftClient -> { + if (isOverlayVisible() && getSearchField() != null) + getSearchField().tick(); + }); }); } } |
