diff options
| author | shedaniel <daniel@shedaniel.me> | 2021-02-28 02:07:47 +0800 |
|---|---|---|
| committer | shedaniel <daniel@shedaniel.me> | 2021-02-28 02:07:47 +0800 |
| commit | 69d386214f5d3471a3ef1e5533037cdc32648c57 (patch) | |
| tree | a78d97ca416909ce68c3e5c11e1a1412e6fc174e /fabric/src/main/java | |
| parent | 542eb5154ebce387312ca3691f743b89e4aef99e (diff) | |
| download | RoughlyEnoughItems-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.java | 52 | ||||
| -rw-r--r-- | fabric/src/main/java/me/shedaniel/rei/fabric/RoughlyEnoughItemsFabric.java | 31 |
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."); + + } +} |
