diff --git a/common/src/main/java/me/shedaniel/architectury/platform/Platform.java b/common/src/main/java/me/shedaniel/architectury/platform/Platform.java index 92e007c8..1335d20e 100644 --- a/common/src/main/java/me/shedaniel/architectury/platform/Platform.java +++ b/common/src/main/java/me/shedaniel/architectury/platform/Platform.java @@ -23,6 +23,7 @@ import me.shedaniel.architectury.Architectury; import me.shedaniel.architectury.ExpectPlatform; import net.fabricmc.api.EnvType; import net.minecraft.SharedConstants; +import net.minecraft.util.LazyLoadedValue; import org.jetbrains.annotations.NotNull; import java.nio.file.Path; @@ -31,6 +32,7 @@ import java.util.Optional; public final class Platform { private Platform() {} + private static int simpleLoaderCache = -1; /** * @return the current mod loader, either "fabric" or "forge" @@ -40,6 +42,27 @@ public final class Platform { return Architectury.getModLoader(); } + public static boolean isFabric() { + updateLoaderCache(); + return simpleLoaderCache == 0; + } + + public static boolean isForge() { + updateLoaderCache(); + return simpleLoaderCache == 1; + } + + private static void updateLoaderCache() { + switch (getModLoader()) { + case "fabric": + simpleLoaderCache = 0; + return; + case "forge": + simpleLoaderCache = 1; + return; + } + } + @NotNull public static String getMinecraftVersion() { return SharedConstants.getCurrentVersion().getId();