diff options
Diffstat (limited to 'fabric')
5 files changed, 44 insertions, 19 deletions
diff --git a/fabric/build.gradle b/fabric/build.gradle index 6d42ecee2..f91ffc538 100644 --- a/fabric/build.gradle +++ b/fabric/build.gradle @@ -34,7 +34,7 @@ dependencies { modApi("me.shedaniel.cloth:cloth-config-fabric:${cloth_config_version}") { exclude(module: "fabric-api") } - modRuntime("com.terraformersmc:modmenu:${modmenu_version}") { transitive false } + //modRuntime("com.terraformersmc:modmenu:${modmenu_version}") { transitive false } modApi("dev.architectury:architectury-fabric:${architectury_version}") depProjects.forEach { diff --git a/fabric/src/main/java/me/shedaniel/rei/fabric/PluginDetectorImpl.java b/fabric/src/main/java/me/shedaniel/rei/fabric/PluginDetectorImpl.java index c44ae6a06..711437449 100644 --- a/fabric/src/main/java/me/shedaniel/rei/fabric/PluginDetectorImpl.java +++ b/fabric/src/main/java/me/shedaniel/rei/fabric/PluginDetectorImpl.java @@ -80,7 +80,8 @@ public class PluginDetectorImpl { } catch (Throwable t) { Throwable throwable = t; while (throwable != null) { - if (throwable.getMessage() != null && throwable.getMessage().contains("environment type SERVER") && !RoughlyEnoughItemsInitializer.isClient()) continue out; + if (throwable.getMessage() != null && throwable.getMessage().contains("environment type SERVER") && !RoughlyEnoughItemsInitializer.isClient()) + continue out; throwable = throwable.getCause(); } String error = "Could not create REI Plugin [" + getSimpleName(pluginClass) + "] due to errors, provided by '" + container.getProvider().getMetadata().getId() + "'!"; @@ -98,12 +99,10 @@ public class PluginDetectorImpl { public static void detectServerPlugins() { loadPlugin(REIServerPlugin.class, ((PluginView<REIServerPlugin>) PluginManager.getServerInstance())::registerPlugin); - if (FabricLoader.getInstance().isModLoaded("libblockattributes-fluids")) { - try { - PluginView.getServerInstance().registerPlugin((REIServerPlugin) Class.forName("me.shedaniel.rei.impl.common.compat.FabricFluidAPISupportPlugin").getConstructor().newInstance()); - } catch (Throwable throwable) { - throwable.printStackTrace(); - } + try { + PluginView.getServerInstance().registerPlugin((REIServerPlugin) Class.forName("me.shedaniel.rei.impl.common.compat.FabricFluidAPISupportPlugin").getConstructor().newInstance()); + } catch (Throwable throwable) { + throwable.printStackTrace(); } } diff --git a/fabric/src/main/java/me/shedaniel/rei/fabric/RoughlyEnoughItemsInitializerImpl.java b/fabric/src/main/java/me/shedaniel/rei/fabric/RoughlyEnoughItemsInitializerImpl.java index 47f671dc0..6c02624ac 100644 --- a/fabric/src/main/java/me/shedaniel/rei/fabric/RoughlyEnoughItemsInitializerImpl.java +++ b/fabric/src/main/java/me/shedaniel/rei/fabric/RoughlyEnoughItemsInitializerImpl.java @@ -28,6 +28,7 @@ import me.shedaniel.rei.RoughlyEnoughItemsState; import net.fabricmc.api.EnvType; import net.fabricmc.loader.api.FabricLoader; import net.fabricmc.loader.api.SemanticVersion; +import net.fabricmc.loader.api.Version; import net.fabricmc.loader.api.VersionParsingException; public class RoughlyEnoughItemsInitializerImpl { @@ -59,6 +60,16 @@ public class RoughlyEnoughItemsInitializerImpl { } if (!FabricLoader.getInstance().isModLoaded("architectury")) { RoughlyEnoughItemsState.error("Architectury API is not installed!", "https://www.curseforge.com/minecraft/mc-mods/architectury-fabric/files/all"); + } else { + Version version = FabricLoader.getInstance().getModContainer("architectury").get().getMetadata().getVersion(); + + try { + if (version instanceof SemanticVersion && SemanticVersion.parse("2.6.0").compareTo((SemanticVersion) version) > 0) { + RoughlyEnoughItemsState.error("Architectury API is too old, please update!", "https://www.curseforge.com/minecraft/mc-mods/architectury-fabric/files/all"); + } + } catch (VersionParsingException e) { + e.printStackTrace(); + } } if (isClient()) { try { diff --git a/fabric/src/main/java/me/shedaniel/rei/impl/client/fabric/ErrorDisplayerImpl.java b/fabric/src/main/java/me/shedaniel/rei/impl/client/fabric/ErrorDisplayerImpl.java index ae6a0f9f3..eeaf86492 100644 --- a/fabric/src/main/java/me/shedaniel/rei/impl/client/fabric/ErrorDisplayerImpl.java +++ b/fabric/src/main/java/me/shedaniel/rei/impl/client/fabric/ErrorDisplayerImpl.java @@ -23,16 +23,29 @@ package me.shedaniel.rei.impl.client.fabric; +import net.minecraft.client.Minecraft; import net.minecraft.client.gui.screens.Screen; import java.util.ArrayList; import java.util.List; import java.util.function.Consumer; +import java.util.function.UnaryOperator; public class ErrorDisplayerImpl { public static List<Consumer<Screen>> consumerList = new ArrayList<>(); - public static void registerGuiInit(Consumer<Screen> consumer) { - consumerList.add(consumer); + public static void registerGuiInit(UnaryOperator<Screen> consumer) { + consumerList.add(screen -> { + Screen screen1 = consumer.apply(screen); + if (screen1 != null) { + Minecraft minecraft = Minecraft.getInstance(); + try { + if (minecraft.screen != null) minecraft.screen.removed(); + } catch (Throwable ignored) { + } + minecraft.screen = null; + minecraft.setScreen(screen1); + } + }); } } diff --git a/fabric/src/main/java/me/shedaniel/rei/impl/common/compat/FabricFluidAPISupportPlugin.java b/fabric/src/main/java/me/shedaniel/rei/impl/common/compat/FabricFluidAPISupportPlugin.java index 651ff2821..cb75eca9f 100644 --- a/fabric/src/main/java/me/shedaniel/rei/impl/common/compat/FabricFluidAPISupportPlugin.java +++ b/fabric/src/main/java/me/shedaniel/rei/impl/common/compat/FabricFluidAPISupportPlugin.java @@ -46,15 +46,17 @@ public class FabricFluidAPISupportPlugin implements REIServerPlugin { support.register(entry -> { ItemStack stack = entry.getValue().copy(); Storage<FluidVariant> storage = FluidStorage.ITEM.find(stack, ContainerItemContext.withInitial(stack)); - List<EntryStack<FluidStack>> result; - try (Transaction transaction = Transaction.openOuter()) { - result = StreamSupport.stream(storage.iterable(transaction).spliterator(), false) - .filter(view -> !view.isResourceBlank() && !view.getResource().isBlank()) - .map(view -> EntryStacks.of(FluidStack.create(view.getResource().getFluid(), view.getAmount(), view.getResource().getNbt()))) - .collect(Collectors.toList()); - } - if (!result.isEmpty()) { - return CompoundEventResult.interruptTrue(result.stream()); + if (storage != null) { + List<EntryStack<FluidStack>> result; + try (Transaction transaction = Transaction.openOuter()) { + result = StreamSupport.stream(storage.iterable(transaction).spliterator(), false) + .filter(view -> !view.isResourceBlank()) + .map(view -> EntryStacks.of(FluidStack.create(view.getResource().getFluid(), view.getAmount(), view.getResource().getNbt()))) + .collect(Collectors.toList()); + } + if (!result.isEmpty()) { + return CompoundEventResult.interruptTrue(result.stream()); + } } return CompoundEventResult.pass(); }); |
