aboutsummaryrefslogtreecommitdiff
path: root/fabric/src
diff options
context:
space:
mode:
Diffstat (limited to 'fabric/src')
-rw-r--r--fabric/src/main/java/me/shedaniel/rei/fabric/PluginDetectorImpl.java13
-rw-r--r--fabric/src/main/java/me/shedaniel/rei/fabric/RoughlyEnoughItemsInitializerImpl.java11
-rw-r--r--fabric/src/main/java/me/shedaniel/rei/impl/client/fabric/ErrorDisplayerImpl.java17
-rw-r--r--fabric/src/main/java/me/shedaniel/rei/impl/common/compat/FabricFluidAPISupportPlugin.java20
4 files changed, 43 insertions, 18 deletions
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();
});