From bb204389af73e209f2d4978e9183f6417be77ecc Mon Sep 17 00:00:00 2001 From: shedaniel Date: Wed, 4 Nov 2020 19:48:54 +0800 Subject: [PATCH] Test for mod annotation for detecting forge --- .../shedaniel/architectury/Architectury.java | 22 ++++++++++++++----- 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/common/src/main/java/me/shedaniel/architectury/Architectury.java b/common/src/main/java/me/shedaniel/architectury/Architectury.java index 6f37b4f5..6ec33a33 100644 --- a/common/src/main/java/me/shedaniel/architectury/Architectury.java +++ b/common/src/main/java/me/shedaniel/architectury/Architectury.java @@ -16,24 +16,34 @@ package me.shedaniel.architectury; +import com.google.common.collect.ImmutableMap; import org.jetbrains.annotations.ApiStatus; +import java.util.Map; + @ApiStatus.Internal public class Architectury { private static final String MOD_LOADER; + private static final ImmutableMap MOD_LOADERS = ImmutableMap.builder() + .put("net.fabricmc.loader.FabricLoader", "fabric") + .put("net.minecraftforge.fml.common.Mod", "forge") + .build(); public static String getModLoader() { return MOD_LOADER; } static { - String loader; - try { - Class.forName("net.fabricmc.loader.FabricLoader"); - loader = "fabric"; - } catch (ClassNotFoundException e) { - loader = "forge"; + String loader = null; + for (Map.Entry entry : MOD_LOADERS.entrySet()) { + try { + Class.forName(entry.getKey()); + loader = entry.getValue(); + break; + } catch (ClassNotFoundException ignored) {} } + if (loader == null) + throw new IllegalStateException("No detected mod loader!"); MOD_LOADER = loader; } }