From 7121053d7b8a54dff0089ad60e3c3082be5572e0 Mon Sep 17 00:00:00 2001 From: shedaniel Date: Fri, 10 Apr 2020 21:25:39 +0800 Subject: Error Screen when Fabric API is not installed Signed-off-by: shedaniel --- .../me/shedaniel/rei/impl/ClientHelperImpl.java | 73 ++++++++++++---------- 1 file changed, 41 insertions(+), 32 deletions(-) (limited to 'src/main/java/me/shedaniel/rei/impl/ClientHelperImpl.java') diff --git a/src/main/java/me/shedaniel/rei/impl/ClientHelperImpl.java b/src/main/java/me/shedaniel/rei/impl/ClientHelperImpl.java index 5513dd179..13af0c0a0 100644 --- a/src/main/java/me/shedaniel/rei/impl/ClientHelperImpl.java +++ b/src/main/java/me/shedaniel/rei/impl/ClientHelperImpl.java @@ -28,8 +28,10 @@ import io.netty.buffer.Unpooled; import me.sargunvohra.mcmods.autoconfig1u.annotation.ConfigEntry; import me.shedaniel.clothconfig2.api.FakeModifierKeyCodeAdder; import me.shedaniel.clothconfig2.api.ModifierKeyCode; +import me.shedaniel.math.api.Executor; import me.shedaniel.rei.RoughlyEnoughItemsCore; import me.shedaniel.rei.RoughlyEnoughItemsNetwork; +import me.shedaniel.rei.RoughlyEnoughItemsState; import me.shedaniel.rei.api.*; import me.shedaniel.rei.gui.PreRecipeViewingScreen; import me.shedaniel.rei.gui.RecipeScreen; @@ -285,41 +287,48 @@ public class ClientHelperImpl implements ClientHelper, ClientModInitializer { @Override public void registerFabricKeyBinds() { - String category = "key.rei.category"; - if (!FabricLoader.getInstance().isModLoaded("amecs")) { - try { - ConfigObjectImpl.General general = ConfigObject.getInstance().getGeneral(); - ConfigObjectImpl.General instance = general.getClass().getConstructor().newInstance(); - for (Field declaredField : general.getClass().getDeclaredFields()) { - if (declaredField.getType() == ModifierKeyCode.class && !declaredField.isAnnotationPresent(ConfigEntry.Gui.Excluded.class)) { - declaredField.setAccessible(true); - FakeModifierKeyCodeAdder.INSTANCE.registerModifierKeyCode(category, "config.roughlyenoughitems." + declaredField.getName(), () -> { - try { - ModifierKeyCode code = (ModifierKeyCode) declaredField.get(general); - return code == null ? ModifierKeyCode.unknown() : code; - } catch (Exception e) { - throw new RuntimeException(e); - } - }, () -> { - try { - return (ModifierKeyCode) declaredField.get(instance); - } catch (IllegalAccessException e) { - throw new RuntimeException(e); - } - }, keyCode -> { - try { - declaredField.set(general, keyCode); - } catch (IllegalAccessException e) { - throw new RuntimeException(e); - } - }); + boolean keybindingsLoaded = FabricLoader.getInstance().isModLoaded("fabric-keybindings-v0"); + if (!keybindingsLoaded) { + RoughlyEnoughItemsState.failedToLoad("Fabric API is not installed!", "https://www.curseforge.com/minecraft/mc-mods/fabric-api/files/all"); + return; + } + Executor.run(() -> () -> { + String category = "key.rei.category"; + if (!FabricLoader.getInstance().isModLoaded("amecs")) { + try { + ConfigObjectImpl.General general = ConfigObject.getInstance().getGeneral(); + ConfigObjectImpl.General instance = general.getClass().getConstructor().newInstance(); + for (Field declaredField : general.getClass().getDeclaredFields()) { + if (declaredField.getType() == ModifierKeyCode.class && !declaredField.isAnnotationPresent(ConfigEntry.Gui.Excluded.class)) { + declaredField.setAccessible(true); + FakeModifierKeyCodeAdder.INSTANCE.registerModifierKeyCode(category, "config.roughlyenoughitems." + declaredField.getName(), () -> { + try { + ModifierKeyCode code = (ModifierKeyCode) declaredField.get(general); + return code == null ? ModifierKeyCode.unknown() : code; + } catch (Exception e) { + throw new RuntimeException(e); + } + }, () -> { + try { + return (ModifierKeyCode) declaredField.get(instance); + } catch (IllegalAccessException e) { + throw new RuntimeException(e); + } + }, keyCode -> { + try { + declaredField.set(general, keyCode); + } catch (IllegalAccessException e) { + throw new RuntimeException(e); + } + }); + } } + KeyBindingRegistryImpl.INSTANCE.addCategory(category); + } catch (Throwable throwable) { + throwable.printStackTrace(); } - KeyBindingRegistryImpl.INSTANCE.addCategory(category); - } catch (Throwable throwable) { - throwable.printStackTrace(); } - } + }); } } -- cgit