From 2c963888b5cd1c14c434b50d1678a509a7ba0577 Mon Sep 17 00:00:00 2001 From: embeddedt <42941056+embeddedt@users.noreply.github.com> Date: Tue, 30 Jan 2024 15:47:16 -0500 Subject: [PATCH] Don't run mappings clearer on FL 0.15+, it's not needed Related: #329 --- .../fabric/mappings/MappingsClearer.java | 21 +++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/fabric/src/main/java/org/embeddedt/modernfix/fabric/mappings/MappingsClearer.java b/fabric/src/main/java/org/embeddedt/modernfix/fabric/mappings/MappingsClearer.java index 75341b3f..30af2701 100644 --- a/fabric/src/main/java/org/embeddedt/modernfix/fabric/mappings/MappingsClearer.java +++ b/fabric/src/main/java/org/embeddedt/modernfix/fabric/mappings/MappingsClearer.java @@ -1,7 +1,6 @@ package org.embeddedt.modernfix.fabric.mappings; -import net.fabricmc.loader.api.FabricLoader; -import net.fabricmc.loader.api.MappingResolver; +import net.fabricmc.loader.api.*; import net.fabricmc.loader.impl.launch.FabricLauncherBase; import net.fabricmc.loader.impl.launch.MappingConfiguration; import net.fabricmc.mapping.tree.TinyMappingFactory; @@ -10,16 +9,34 @@ import org.embeddedt.modernfix.util.CommonModUtil; import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.util.Map; +import java.util.Optional; /** * Designed for Fabric Loader 0.14.x, probably has issues on other versions. The entire thing is wrapped in a try-catch * so it should never cause crashes, just fail to work. */ public class MappingsClearer { + private static final Version LOADER_015; + + static { + try { + LOADER_015 = Version.parse("0.15.0"); + } catch (VersionParsingException e) { + throw new RuntimeException(e); + } + } + @SuppressWarnings("unchecked") public static void clear() { if(FabricLoader.getInstance().isDevelopmentEnvironment()) return; // never do this in dev + + Optional loaderVersion = FabricLoader.getInstance().getModContainer("fabricloader").map(m -> m.getMetadata().getVersion()); + if(!loaderVersion.isPresent() || LOADER_015.compareTo(loaderVersion.get()) < 0) { + // Fabric Loader is probably too new, abort + return; + } + CommonModUtil.runWithoutCrash(() -> { // For now, force the mapping resolver to be initialized. Fabric Loader 0.14.23 stops initializing it early, // which means that we actually need to keep the TinyMappingFactory tree around for initialization to work