diff --git a/src/main/java/com/falsepattern/lib/internal/asm/CoreLoadingPlugin.java b/src/main/java/com/falsepattern/lib/internal/asm/CoreLoadingPlugin.java index 653208e..864483b 100644 --- a/src/main/java/com/falsepattern/lib/internal/asm/CoreLoadingPlugin.java +++ b/src/main/java/com/falsepattern/lib/internal/asm/CoreLoadingPlugin.java @@ -21,6 +21,7 @@ package com.falsepattern.lib.internal.asm; import com.falsepattern.lib.internal.Tags; +import com.falsepattern.lib.mapping.MappingManager; import lombok.Getter; import lombok.val; @@ -48,7 +49,8 @@ public class CoreLoadingPlugin implements IFMLLoadingPlugin { throw skillIssue("Thermos is not supported by FalsePatternLib, please use a normal forge server."); } catch (ClassNotFoundException ignored) { } - + //Initializing the rest + MappingManager.initialize(); } @SuppressWarnings("SameParameterValue") diff --git a/src/main/java/com/falsepattern/lib/mapping/MappingManager.java b/src/main/java/com/falsepattern/lib/mapping/MappingManager.java index 8f1c1a9..81907e8 100644 --- a/src/main/java/com/falsepattern/lib/mapping/MappingManager.java +++ b/src/main/java/com/falsepattern/lib/mapping/MappingManager.java @@ -24,6 +24,7 @@ import com.falsepattern.lib.StableAPI; import com.falsepattern.lib.dependencies.DependencyLoader; import com.falsepattern.lib.dependencies.Library; import com.falsepattern.lib.dependencies.SemanticVersion; +import com.falsepattern.lib.internal.Tags; import com.falsepattern.lib.internal.asm.CoreLoadingPlugin; import com.falsepattern.lib.mapping.storage.Lookup; import com.falsepattern.lib.mapping.types.MappingType; @@ -49,13 +50,15 @@ public class MappingManager { private static final Lookup regularLookup = new Lookup<>(); private static final Map stringPool = new HashMap<>(); private static boolean initialized = false; - + private static final Object MUTEX = new Object(); @SneakyThrows - private static synchronized void initialize() { - if (initialized) { - return; + public static void initialize() { + synchronized (MUTEX) { + if (initialized) { + return; + } + initialized = true; } - initialized = true; DependencyLoader.addMavenRepo("https://repo1.maven.org/maven2/"); DependencyLoader.loadLibraries(Library.builder() .groupId("org.tukaani") @@ -70,6 +73,7 @@ public class MappingManager { .minorVersion(9) .patchVersion(-1) .build()) + .loadingModId(Tags.MODID) .build()); val input = new DataInputStream(new LZMA2Options(6).getInputStream( ResourceUtil.getResourceFromJar("/mappings.lzma2", CoreLoadingPlugin.class))); @@ -128,6 +132,7 @@ public class MappingManager { @StableAPI.Expose public static boolean containsClass(NameType nameType, MappingType mappingType, String className) { + initialize(); switch (nameType) { case Internal: return internalLookup.containsKey(mappingType, className); @@ -141,6 +146,7 @@ public class MappingManager { @StableAPI.Expose public static UniversalField getField(FieldInsnNode instruction) throws ClassNotFoundException, NoSuchFieldException { + initialize(); if (!CoreLoadingPlugin.isObfuscated()) { try { return classForName(NameType.Internal, MappingType.MCP, instruction.owner).getField(MappingType.MCP, @@ -168,6 +174,7 @@ public class MappingManager { @StableAPI.Expose public static UniversalMethod getMethod(MethodInsnNode instruction) throws ClassNotFoundException, NoSuchMethodException { + initialize(); if (!CoreLoadingPlugin.isObfuscated()) { try { return classForName(NameType.Internal, MappingType.MCP, instruction.owner).getMethod(MappingType.MCP,