From cd8943d0794dd7a647df2d97f06177da0b71090f Mon Sep 17 00:00:00 2001 From: JKetelaar Date: Thu, 11 Sep 2014 23:31:41 +0200 Subject: [PATCH] Finished base for randoms --- src/org/rev317/min/Loader.java | 25 +++++------ src/org/rev317/min/randoms/Downloader.java | 36 +++++++++++----- src/org/rev317/min/ui/BotMenu.java | 4 +- src/org/rev317/min/ui/RandomUI.java | 50 ++++++++++++---------- 4 files changed, 68 insertions(+), 47 deletions(-) diff --git a/src/org/rev317/min/Loader.java b/src/org/rev317/min/Loader.java index 02451c6..c7135d6 100644 --- a/src/org/rev317/min/Loader.java +++ b/src/org/rev317/min/Loader.java @@ -5,6 +5,8 @@ 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; @@ -18,16 +20,15 @@ import org.rev317.min.ui.BotMenu; import javax.swing.*; import java.applet.Applet; import java.io.File; -import java.net.MalformedURLException; import java.net.URL; /** - * @author Everel + * @author Everel, Paradox */ @ServerManifest(author = "Everel & Paradox", name = "Server name here", type = Type.INJECTION, version = 2.1) public class Loader extends ServerProvider { private Applet applet; - private HookFile hookFile; //= new HookFile(new File(Directories.getCachePath() + "/ikov-hooks.xml"), HookFile.TYPE_XML); + private HookFile hookFile = new HookFile(Context.getInstance().getServerProviderInfo().getExtendedHookFile(), HookFile.TYPE_XML); public static Client getClient() { return (Client) Context.getInstance().getClient(); @@ -38,10 +39,10 @@ public class Loader extends ServerProvider { try { final Context context = Context.getInstance(); final ASMClassLoader classLoader = context.getASMClassLoader(); - final Class clientClass = classLoader.loadClass("b"); + final Class clientClass = classLoader.loadClass(Context.getInstance().getServerProviderInfo().getClientClass()); Object instance = clientClass.newInstance(); - applet = (Applet) instance; - return applet; + this.applet = (Applet) instance; + return this.applet; } catch (Exception e) { e.printStackTrace(); return null; @@ -50,11 +51,11 @@ public class Loader extends ServerProvider { @Override public URL getJar() { - //ServerProviderInfo serverProvider = Context.getInstance().getServerProviderInfo(); + ServerProviderInfo serverProvider = Context.getInstance().getServerProviderInfo(); - File target = new File(Directories.getCachePath(), "3672181877.jar"); + File target = new File(Directories.getCachePath(), serverProvider.getClientCRC32() + ".jar"); if (!target.exists()) { - //WebUtil.downloadFile(serverProvider.getClient(), target, VerboseLoader.get()); + WebUtil.downloadFile(serverProvider.getClient(), target, VerboseLoader.get()); } return WebUtil.toURL(target); @@ -72,11 +73,7 @@ public class Loader extends ServerProvider { super.injectHooks(); } catch (Exception e) { e.printStackTrace(); - try { - this.hookFile = new HookFile(new File(Directories.getCachePath() + "/ikov-hooks.xml"), HookFile.TYPE_XML); - } catch (MalformedURLException e1) { - e1.printStackTrace(); - } + this.hookFile = new HookFile(Context.getInstance().getServerProviderInfo().getHookFile(), HookFile.TYPE_XML); super.injectHooks(); } } diff --git a/src/org/rev317/min/randoms/Downloader.java b/src/org/rev317/min/randoms/Downloader.java index 1e2d57c..887100f 100644 --- a/src/org/rev317/min/randoms/Downloader.java +++ b/src/org/rev317/min/randoms/Downloader.java @@ -1,6 +1,6 @@ package org.rev317.min.randoms; -import org.parabot.core.Context; +import org.parabot.core.Core; import org.parabot.core.Directories; import org.parabot.core.io.ProgressListener; import org.parabot.environment.api.utils.WebUtil; @@ -18,28 +18,43 @@ import java.net.URLClassLoader; public class Downloader { public Downloader(){ - downloadRandoms(); - parseRandoms(); + if (downloadRandoms()) { + Core.verbose("Parsing random(s)..."); + parseRandoms(); + }else{ + Core.verbose("There do not seem to be any randoms for this server..."); + } } private void parseRandoms(){ - File myJar = new File(Directories.getCachePath() + "/" + /* Context.getInstance().getServerProviderInfo().getCRC32() + "-randoms.jar"*/ "randoms.jar"); + File myJar = new File(Directories.getCachePath() + "/randoms.jar"); + if (!myJar.exists() || !myJar.canRead()){ + return; + } try { URL url = myJar.toURI().toURL(); URL[] urls = new URL[]{url}; + String server = "ikov"; URLClassLoader child = new URLClassLoader(urls, this.getClass().getClassLoader()); Class classToLoad = Class.forName("org.parabot.randoms.Core", true, child); - Method method = classToLoad.getDeclaredMethod("init"); + Method method = classToLoad.getDeclaredMethod("init", String.class); Object instance = classToLoad.newInstance(); - Object result = method.invoke(instance); + Object result = method.invoke(instance, server); + Core.verbose("Parsed random(s)!"); } catch (NoSuchMethodException | InstantiationException | IllegalAccessException | InvocationTargetException | ClassNotFoundException | MalformedURLException e) { e.printStackTrace(); } } - private void downloadRandoms(){ + private boolean downloadRandoms(){ try { - WebUtil.downloadFile(new URL("http://sdn.parabot.org/providers/getRandom.php?id=" + Context.getInstance().getServerProviderInfo().getCRC32()), new File(Directories.getCachePath() + "/" + Context.getInstance().getServerProviderInfo().getCRC32() + "-randoms.jar"), new ProgressListener() { + File random = new File(Directories.getCachePath() + "/randoms.jar"); + if (random.exists()){ + Core.verbose("Random already exists, no need to download it."); + return true; + } + String downloadLink = "http://sdn.parabot.org/randoms.php"; + WebUtil.downloadFile(new URL(downloadLink), random, new ProgressListener() { @Override public void onProgressUpdate(double v) { @@ -50,8 +65,9 @@ public class Downloader { } }); - } catch (MalformedURLException e) { - e.printStackTrace(); + return random.exists(); + } catch (Exception e) { + return false; } } } diff --git a/src/org/rev317/min/ui/BotMenu.java b/src/org/rev317/min/ui/BotMenu.java index 44e17c6..6a2a37e 100644 --- a/src/org/rev317/min/ui/BotMenu.java +++ b/src/org/rev317/min/ui/BotMenu.java @@ -10,7 +10,9 @@ import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.ArrayList; - +/** + * @author JKetelaar, Everel + */ public class BotMenu implements ActionListener { private RandomUI randomUI; diff --git a/src/org/rev317/min/ui/RandomUI.java b/src/org/rev317/min/ui/RandomUI.java index bc7cd25..23e306b 100644 --- a/src/org/rev317/min/ui/RandomUI.java +++ b/src/org/rev317/min/ui/RandomUI.java @@ -8,7 +8,9 @@ import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.ArrayList; - +/** + * @author JKetelaar + */ public class RandomUI implements ActionListener { private JFrame frame; @@ -16,27 +18,33 @@ public class RandomUI implements ActionListener { public void openFrame(ArrayList randoms) { frame = new JFrame(); - frame.setBounds(100, 100, 351, 150); + frame.setBounds(100, 100, 351, 100 + (randoms.size() * 35)); frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); frame.getContentPane().setLayout(null); JButton btnSubmit = new JButton("Submit"); - btnSubmit.setBounds(228, 93, 117, 29); + btnSubmit.setBounds(228, 35 + (randoms.size() * 35), 117, 29); frame.getContentPane().add(btnSubmit); - JLabel lblRandoms = new JLabel("Randoms"); - lblRandoms.setBounds(6, 6, 61, 16); + JLabel lblRandoms = new JLabel("Randoms:"); + lblRandoms.setBounds(6, 6, 250, 16); frame.getContentPane().add(lblRandoms); - checkBoxes = new ArrayList<>(); - for (int i = 0; i < randoms.size(); i++){ - JCheckBox checkBox = new JCheckBox(randoms.get(i)); - checkBox.setBounds(6, 34 + (i * 35), 128, 23); - frame.getContentPane().add(checkBox); - if (isActive(randoms.get(i))){ - checkBox.setSelected(true); + if (randoms.size() > 0) { + checkBoxes = new ArrayList<>(); + for (int i = 0; i < randoms.size(); i++) { + JCheckBox checkBox = new JCheckBox(randoms.get(i)); + checkBox.setBounds(6, 35 + (i * 35), 250, 23); + frame.getContentPane().add(checkBox); + if (isActive(randoms.get(i))) { + checkBox.setSelected(true); + } + checkBoxes.add(checkBox); } - checkBoxes.add(checkBox); + }else{ + JLabel lblNone = new JLabel("None (yet)."); + lblNone.setBounds(6, 35, 120, 16); + frame.getContentPane().add(lblNone); } btnSubmit.addActionListener(this); @@ -44,18 +52,16 @@ public class RandomUI implements ActionListener { this.frame.setVisible(true); } - public JFrame getFrame() { - return frame; - } - @Override public void actionPerformed(ActionEvent e) { Context.getInstance().getRandomHandler().clearActiveRandoms(); - for (JCheckBox checkBox : this.checkBoxes){ - if (checkBox.isSelected()) { - for (Random r : Context.getInstance().getRandomHandler().getRandoms()){ - if (r.getName().equalsIgnoreCase(checkBox.getText().toLowerCase())){ - Context.getInstance().getRandomHandler().setActive(r.getName()); + if (checkBoxes != null && checkBoxes.size() > 0) { + for (JCheckBox checkBox : this.checkBoxes) { + if (checkBox.isSelected()) { + for (Random r : Context.getInstance().getRandomHandler().getRandoms()) { + if (r.getName().equalsIgnoreCase(checkBox.getText().toLowerCase())) { + Context.getInstance().getRandomHandler().setActive(r.getName()); + } } } }