From 6dbf4b5a12e6d06ff8ca5fd2b646d9a37de4b80d Mon Sep 17 00:00:00 2001 From: embeddedt <42941056+embeddedt@users.noreply.github.com> Date: Wed, 18 Jan 2023 09:45:11 -0500 Subject: [PATCH] WIP --- .../classloading/ModernFixResourceFinder.java | 28 +++++++++++++++++-- .../modernfix/core/ModernFixMixinPlugin.java | 1 + 2 files changed, 27 insertions(+), 2 deletions(-) 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);