mirror of https://github.com/YatopiaMC/Yatopia.git
42 lines
1.5 KiB
Java
42 lines
1.5 KiB
Java
package org.yatopiamc.yatoclip;
|
|
|
|
import java.io.IOException;
|
|
import java.io.InputStream;
|
|
import java.lang.reflect.InvocationTargetException;
|
|
import java.lang.reflect.Method;
|
|
import java.lang.reflect.Modifier;
|
|
import java.net.MalformedURLException;
|
|
import java.net.URL;
|
|
import java.net.URLClassLoader;
|
|
import java.nio.file.Files;
|
|
import java.nio.file.Path;
|
|
import java.util.jar.JarInputStream;
|
|
|
|
public class Yatoclip {
|
|
|
|
public static void main(String... args) throws Throwable {
|
|
final Path setup = ServerSetup.setup();
|
|
launch(setup, args);
|
|
}
|
|
|
|
private static void launch(Path setup, String[] args) throws Throwable {
|
|
YatoclipLaunch.injectClasspath(setup);
|
|
final Class<?> mainClassInstance = Class.forName("org.bukkit.craftbukkit.Main", true, ClassLoader.getSystemClassLoader());
|
|
final Method mainMethod = mainClassInstance.getMethod("main", String[].class);
|
|
if(!Modifier.isPublic(mainMethod.getModifiers()) || !Modifier.isStatic(mainMethod.getModifiers())) throw new IllegalArgumentException();
|
|
mainMethod.invoke(null, new Object[]{args});
|
|
}
|
|
|
|
static String getMainClass(Path jarPath) throws IOException {
|
|
final String mainClass;
|
|
try (
|
|
InputStream inputStream = Files.newInputStream(jarPath);
|
|
JarInputStream jar = new JarInputStream(inputStream)
|
|
) {
|
|
mainClass = jar.getManifest().getMainAttributes().getValue("Main-Class");
|
|
}
|
|
return mainClass;
|
|
}
|
|
|
|
}
|