aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/me/shedaniel/rei/impl/ScreenHelper.java
diff options
context:
space:
mode:
authorshedaniel <daniel@shedaniel.me>2020-04-10 21:25:39 +0800
committershedaniel <daniel@shedaniel.me>2020-04-10 21:25:39 +0800
commit7121053d7b8a54dff0089ad60e3c3082be5572e0 (patch)
treecbf1c79014011b82c9cdd047be828307f9a2302b /src/main/java/me/shedaniel/rei/impl/ScreenHelper.java
parentdf107611287fd75dafbef1d0a5c91a8bac2f1e2d (diff)
downloadRoughlyEnoughItems-7121053d7b8a54dff0089ad60e3c3082be5572e0.tar.gz
RoughlyEnoughItems-7121053d7b8a54dff0089ad60e3c3082be5572e0.tar.bz2
RoughlyEnoughItems-7121053d7b8a54dff0089ad60e3c3082be5572e0.zip
Error Screen when Fabric API is not installed
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.java21
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();
+ });
});
}
}