aboutsummaryrefslogtreecommitdiff
path: root/fabric/src/main/java
diff options
context:
space:
mode:
authorshedaniel <daniel@shedaniel.me>2021-02-28 02:07:47 +0800
committershedaniel <daniel@shedaniel.me>2021-02-28 02:07:47 +0800
commit69d386214f5d3471a3ef1e5533037cdc32648c57 (patch)
treea78d97ca416909ce68c3e5c11e1a1412e6fc174e /fabric/src/main/java
parent542eb5154ebce387312ca3691f743b89e4aef99e (diff)
downloadRoughlyEnoughItems-69d386214f5d3471a3ef1e5533037cdc32648c57.tar.gz
RoughlyEnoughItems-69d386214f5d3471a3ef1e5533037cdc32648c57.tar.bz2
RoughlyEnoughItems-69d386214f5d3471a3ef1e5533037cdc32648c57.zip
Port to Architectury Multiloader
Signed-off-by: shedaniel <daniel@shedaniel.me>
Diffstat (limited to 'fabric/src/main/java')
-rw-r--r--fabric/src/main/java/me/shedaniel/rei/fabric/PluginDetectorImpl.java52
-rw-r--r--fabric/src/main/java/me/shedaniel/rei/fabric/RoughlyEnoughItemsFabric.java31
2 files changed, 83 insertions, 0 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
new file mode 100644
index 000000000..b8f10ba4e
--- /dev/null
+++ b/fabric/src/main/java/me/shedaniel/rei/fabric/PluginDetectorImpl.java
@@ -0,0 +1,52 @@
+package me.shedaniel.rei.fabric;
+
+import com.google.common.collect.Iterables;
+import me.shedaniel.rei.RoughlyEnoughItemsCore;
+import me.shedaniel.rei.api.plugins.REIPlugin;
+import net.fabricmc.api.EnvType;
+import net.fabricmc.api.Environment;
+import net.fabricmc.loader.api.FabricLoader;
+import net.fabricmc.loader.api.ModContainer;
+
+import static me.shedaniel.rei.RoughlyEnoughItemsCore.registerPlugin;
+
+public class PluginDetectorImpl {
+ public static void detectServerPlugins() {
+ FabricLoader.getInstance().getEntrypoints("rei_containers", Runnable.class).forEach(Runnable::run);
+ }
+
+ @Environment(EnvType.CLIENT)
+ public static void detectClientPlugins() {
+ for (ModContainer modContainer : FabricLoader.getInstance().getAllMods()) {
+ if (modContainer.getMetadata().containsCustomElement("roughlyenoughitems:plugins"))
+ RoughlyEnoughItemsCore.LOGGER.error("REI plugin from " + modContainer.getMetadata().getId() + " is not loaded because it is too old!");
+ }
+
+ for (REIPlugin plugin : Iterables.concat(
+ FabricLoader.getInstance().getEntrypoints("rei_plugins", REIPlugin.class),
+ FabricLoader.getInstance().getEntrypoints("rei", REIPlugin.class)
+ )) {
+ try {
+ registerPlugin(plugin);
+ } catch (Exception e) {
+ e.printStackTrace();
+ RoughlyEnoughItemsCore.LOGGER.error("Can't load REI plugins from %s: %s", plugin.getClass(), e.getLocalizedMessage());
+ }
+ }
+ for (REIPlugin reiPlugin : FabricLoader.getInstance().getEntrypoints("rei_plugins_v0", REIPlugin.class)) {
+ try {
+ registerPlugin(reiPlugin);
+ } catch (Exception e) {
+ e.printStackTrace();
+ RoughlyEnoughItemsCore.LOGGER.error("Can't load REI plugins from %s: %s", reiPlugin.getClass(), e.getLocalizedMessage());
+ }
+ }
+ if (FabricLoader.getInstance().isModLoaded("libblockattributes-fluids")) {
+ try {
+ registerPlugin((REIPlugin) Class.forName("me.shedaniel.rei.compat.LBASupportPlugin").getConstructor().newInstance());
+ } catch (Throwable throwable) {
+ throwable.printStackTrace();
+ }
+ }
+ }
+}
diff --git a/fabric/src/main/java/me/shedaniel/rei/fabric/RoughlyEnoughItemsFabric.java b/fabric/src/main/java/me/shedaniel/rei/fabric/RoughlyEnoughItemsFabric.java
new file mode 100644
index 000000000..7172ec864
--- /dev/null
+++ b/fabric/src/main/java/me/shedaniel/rei/fabric/RoughlyEnoughItemsFabric.java
@@ -0,0 +1,31 @@
+package me.shedaniel.rei.fabric;
+
+import me.shedaniel.rei.impl.IssuesDetector;
+import net.fabricmc.api.ModInitializer;
+import net.fabricmc.loader.api.FabricLoader;
+import org.apache.logging.log4j.Logger;
+
+import java.lang.reflect.Field;
+import java.util.Locale;
+
+public class RoughlyEnoughItemsFabric implements ModInitializer {
+ @Override
+ public void onInitialize() {
+ IssuesDetector.register(() -> {
+ try {
+ FabricLoader instance = FabricLoader.getInstance();
+ for (Field field : instance.getClass().getDeclaredFields()) {
+ if (Logger.class.isAssignableFrom(field.getType())) {
+ field.setAccessible(true);
+ Logger logger = (Logger) field.get(instance);
+ if (logger.getName().toLowerCase(Locale.ROOT).contains("subsystem"))
+ return true;
+ }
+ }
+ } catch (Throwable ignored) {
+ }
+ return false;
+ }, ".ignoresubsystem", "Subsystem is detected (probably though Aristois), please contact support from them if anything happens.");
+
+ }
+}