summaryrefslogtreecommitdiffstats
path: root/depends/launcher/org/multimc/onesix/MMCClassLoader.java
blob: 6c768ffe408c3d9d80b2adb0448ab3a865b6184b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
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.Arrays;
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;
	}

	// TODO: use this method to use custom log configs
	//	@Override
	//	public URL findResource(String name)
	//	{
	//		return super.findResource(name);
	//	}
}