Files
Parabot-317-API-Minified/src/main/java/org/rev317/min/Loader.java
T
2017-02-01 20:35:49 +00:00

106 lines
3.2 KiB
Java

package org.rev317.min;
import org.parabot.core.Context;
import org.parabot.core.Core;
import org.parabot.core.Directories;
import org.parabot.core.asm.ASMClassLoader;
import org.parabot.core.asm.adapters.AddInterfaceAdapter;
import org.parabot.core.asm.hooks.HookFile;
import org.parabot.core.desc.ServerProviderInfo;
import org.parabot.core.ui.components.VerboseLoader;
import org.parabot.environment.api.utils.WebUtil;
import org.parabot.environment.scripts.Script;
import org.parabot.environment.servers.ServerManifest;
import org.parabot.environment.servers.ServerProvider;
import org.parabot.environment.servers.Type;
import org.rev317.min.accessors.Client;
import org.rev317.min.script.ScriptEngine;
import org.rev317.min.ui.BotMenu;
import javax.swing.*;
import java.applet.Applet;
import java.io.File;
import java.net.URL;
/**
* @author Everel, JKetelaar
*/
@ServerManifest(author = "Everel & JKetelaar", name = "Server name here", type = Type.INJECTION, version = 2.1)
public class Loader extends ServerProvider {
private boolean extended = true;
public static Client getClient() {
return (Client) Context.getInstance().getClient();
}
@Override
public Applet fetchApplet() {
try {
final Context context = Context.getInstance();
final ASMClassLoader classLoader = context.getASMClassLoader();
final Class<?> clientClass = classLoader.loadClass(Context.getInstance().getServerProviderInfo().getClientClass());
Object instance = clientClass.newInstance();
return (Applet) instance;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
@Override
public URL getJar() {
ServerProviderInfo serverProvider = Context.getInstance().getServerProviderInfo();
File target = new File(Directories.getCachePath(), serverProvider.getClientCRC32() + ".jar");
if (!target.exists()) {
WebUtil.downloadFile(serverProvider.getClient(), target, VerboseLoader.get());
}
return WebUtil.toURL(target);
}
@Override
public void addMenuItems(JMenuBar bar) {
new BotMenu(bar);
}
@Override
public void injectHooks() {
AddInterfaceAdapter.setAccessorPackage("org/rev317/min/accessors/");
try {
super.injectHooks();
} catch (Exception e) {
if (Core.inVerboseMode()) {
e.printStackTrace();
}
this.extended = false;
super.injectHooks();
}
}
@Override
public void initScript(Script script) {
ScriptEngine.getInstance().setScript(script);
ScriptEngine.getInstance().init();
}
@Override
public HookFile getHookFile() {
if (this.extended) {
return new HookFile(Context.getInstance().getServerProviderInfo().getExtendedHookFile(), HookFile.TYPE_XML);
} else {
return new HookFile(Context.getInstance().getServerProviderInfo().getHookFile(), HookFile.TYPE_XML);
}
}
public void unloadScript(Script script) {
ScriptEngine.getInstance().unload();
}
@Override
public void init() {
}
}