mirror of
https://github.com/2006-Scape/Parabot.git
synced 2026-07-07 08:39:12 +00:00
Updated whole environment
This commit is contained in:
@@ -1,10 +1,12 @@
|
||||
package org.parabot.environment;
|
||||
|
||||
import java.lang.reflect.Constructor;
|
||||
import java.net.URL;
|
||||
|
||||
import org.parabot.core.Context;
|
||||
import org.parabot.core.Core;
|
||||
import org.parabot.core.classpath.ClassPath;
|
||||
import org.parabot.core.desc.ServerDescription;
|
||||
import org.parabot.core.parsers.ServerManifestParser;
|
||||
import org.parabot.core.parsers.ServerManifestParser.ServerCache;
|
||||
import org.parabot.core.ui.BotUI;
|
||||
import org.parabot.core.ui.ServerSelector;
|
||||
import org.parabot.core.ui.components.BotToolbar;
|
||||
@@ -22,38 +24,53 @@ public class Environment {
|
||||
* Loads a new environment
|
||||
* @param url
|
||||
*/
|
||||
public static void load(final URL url, final String serverName) {
|
||||
public static void load(final ServerDescription desc, final String serverName) {
|
||||
ServerSelector.getInstance().dispose();
|
||||
if(!BotUI.getInstance().isVisible()) {
|
||||
BotUI.getInstance().setVisible(true);
|
||||
}
|
||||
|
||||
final ClassPath classPath = new ClassPath();
|
||||
classPath.addJar(url.toString());
|
||||
|
||||
final ServerLoader serverLoader = new ServerLoader(classPath);
|
||||
final String[] serverProviders = serverLoader.getServerClassNames();
|
||||
if (serverProviders == null) {
|
||||
throw new RuntimeException("No server provided.");
|
||||
|
||||
final ClassPath classPath = Core.isDevMode() ? null : new ClassPath();
|
||||
final ServerCache cache = Core.isDevMode() ? ServerManifestParser.cache.get(desc) : null;
|
||||
|
||||
final ServerLoader serverLoader = Core.isDevMode() ? cache.getLoader() : new ServerLoader(classPath);
|
||||
String[] serverProviders = null;
|
||||
if(!Core.isDevMode()) {
|
||||
serverProviders = serverLoader.getServerClassNames();
|
||||
if (serverProviders == null) {
|
||||
throw new RuntimeException("No server provided.");
|
||||
}
|
||||
}
|
||||
|
||||
final String id = "tab" + Context.getID();
|
||||
final ThreadGroup bot = new ThreadGroup(id);
|
||||
new Thread(bot, new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
try {
|
||||
final Class<?> serverProviderClass = serverLoader.loadClass(serverProviders[0]);
|
||||
final Constructor<?> con = serverProviderClass.getConstructor();
|
||||
ServerProvider server = (ServerProvider) con.newInstance();
|
||||
server.context.setEnvironment(serverLoader);
|
||||
BotToolbar.getInstance().addTab(server.context, serverName);
|
||||
server.context.load();
|
||||
final ServerProvider server = !Core.isDevMode() ? fetchServerProvider(serverLoader) : cache.getProviders()[desc.providerIndex];
|
||||
final Context context = new Context(server);
|
||||
context.setEnvironment(serverLoader);
|
||||
BotToolbar.getInstance().addTab(context, serverName);
|
||||
context.load();
|
||||
} catch (Throwable t) {
|
||||
throw new RuntimeException("Error while loading server. " + t.getMessage());
|
||||
t.printStackTrace();
|
||||
}
|
||||
}
|
||||
}).start();
|
||||
}
|
||||
|
||||
private static ServerProvider fetchServerProvider(ServerLoader loader) {
|
||||
try {
|
||||
final String[] serverProviders = loader.getServerClassNames();
|
||||
if (serverProviders == null) {
|
||||
throw new RuntimeException("No server provided.");
|
||||
}
|
||||
final Class<?> serverProviderClass = loader.loadClass(serverProviders[0]);
|
||||
final Constructor<?> con = serverProviderClass.getConstructor();
|
||||
return (ServerProvider) con.newInstance();
|
||||
} catch (Throwable t) {
|
||||
throw new RuntimeException("Error while loading server. " + t.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -13,7 +13,6 @@ import org.parabot.core.Context;
|
||||
*
|
||||
*/
|
||||
public abstract class ServerProvider {
|
||||
public Context context = new Context(this);
|
||||
|
||||
/**
|
||||
* Hooks to parse
|
||||
@@ -47,7 +46,7 @@ public abstract class ServerProvider {
|
||||
}
|
||||
|
||||
public void parseJar() {
|
||||
context.getClassPath().addJar(getJar());
|
||||
Context.resolve().getClassPath().addJar(getJar());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user