commit b4de67d1bec086033ddddfed42a8742e470ec282 Author: Jonttu Date: Sat Mar 13 19:53:25 2021 +0200 Added WooBungee files diff --git a/.classpath b/.classpath new file mode 100644 index 0000000..ef141e6 --- /dev/null +++ b/.classpath @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b83d222 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/target/ diff --git a/.project b/.project new file mode 100644 index 0000000..e4dbee8 --- /dev/null +++ b/.project @@ -0,0 +1,23 @@ + + + WooBungee + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.m2e.core.maven2Builder + + + + + + org.eclipse.m2e.core.maven2Nature + org.eclipse.jdt.core.javanature + + diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..8b5c4dc --- /dev/null +++ b/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,16 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning +org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=ignore +org.eclipse.jdt.core.compiler.release=disabled +org.eclipse.jdt.core.compiler.source=1.8 diff --git a/.settings/org.eclipse.m2e.core.prefs b/.settings/org.eclipse.m2e.core.prefs new file mode 100644 index 0000000..f897a7f --- /dev/null +++ b/.settings/org.eclipse.m2e.core.prefs @@ -0,0 +1,4 @@ +activeProfiles= +eclipse.preferences.version=1 +resolveWorkspaceProjects=true +version=1 diff --git a/bin/woobungee/WooCommand.class b/bin/woobungee/WooCommand.class new file mode 100644 index 0000000..af3e64c Binary files /dev/null and b/bin/woobungee/WooCommand.class differ diff --git a/bin/woobungee/main.class b/bin/woobungee/main.class new file mode 100644 index 0000000..98105be Binary files /dev/null and b/bin/woobungee/main.class differ diff --git a/bungee.yml b/bungee.yml new file mode 100644 index 0000000..6c97a42 --- /dev/null +++ b/bungee.yml @@ -0,0 +1,4 @@ +name: WooBungee +main: woobungee.main +version: 1.0 +author: 'Jonttu1237, Discord: jonttuu :3#0925, Email: jonttu@jonttucraft.com' \ No newline at end of file diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..23e4c5f --- /dev/null +++ b/pom.xml @@ -0,0 +1,34 @@ + + 4.0.0 + WooBungee + WooBungee + 0.0.1-SNAPSHOT + + src + + + maven-compiler-plugin + 3.8.0 + + 1.8 + 1.8 + + + + + + + bungeecord-repo + https://oss.sonatype.org/content/repositories/snapshots + + + + + net.md-5 + bungeecord-api + 1.14-SNAPSHOT + jar + provided + + + \ No newline at end of file diff --git a/src/woobungee/WooCommand.java b/src/woobungee/WooCommand.java new file mode 100644 index 0000000..0c4a336 --- /dev/null +++ b/src/woobungee/WooCommand.java @@ -0,0 +1,48 @@ +package woobungee; + +import java.io.File; +import java.io.IOException; + +import net.md_5.bungee.api.CommandSender; +import net.md_5.bungee.api.chat.TextComponent; +import net.md_5.bungee.api.plugin.Command; +import net.md_5.bungee.config.ConfigurationProvider; +import net.md_5.bungee.config.YamlConfiguration; + +public class WooCommand extends Command{ + + public WooCommand() { + super("woobungee", "woobungee.admin"); + } + + @Override + public void execute(CommandSender commandSender, String[] strings) { + + if(strings.length != 1) { + commandSender.sendMessage(new TextComponent("Usage: /woobungee ")); + return; + } + + if(strings[0].equals("reload")) { + + try { + main.config = ConfigurationProvider.getProvider(YamlConfiguration.class) + .load(new File("plugins/woobungee/config.yml")); + } catch (IOException e) { + e.printStackTrace(); + } + + commandSender.sendMessage(new TextComponent("WooBungee reloaded!")); + + } else if(strings[0].equals("check")) { + + main.update(); + commandSender.sendMessage(new TextComponent("WooBungee orders updated!")); + + } else { + commandSender.sendMessage(new TextComponent("Usage: /woobungee ")); + } + + } + +} diff --git a/src/woobungee/main.java b/src/woobungee/main.java new file mode 100644 index 0000000..0f92752 --- /dev/null +++ b/src/woobungee/main.java @@ -0,0 +1,198 @@ +package woobungee; + +import java.io.BufferedReader; +import java.io.File; +import java.io.InputStreamReader; +import java.net.URL; +import java.util.Map; +import java.util.concurrent.TimeUnit; + +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + +import net.md_5.bungee.api.ProxyServer; +import net.md_5.bungee.api.chat.TextComponent; +import net.md_5.bungee.api.plugin.Plugin; +import net.md_5.bungee.config.Configuration; +import net.md_5.bungee.config.ConfigurationProvider; +import net.md_5.bungee.config.YamlConfiguration; + +public class main extends Plugin{ + + public static Configuration config; + + @Override + public void onEnable() { + + saveDefaultConfig(); + + try { + config = ConfigurationProvider.getProvider(YamlConfiguration.class) + .load(new File("plugins/woobungee/config.yml")); + } catch (Exception e) { + e.printStackTrace(); + } + + getProxy().getPluginManager().registerCommand(this, new WooCommand()); + + if(!update()) { + ProxyServer.getInstance().getConsole().sendMessage(new TextComponent("WooBungee update failed, check your key!")); + } + + scheduleUpdate(); + + } + + private static boolean sendUpdate(String jsonString) + { + String data = ""; + + try { + + BufferedReader bReader = new BufferedReader( + new InputStreamReader( + new URL(config.getString("url") + "?wmc_key=" + config.getString("key") + "&processedOrders=" + jsonString) + .openConnection().getInputStream())); + + String line = null; + while((line = bReader.readLine()) != null) { + if(data.equals("")) { + data = line; + } else { + data = data + "\n" + line; + } + } + + } catch (Exception e) { + e.printStackTrace(); + } + + JsonObject o = new JsonParser().parse(data).getAsJsonObject(); + + return o.get("success").getAsBoolean(); + + } + + public static boolean update() { + + try { + + BufferedReader bReader = new BufferedReader( + new InputStreamReader( + new URL(config.getString("url") + "?wmc_key=" + config.getString("key")) + .openConnection().getInputStream())); + + String data = ""; + String line = null; + while((line = bReader.readLine()) != null) { + if(data.equals("")) { + data = line; + } else { + data = data + "\n" + line; + } + } + + JsonObject o = new JsonParser().parse(data).getAsJsonObject(); + + if(!o.get("success").getAsBoolean()) { + return false; + } + + JsonArray processedData = new JsonArray(); + + if(!(o.get("data") instanceof JsonObject)) { + return true; + } + + for(Map.Entry entry : o.get("data").getAsJsonObject().entrySet()) { + + ProxyServer.getInstance().getConsole().sendMessage(new TextComponent("WooBungee new product, executing commands!")); + + String username = entry.getKey(); + String orderId = null; + + if(processUpdate(username)) { + + for(Map.Entry e : o.get("data").getAsJsonObject().get(username) + .getAsJsonObject().entrySet()) { + orderId = e.getKey(); + } + + + processedData.add(Integer.parseInt(orderId)); + + for(int i = 0; i < o.get("data").getAsJsonObject().get(username).getAsJsonObject().get(orderId).getAsJsonArray().size(); i++) { + + String command = o.get("data").getAsJsonObject().get(username).getAsJsonObject().get(orderId).getAsJsonArray().get(i).getAsString(); + command = command.replaceAll(""", "\""); + + ProxyServer.getInstance().getConsole().sendMessage(new TextComponent("WooBungee executed command: " + command)); + + ProxyServer.getInstance().getPluginManager().dispatchCommand(ProxyServer.getInstance().getConsole(), command); + + } + + } + + } + + if ( 1 > processedData.size()) { + return false; + } + + if(!sendUpdate(processedData.toString())) { + return false; + } + + bReader.close(); + + return true; + + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + + private static boolean processUpdate(String name) { + if(config.getBoolean("progressoffline")) { + return true; + } + if(ProxyServer.getInstance().getPlayer(name) != null && ProxyServer.getInstance().getPlayer(name).isConnected()) { + return true; + } + return false; + } + + public void scheduleUpdate() { + ProxyServer.getInstance().getScheduler().schedule(this, new Runnable() { + @Override + public void run() { + update(); + scheduleUpdate(); + } + }, config.getInt("update_interval"), TimeUnit.SECONDS); + } + + private void saveDefaultConfig() { + new File("plugins/woobungee/").mkdirs(); + File file = new File("plugins/woobungee/config.yml"); + if(!file.exists()) { + Configuration config = new Configuration(); + config.set("update_interval", 1500); + config.set("url", "http://playground.dev"); + config.set("key", ""); + config.set("progressoffline", false); + + try { + ConfigurationProvider.getProvider(YamlConfiguration.class) + .save(config, new File("plugins/woobungee/config.yml")); + } catch (Exception e) { + e.printStackTrace(); + } + } + } + +}