diff --git a/src/main/java/org/embeddedt/modernfix/classloading/ModernFixResourceFinder.java b/src/main/java/org/embeddedt/modernfix/classloading/ModernFixResourceFinder.java index b5f70f8e..5ee4c96d 100644 --- a/src/main/java/org/embeddedt/modernfix/classloading/ModernFixResourceFinder.java +++ b/src/main/java/org/embeddedt/modernfix/classloading/ModernFixResourceFinder.java @@ -1,14 +1,38 @@ package org.embeddedt.modernfix.classloading; import net.minecraftforge.fml.loading.LoadingModList; +import net.minecraftforge.fml.loading.moddiscovery.AbstractJarFileLocator; +import net.minecraftforge.fml.loading.moddiscovery.ExplodedDirectoryLocator; +import net.minecraftforge.fml.loading.moddiscovery.ModFile; +import net.minecraftforge.fml.loading.moddiscovery.ModFileInfo; +import net.minecraftforge.forgespi.locating.IModLocator; import java.net.URL; +import java.nio.file.Path; +import java.util.ArrayList; import java.util.Collections; import java.util.Enumeration; +import java.util.HashMap; public class ModernFixResourceFinder { + private static HashMap> urlsForClass = null; + public static void init() { + urlsForClass = new HashMap<>(); + for(ModFileInfo fileInfo : LoadingModList.get().getModFiles()) { + ModFile file = fileInfo.getFile(); + IModLocator locator = file.getLocator(); + Path rootPath = locator.findPath(file, "."); + System.out.println(rootPath.getParent().toAbsolutePath()); + } + for(ArrayList list : urlsForClass.values()) { + list.trimToSize(); + } + } public static Enumeration findAllURLsForResource(String input) { - System.out.println(input); - return Collections.emptyEnumeration(); //LoadingModList.get().findAllURLsForResource(input); + ArrayList urlList = urlsForClass.get(input); + if(urlList != null) + return Collections.enumeration(urlList); + else + return Collections.emptyEnumeration(); } } diff --git a/src/main/java/org/embeddedt/modernfix/core/ModernFixMixinPlugin.java b/src/main/java/org/embeddedt/modernfix/core/ModernFixMixinPlugin.java index 34e9c672..0ffbe37e 100644 --- a/src/main/java/org/embeddedt/modernfix/core/ModernFixMixinPlugin.java +++ b/src/main/java/org/embeddedt/modernfix/core/ModernFixMixinPlugin.java @@ -54,6 +54,7 @@ public class ModernFixMixinPlugin implements IMixinConfigPlugin { } private Function> constructResourceFinder() throws ReflectiveOperationException { + ModernFixResourceFinder.init(); Field servicesHandlerField = Launcher.class.getDeclaredField("transformationServicesHandler"); servicesHandlerField.setAccessible(true); Object servicesHandler = servicesHandlerField.get(Launcher.INSTANCE);