Merge branch 'master' of github.com:Parabot/Parabot

This commit is contained in:
JKetelaar
2016-05-23 17:53:49 +02:00
10 changed files with 124 additions and 21 deletions
+10 -3
View File
@@ -7,9 +7,9 @@ notifications:
secure: ciAOsdv9lf/IbAwyzeR/z2nlBSevmBHBqca6tf0Yh2DIyAx/uUo1ojon0W7Kv6tCECGhSTdfQAnZ+nFjjqaRs+Jq4svd9WKYrFuZyOWmT31iSJ/nvPymRvevSsgwpSKr0nJS9dxePKto/T3ozW29kx88eaJQH17zOaX2rfuIje4= secure: ciAOsdv9lf/IbAwyzeR/z2nlBSevmBHBqca6tf0Yh2DIyAx/uUo1ojon0W7Kv6tCECGhSTdfQAnZ+nFjjqaRs+Jq4svd9WKYrFuZyOWmT31iSJ/nvPymRvevSsgwpSKr0nJS9dxePKto/T3ozW29kx88eaJQH17zOaX2rfuIje4=
webhooks: webhooks:
urls: urls:
- http://v3.bdn.parabot.org/api/client/build - https://dockbit.com/webhooks/7PrMKazLtLw5hhpXvakVKWoq
on_success: always on_success: always
on_failure: never on_failure: always
on_start: never on_start: never
env: env:
@@ -20,5 +20,12 @@ env:
before_install: before_install:
- chmod +x ./.travis/artifact-upload.sh - chmod +x ./.travis/artifact-upload.sh
addons:
artifacts: true
s3_region: "us-west-1"
after_success: sh ./.travis/artifact-upload.sh cache:
directories:
- .autoconf
- $HOME/.m2
+1 -1
View File
@@ -2,7 +2,7 @@
# Parabot # Parabot
Parabot V2.4. Parabot V2.5.
#### Website #### Website
+5
View File
@@ -73,6 +73,11 @@
<artifactId>bugsnag</artifactId> <artifactId>bugsnag</artifactId>
<version>1.2.8</version> <version>1.2.8</version>
</dependency> </dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
</dependency>
</dependencies> </dependencies>
<build> <build>
@@ -163,6 +163,7 @@ public class Context {
* Loads the game * Loads the game
*/ */
public void load() { public void load() {
BotUI.getInstance().getJMenuBar().remove(2);
Core.verbose("Parsing server jar..."); Core.verbose("Parsing server jar...");
serverProvider.init(); serverProvider.init();
serverProvider.parseJar(); serverProvider.parseJar();
@@ -40,6 +40,7 @@ public class Directories {
cached.put("Settings", new File(cached.get("Root"), "/Parabot/settings/")); cached.put("Settings", new File(cached.get("Root"), "/Parabot/settings/"));
cached.put("Servers", new File(cached.get("Root"), "/Parabot/servers/")); cached.put("Servers", new File(cached.get("Root"), "/Parabot/servers/"));
cached.put("Cache", new File(cached.get("Root"), "/Parabot/cache/")); cached.put("Cache", new File(cached.get("Root"), "/Parabot/cache/"));
cached.put("Screenshots", new File(cached.get("Root"), "/Parabot/screenshots/"));
Core.verbose("Directories cached."); Core.verbose("Directories cached.");
clearCache(259200); clearCache(259200);
@@ -192,6 +193,16 @@ public class Directories {
return cached.get("Home"); return cached.get("Home");
} }
/**
* Returns the screenshot folder.
*
* @return
*/
public static File getScreenshotDir() {
return cached.get("Screenshots");
}
/** /**
* Validates all directories and makes them if necessary * Validates all directories and makes them if necessary
*/ */
+50 -4
View File
@@ -1,17 +1,23 @@
package org.parabot.core.ui; package org.parabot.core.ui;
import org.parabot.core.Context; import org.parabot.core.Context;
import org.parabot.core.Directories;
import org.parabot.core.ui.components.GamePanel; import org.parabot.core.ui.components.GamePanel;
import org.parabot.core.ui.components.VerboseLoader; import org.parabot.core.ui.components.VerboseLoader;
import org.parabot.core.ui.images.Images; import org.parabot.core.ui.images.Images;
import org.parabot.core.ui.utils.SwingUtil; import org.parabot.core.ui.utils.SwingUtil;
import org.parabot.environment.OperatingSystem; import org.parabot.environment.OperatingSystem;
import org.parabot.environment.api.utils.StringUtils;
import org.parabot.environment.scripts.Script; import org.parabot.environment.scripts.Script;
import org.parabot.environment.scripts.randoms.Random; import org.parabot.environment.scripts.randoms.Random;
import javax.imageio.ImageIO;
import javax.swing.*; import javax.swing.*;
import java.awt.*; import java.awt.*;
import java.awt.event.*; import java.awt.event.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
/** /**
@@ -25,7 +31,7 @@ public class BotUI extends JFrame implements ActionListener, ComponentListener,
private static BotUI instance; private static BotUI instance;
private static JDialog dialog; private static JDialog dialog;
private JMenuItem run, pause, stop; private JMenuItem run, pause, stop, cacheClear;
private boolean runScript, pauseScript; private boolean runScript, pauseScript;
public BotUI(String username, String password) { public BotUI(String username, String password) {
@@ -64,11 +70,13 @@ public class BotUI extends JFrame implements ActionListener, ComponentListener,
return instance; return instance;
} }
private void createMenu() { private void createMenu() {
JMenuBar menuBar = new JMenuBar(); JMenuBar menuBar = new JMenuBar();
JMenu file = new JMenu("File"); JMenu file = new JMenu("File");
JMenu scripts = new JMenu("Script"); JMenu scripts = new JMenu("Script");
JMenu features = new JMenu("Features");
JMenuItem screenshot = new JMenuItem("Create screenshot"); JMenuItem screenshot = new JMenuItem("Create screenshot");
JMenuItem proxy = new JMenuItem("Network"); JMenuItem proxy = new JMenuItem("Network");
@@ -94,6 +102,9 @@ public class BotUI extends JFrame implements ActionListener, ComponentListener,
stop.setEnabled(false); stop.setEnabled(false);
stop.setIcon(new ImageIcon(Images.getResource("/storage/images/stop.png"))); stop.setIcon(new ImageIcon(Images.getResource("/storage/images/stop.png")));
cacheClear = new JMenuItem("Clear cache");
cacheClear.setIcon(new ImageIcon(Images.getResource("/storage/images/trash.png")));
screenshot.addActionListener(this); screenshot.addActionListener(this);
proxy.addActionListener(this); proxy.addActionListener(this);
randoms.addActionListener(this); randoms.addActionListener(this);
@@ -101,6 +112,7 @@ public class BotUI extends JFrame implements ActionListener, ComponentListener,
logger.addActionListener(this); logger.addActionListener(this);
explorer.addActionListener(this); explorer.addActionListener(this);
exit.addActionListener(this); exit.addActionListener(this);
cacheClear.addActionListener(this);
run.addActionListener(this); run.addActionListener(this);
pause.addActionListener(this); pause.addActionListener(this);
@@ -118,8 +130,12 @@ public class BotUI extends JFrame implements ActionListener, ComponentListener,
scripts.add(pause); scripts.add(pause);
scripts.add(stop); scripts.add(stop);
features.add(cacheClear);
menuBar.add(file); menuBar.add(file);
menuBar.add(scripts); menuBar.add(scripts);
menuBar.add(features);
setJMenuBar(menuBar); setJMenuBar(menuBar);
} }
@@ -130,7 +146,33 @@ public class BotUI extends JFrame implements ActionListener, ComponentListener,
switch (command) { switch (command) {
case "Create screenshot": case "Create screenshot":
JOptionPane.showMessageDialog(this, "We are still working on this..."); try {
Robot robot = new Robot();
Rectangle parabotScreen = new Rectangle((int) getLocation().getX(), (int) getLocation().getY(), getWidth(), getHeight());
BufferedImage image = robot.createScreenCapture(parabotScreen);
String randString = StringUtils.randomString(10);
boolean search = true;
boolean duplicate = false;
while (search == true) {
for (File f : Directories.getScreenshotDir().listFiles()) {
if (f.getAbsoluteFile().getName().contains(randString)) {
duplicate = true;
break;
}
}
if (!duplicate) {
search = false;
} else {
randString = StringUtils.randomString(10);
duplicate = false;
}
}
File file = new File(Directories.getScreenshotDir().getPath() + "/" + randString + ".png");
ImageIO.write(image, "png", file);
} catch (IOException | AWTException k) {
k.printStackTrace();
}
break; break;
case "Exit": case "Exit":
System.exit(0); System.exit(0);
@@ -173,7 +215,7 @@ public class BotUI extends JFrame implements ActionListener, ComponentListener,
BotUI.getInstance().revalidate(); BotUI.getInstance().revalidate();
if (!Logger.getInstance().isClearable()) { if (!Logger.getInstance().isClearable()) {
Logger.getInstance().setClearable(); Logger.getInstance().setClearable();
} else if(Logger.getInstance().isClearable() && !Logger.getInstance().isVisible()) { } else if (Logger.getInstance().isClearable() && !Logger.getInstance().isVisible()) {
Logger.clearLogger(); Logger.clearLogger();
Logger.addMessage("Logger started", false); Logger.addMessage("Logger started", false);
} }
@@ -181,6 +223,9 @@ public class BotUI extends JFrame implements ActionListener, ComponentListener,
case "Disable dialog": case "Disable dialog":
BotDialog.getInstance().setVisible(!dialog.isVisible()); BotDialog.getInstance().setVisible(!dialog.isVisible());
break; break;
case "Clear cache":
Directories.clearCache();
break;
default: default:
System.out.println("Invalid command: " + command); System.out.println("Invalid command: " + command);
} }
@@ -274,4 +319,5 @@ public class BotUI extends JFrame implements ActionListener, ComponentListener,
@Override @Override
public void windowOpened(WindowEvent arg0) { public void windowOpened(WindowEvent arg0) {
} }
}
}
@@ -21,7 +21,7 @@ import java.awt.image.RescaleOp;
/** /**
* An informative JPanel which tells the user what bot is doing * An informative JPanel which tells the user what bot is doing
* *
* @author Everel * @author Everel, EmmaStone
*/ */
public class VerboseLoader extends JPanel implements ProgressListener { public class VerboseLoader extends JPanel implements ProgressListener {
private static final long serialVersionUID = 7412412644921803896L; private static final long serialVersionUID = 7412412644921803896L;
@@ -144,7 +144,6 @@ public class VerboseLoader extends JPanel implements ProgressListener {
login.setOpaque(false); login.setOpaque(false);
login.addActionListener(new ActionListener() { login.addActionListener(new ActionListener() {
@Override @Override
public void actionPerformed(ActionEvent e) { public void actionPerformed(ActionEvent e) {
if (manager.login(userInput.getText(), passInput.getText(), false)) { if (manager.login(userInput.getText(), passInput.getText(), false)) {
@@ -157,17 +156,17 @@ public class VerboseLoader extends JPanel implements ProgressListener {
}); });
loginPanel.add(Box.createRigidArea(new Dimension(0, 5))); loginPanel.add(Box.createRigidArea(new Dimension(0, 8)));
loginPanel.add(usernameLabel); loginPanel.add(usernameLabel);
loginPanel.add(Box.createRigidArea(new Dimension(0, 5))); loginPanel.add(Box.createRigidArea(new Dimension(0, 4)));
loginPanel.add(userInput); loginPanel.add(userInput);
loginPanel.add(Box.createRigidArea(new Dimension(0, 5))); loginPanel.add(Box.createRigidArea(new Dimension(0, 4)));
loginPanel.add(passwordLabel); loginPanel.add(passwordLabel);
loginPanel.add(Box.createRigidArea(new Dimension(0, 5))); loginPanel.add(Box.createRigidArea(new Dimension(0, 4)));
loginPanel.add(passInput); loginPanel.add(passInput);
loginPanel.add(Box.createRigidArea(new Dimension(0, 5))); loginPanel.add(Box.createRigidArea(new Dimension(0, 2)));
loginPanel.add(login); loginPanel.add(login);
loginPanel.add(Box.createRigidArea(new Dimension(0, 5))); loginPanel.add(Box.createRigidArea(new Dimension(0, 4)));
add(loginPanel, new GridBagConstraints()); add(loginPanel, new GridBagConstraints());
} }
@@ -205,10 +204,10 @@ public class VerboseLoader extends JPanel implements ProgressListener {
g.setStroke(new BasicStroke(5)); g.setStroke(new BasicStroke(5));
g.setPaint(Color.WHITE); g.setPaint(Color.WHITE);
g.draw(new Line2D.Float(0, 0, this.getWidth(), 0)); g.draw(new Line2D.Float(0, 1, this.getWidth(), 1)); //TOP
g.draw(new Line2D.Float(0, 0, 0, 120)); g.draw(new Line2D.Float(0, 0, 0, 120)); //LEFT
g.draw(new Line2D.Float(0, 120, this.getWidth(), 120)); g.draw(new Line2D.Float(0, 120, this.getWidth(), 120)); //BOTTOM
g.draw(new Line2D.Float(this.getWidth() - 6, 0, this.getWidth() - 6, 120)); g.draw(new Line2D.Float(this.getWidth() - 6, 0, this.getWidth() - 6, 120)); //RIGHT
g.setColor(Color.white); g.setColor(Color.white);
@@ -284,4 +283,4 @@ public class VerboseLoader extends JPanel implements ProgressListener {
public void updateDownloadSpeed(double mbPerSecond) { public void updateDownloadSpeed(double mbPerSecond) {
progressBar.setText(String.format("(%.2fMB/s)", mbPerSecond)); progressBar.setText(String.format("(%.2fMB/s)", mbPerSecond));
} }
} }
Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

@@ -0,0 +1,34 @@
package org.parabot;
import org.junit.Assert;
import org.junit.Test;
import org.parabot.core.network.NetworkInterface;
import java.util.Arrays;
/**
* @author JKetelaar
*/
public class MacAddressUnitTest {
@Test
public void test(){
String[] macString = new String[]{
"19",
"5C",
"11",
"19",
"5C",
"11"
};
NetworkInterface networkInterface = new NetworkInterface();
byte[] mac = new byte[6];
for (int j = 0; j < 6; j++) {
mac[j] = Byte.parseByte(macString[j], 16); // parses a hex number
}
NetworkInterface.setMac(mac);
Assert.assertArrayEquals(networkInterface.getHardwareAddress(), mac);
}
}