diff options
Diffstat (limited to 'depends/launcher/org/multimc/onesix/MMCClassLoader.java')
-rw-r--r-- | depends/launcher/org/multimc/onesix/MMCClassLoader.java | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/depends/launcher/org/multimc/onesix/MMCClassLoader.java b/depends/launcher/org/multimc/onesix/MMCClassLoader.java new file mode 100644 index 00000000..ce8b806e --- /dev/null +++ b/depends/launcher/org/multimc/onesix/MMCClassLoader.java @@ -0,0 +1,35 @@ +package org.multimc.onesix; + +import java.io.File; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLClassLoader; +import java.util.List; + +public class MMCClassLoader extends URLClassLoader +{ + public MMCClassLoader(String natives, List<String> allJars) + throws MalformedURLException, ClassNotFoundException, NoSuchMethodException, + InvocationTargetException, IllegalAccessException, NoSuchFieldException + { + super(process(allJars)); + Method setProperty = + loadClass("java.lang.System").getMethod("setProperty", String.class, String.class); + setProperty.invoke(null, "java.library.path", natives); + setProperty.invoke(null, "org.lwjgl.librarypath", natives); + setProperty.invoke(null, "net.java.games.input.librarypath", natives); + } + + private static URL[] process(List<String> allJars) throws MalformedURLException + { + URL[] urls = new URL[allJars.size()]; + for (int i = 0; i < allJars.size(); i++) + { + String jar = allJars.get(i); + urls[i] = new File(jar).toURI().toURL(); + } + return urls; + } +} |