package com.gamebuster19901.GameBuSK;
import java.io.File;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import org.apache.ant.compress.taskdefs.Unzip;
import org.apache.commons.io.FileUtils;
import org.bukkit.plugin.java.JavaPlugin;
import org.openqa.selenium.WebElement;
import com.gamebuster19901.GameBuSK.conditions.CondIsBrowser;
import com.gamebuster19901.GameBuSK.effects.EffClickElement;
import com.gamebuster19901.GameBuSK.effects.EffCloseBrowser;
import com.gamebuster19901.GameBuSK.effects.EffGoToURL;
import com.gamebuster19901.GameBuSK.effects.EffNewTab;
import com.gamebuster19901.GameBuSK.effects.EffOpenBrowser;
import com.gamebuster19901.GameBuSK.effects.EffTypeToElement;
import com.gamebuster19901.GameBuSK.effects.GWebDriver;
import com.gamebuster19901.GameBuSK.expressions.ExprBrowserType;
import com.gamebuster19901.GameBuSK.expressions.ExprGetAllWindows;
import com.gamebuster19901.GameBuSK.expressions.ExprGetBrowser;
import com.gamebuster19901.GameBuSK.expressions.ExprGetElement;
import com.gamebuster19901.GameBuSK.expressions.ExprKey;
import com.gamebuster19901.GameBuSK.expressions.ExprPitch;
import com.gamebuster19901.GameBuSK.expressions.ExprYaw;
import com.gamebuster19901.GameBuSK.misc.*;
import com.gamebuster19901.GameBuSK.types.BrowserType;
import com.gamebuster19901.GameBuSK.types.Element;
import com.gamebuster19901.GameBuSK.types.KeyType;
import com.gamebuster19901.GameBuSK.types.SearchType;
import ch.njol.skript.Skript;
import ch.njol.skript.conditions.base.PropertyCondition;
import ch.njol.skript.lang.ExpressionType;
public class GameBuSK extends JavaPlugin {
//the operating system
public static String os;
public static Boolean debug;
public static File firefoxFL;
public static void main(String args[]){
//need main method so maven dosn't fuck up
}
public void onEnable() {
boolean googleDriverExists = false;
//boolean firefoxDriverExists = false;
String path = getClass().getProtectionDomain().getCodeSource().getLocation().getPath();
path = path.substring(0, path.lastIndexOf("/"));
path = path.replaceAll("%20", " ");
File chromeD = new File(path + "/GameBuSK/dependencies/chrome.zip"); //directory of zip
File firefoxD = new File(path + "/GameBuSK/dependencies/firefox.zip"); //directory of zip
File chromeF = null; //final directory
File firefoxF = null; //final directory
String chromeFL = null; //final directory location (includes file suffix)
firefoxFL = null; //final directory location (includes file suffix)
URL chromeLoc = null; //Where the chrome download is located on the internet
URL firefoxLoc = null; //Where the firefox download is located on the internet
if (!getConfig().contains("Chrome")){
getConfig().set("Chrome", false);
getLogger().info("Chrome is false");
}
if (!getConfig().contains("Firefox")){
getConfig().set("Firefox", false);
getLogger().info("Firefox is false");
}
if (!getConfig().contains("Linux")){
getConfig().set("Linux", false);
getLogger().info("Linux is false");
}
if(!getConfig().contains("operating system")){
getConfig().set("operating system", System.getProperty("os.name"));
getLogger().info("OS is " + System.getProperty("os.name"));
}
if (!getConfig().contains("debug")){
getConfig().set("debug", false);
}
debug = getConfig().getBoolean("debug");
if (getConfig().getString("operating system").contains("Windows")){
os = "Windows";
Debug.Debug("Operating system is windows");
chromeF = new File(path + "/GameBuSK/dependencies/chromedriver");
chromeFL = chromeF + "/chromedriver.exe";
firefoxF = new File(path + "/GameBuSK/dependencies/firefoxdriver");
firefoxFL = new File(firefoxF + "/firefoxdriver.exe");
Debug.Debug("defined new file " + chromeF);
//Debug.Debug("defined new file " + firefoxF);
try {
chromeLoc = new URL("http://chromedriver.storage.googleapis.com/2.20/chromedriver_win32.zip");
Debug.Debug("Downloading chrome from " + chromeLoc);
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
firefoxLoc = new URL("https://github.com/jgraham/wires/releases/download/v0.5.0/wires-v0.5.0-win.zip");
Debug.Debug("Downloading firefox from " + chromeLoc);
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
else if (getConfig().getString("operating system").contains("Linux")){
os = "Linux";
chromeF = new File(path + "/GameBuSK/dependencies/chromedriver");
chromeFL = chromeF + "/chromedriver";
firefoxF = new File(path + "/GameBuSK/dependencies/firefoxdriver");
try {
chromeLoc = new URL("http://chromedriver.storage.googleapis.com/2.20/chromedriver_linux32.zip");
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
firefoxLoc = new URL("https://github.com/jgraham/wires/releases/download/v0.5.0/wires-0.5.0-linux64.gz");
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
else if (getConfig().getString("operating system").contains("Mac")||getConfig().getString("operating system").contains("OS X")){
os = "Mac";
chromeF = new File(path + "/GameBuSK/dependencies/chromedriver");
chromeFL = chromeF + "/chromedriver";
firefoxF = new File(path + "/GameBuSK/dependencies/firefoxdriver");
try {
chromeLoc = new URL("http://chromedriver.storage.googleapis.com/2.20/chromedriver_mac32.zip");
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
chromeLoc = new URL ("https://github.com/jgraham/wires/releases/download/v0.5.0/wires-0.5.0-osx.gz");
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
else{
getLogger().severe("Selenium does not support this operating system");
}
if (getConfig().getBoolean("Chrome")){
if (!chromeF.exists()) {
getLogger().info("Chrome has been enabled but the driver has not been downloaded... downloading now. Please do not close the server.");
try {
FileUtils.copyURLToFile(chromeLoc, chromeD);
getLogger().info("Unzipping file...");
Unzip chromeUnzip = new Unzip();
chromeUnzip.setSrc(chromeD);
chromeUnzip.setDest(chromeF);
chromeUnzip.execute();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
catch (NullPointerException e){
getLogger().severe("Operating system not supported, could not download chrome.");
}
}
}
/*
if (getConfig().getBoolean("Firefox")){
if (!firefoxF.exists()){
getLogger().info("Firefox has been enabled but the driver has not been downloaded... downloading now. Please do not close the server.");
try{
FileUtils.copyURLToFile(firefoxLoc, firefoxD);
getLogger().info("Unzipping file...");
Unzip firefoxUnzip = new Unzip();
firefoxUnzip.setSrc(firefoxD);
firefoxUnzip.setDest(firefoxF);
firefoxUnzip.execute();
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (NullPointerException e){
getLogger().severe("Operating system not supported, could not download chrome.");
}
}
}
*/
if (chromeF.exists()){
googleDriverExists = true;
System.setProperty("webdriver.chrome.driver", chromeFL.toString()); //The chrome binary MUST be set in a system property
Debug.Debug("set chrome driver property to " + chromeFL.toString());
File theFile = new File(chromeFL);
Debug.Debug("setting file \"theFile\" to \"" + chromeFL + "\"");
Debug.Debug("can theFile execute?: " + theFile.canExecute()); //have to do the following because Ubuntu disables all executables by default.
theFile.setExecutable(true);
Debug.Debug("setting \"" + chromeFL + "\" as executable");
Debug.Debug("now can theFile execute?: " + theFile.canExecute());
}
saveConfig();
try{
GWebDriver.register();
BrowserType.register();
Element.register();
SearchType.register();
KeyType.register();
Skript.registerAddon(this);
Skript.registerExpression(ExprYaw.class,Number.class,ExpressionType.PROPERTY,"[gamebuster's] [fixed] yaw of %location%","%location%'s [fixed] yaw");
Skript.registerExpression(ExprPitch.class,Number.class,ExpressionType.PROPERTY,"[gamebuster's] [fixed] pitch of %location%","%location%'s [fixed] pitch");
Skript.registerExpression(ExprGetBrowser.class, GWebDriver.class, ExpressionType.PROPERTY, "browser named %string%");
Skript.registerExpression(ExprGetAllWindows.class, String.class, ExpressionType.SIMPLE, "all browsers");
Skript.registerExpression(ExprBrowserType.class, BrowserType.class, ExpressionType.PROPERTY, "type of %browser%", "%browser%'s type");
Skript.registerExpression(ExprGetElement.class, WebElement.class, ExpressionType.PROPERTY, "element found (by|using) %searchtype% [with parameter] %string% in %browser%");
Skript.registerExpression(ExprKey.class, String.class, ExpressionType.PROPERTY, "%keytype% [key]");
Skript.registerEffect(EffGoToURL.class, "(go to|open) [url] %string% in %browser%", "set %browser%'s url to %string%");
Skript.registerEffect(EffNewTab.class, "open new tab in %browser%");
Skript.registerEffect(EffCloseBrowser.class, "close browser %browser%");
Skript.registerEffect(EffOpenBrowser.class, "open %browsertype% [browser] named %string%");
Skript.registerEffect(EffClickElement.class, "click %element%");
Skript.registerEffect(EffTypeToElement.class, "send [key[s]] %string% to %element%");
PropertyCondition.register(CondIsBrowser.class, "browsertype", "browsertype");
//types|Text|String
getLogger().info("Do not take life too seriously. You will never get out of it alive.");
}
catch (Exception e){
e.printStackTrace();
}
}
public void onDisable() {
double n = Math.random() * 100;
if (n < 50){
getLogger().info("NO GOD! NO GOD PLEASE NO, NOO NOOO.... NOOOOOOOOOOOOOOOOOOOO!");
}
else{
getLogger().info("Y u do dis 3:");
}
}
}
Comments
0 B
|👍
/👎