From b4de67d1bec086033ddddfed42a8742e470ec282 Mon Sep 17 00:00:00 2001 From: Jonttu Date: Sat, 13 Mar 2021 19:53:25 +0200 Subject: [PATCH] Added WooBungee files --- .classpath | 20 +++ .gitignore | 1 + .project | 23 ++++ .settings/org.eclipse.jdt.core.prefs | 16 +++ .settings/org.eclipse.m2e.core.prefs | 4 + bin/woobungee/WooCommand.class | Bin 0 -> 1531 bytes bin/woobungee/main.class | Bin 0 -> 4620 bytes bungee.yml | 4 + pom.xml | 34 +++++ src/woobungee/WooCommand.java | 48 +++++++ src/woobungee/main.java | 198 +++++++++++++++++++++++++++ 11 files changed, 348 insertions(+) create mode 100644 .classpath create mode 100644 .gitignore create mode 100644 .project create mode 100644 .settings/org.eclipse.jdt.core.prefs create mode 100644 .settings/org.eclipse.m2e.core.prefs create mode 100644 bin/woobungee/WooCommand.class create mode 100644 bin/woobungee/main.class create mode 100644 bungee.yml create mode 100644 pom.xml create mode 100644 src/woobungee/WooCommand.java create mode 100644 src/woobungee/main.java 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 0000000000000000000000000000000000000000..af3e64cf775ce15ed1a5360d3af5a2c4d71694af GIT binary patch literal 1531 zcmeHHO^*^m5Pc0S10yRd`{B2?2NS%=#giB>M576QB;Xq2sToS>%}h7xX>j-Me=^ZT z@BS!b&BBHd$H*Q`Jb0LzuF0#{HC34}*ghS5#!sywllTAYyym?g&)lMnzt-xv*w@a^b$%{kb)b^CV>f3$PsV=< z8=`{k8n$pzV87X2iLd9KHsf|C&U#lHdO1smC9h#EcuB}1rEA- zbI=wD=$N9J=kUAD?pkBp@A59L;6R9v8z_H`>%T}g9D#EPN+9gnnTzPD&bnV;t+)G` zU|2cNO=L}~Q_rLKOp{YCnw$i<&Rt)2C%{dC?X^}3)L!T`WtsJP*i+mAuR~s_K!HzN zD6<-)70)H!1K&3vUa&tCL;%Z|@wl}mAzkwgY znL7d`xC2Li4`Q68Z6dbaM5Gl|JtVT%QAX`rh5MNnA4#xvr(Nc@r1DhB zS;^21#wVyM)S#$yN?MMLrK-xc7I{vUcHV)`!llI(O;q99E!#lpZ1onVb6Qn#1s%iK z&n&ZY*kT=H)w~Byx{BN)^y(Vw5{5=H&kI803s68Q7UkF3qf$RpvzzA{#m3;H$MaP? zgYS)!PW_)Q*UX?3ww>5MGfLJ2LjnP3ILEY!)$)Hbb&?)v&DPqG-mYESdpX;1`t6Us zn=a(!?*6I|YYAyaY0MEZK{a8x6IV{!tG^xZgv+kjqM)vYI3Ii%><15q2pk>HZl?Qr ztA#91yK-PKi;?a{RL*g|;6girk*o?>xWu$@{l>#yTM`Bg5^beJt?H&I3aJ^ zEFbn03Z}zuClms{;WEEi$uo-w8GGcf(r}u6yc!5PBR?6 + 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(); + } + } + } + +}