Files
MCCustomSkinLoader/Common/source/customskinloader/plugin/PluginLoader.java
T

55 lines
2.2 KiB
Java
Raw Normal View History

2019-03-08 13:38:44 +08:00
package customskinloader.plugin;
import java.io.File;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLClassLoader;
import java.util.ArrayList;
import java.util.ServiceLoader;
import com.google.common.collect.Lists;
2019-03-08 13:38:44 +08:00
import customskinloader.CustomSkinLoader;
2021-04-24 10:33:18 +08:00
import customskinloader.loader.JsonAPILoader;
import customskinloader.loader.LegacyLoader;
import customskinloader.loader.MojangAPILoader;
import customskinloader.loader.jsonapi.CustomSkinAPI;
import customskinloader.loader.jsonapi.CustomSkinAPIPlus;
2021-04-24 10:33:18 +08:00
import customskinloader.loader.jsonapi.ElyByAPI;
import customskinloader.loader.jsonapi.GlitchlessAPI;
import customskinloader.loader.jsonapi.UniSkinAPI;
import org.apache.commons.io.FileUtils;
2019-03-08 13:38:44 +08:00
public class PluginLoader {
2021-04-24 10:33:18 +08:00
public static final ICustomSkinLoaderPlugin[] DEFAULT_PLUGINS = new ICustomSkinLoaderPlugin[] {
new MojangAPILoader(),
new LegacyLoader(),
new JsonAPILoader(new CustomSkinAPI()),
new JsonAPILoader(new CustomSkinAPIPlus()),
new JsonAPILoader(new UniSkinAPI()),
new JsonAPILoader(new ElyByAPI()),
new JsonAPILoader(new GlitchlessAPI())
2021-04-24 10:33:18 +08:00
};
public static final ArrayList<ICustomSkinLoaderPlugin> PLUGINS = loadPlugins();
2021-04-24 10:33:18 +08:00
private static ArrayList<ICustomSkinLoaderPlugin> loadPlugins() {
2019-03-08 13:38:44 +08:00
File pluginsDir = new File(CustomSkinLoader.DATA_DIR, "Plugins");
ArrayList<URL> urls = new ArrayList<>();
2019-03-08 13:38:44 +08:00
if (!pluginsDir.isDirectory()) {
pluginsDir.mkdirs();
} else {
for (File plugin : FileUtils.listFiles(pluginsDir, new String[] {"jar", "zip"}, false)) {
try {
urls.add(plugin.toURI().toURL());
CustomSkinLoader.logger.info("Found a jar or zip file: " + plugin.getName());
} catch (MalformedURLException ignored) {}
}
}
ArrayList<ICustomSkinLoaderPlugin> plugins = Lists.newArrayList(DEFAULT_PLUGINS);
2021-04-24 10:33:18 +08:00
2019-03-08 13:38:44 +08:00
ServiceLoader<ICustomSkinLoaderPlugin> sl = ServiceLoader.load(ICustomSkinLoaderPlugin.class, new URLClassLoader(urls.toArray(new URL[0]), PluginLoader.class.getClassLoader()));
2021-04-24 10:33:18 +08:00
for (ICustomSkinLoaderPlugin plugin : sl) {
plugins.add(plugin);
2021-04-24 10:33:18 +08:00
}
return plugins;
}
2019-03-08 13:38:44 +08:00
}