From df65ae2b0e92286f4431050d5138bc30006dfde1 Mon Sep 17 00:00:00 2001 From: ajgeiss0702 Date: Sun, 16 Aug 2020 14:47:44 -0700 Subject: [PATCH] send queue plugin messages in batches --- src/main/java/us/ajg0702/queue/Main.java | 15 ++++++++ .../java/us/ajg0702/queue/spigot/Main.java | 35 ++++++++++++++++--- 2 files changed, 46 insertions(+), 4 deletions(-) diff --git a/src/main/java/us/ajg0702/queue/Main.java b/src/main/java/us/ajg0702/queue/Main.java index 2aeb16f..e62c69a 100644 --- a/src/main/java/us/ajg0702/queue/Main.java +++ b/src/main/java/us/ajg0702/queue/Main.java @@ -5,6 +5,8 @@ import java.io.DataInputStream; import java.io.IOException; import java.util.LinkedHashMap; import java.util.List; + +import net.md_5.bungee.api.ProxyServer; import net.md_5.bungee.api.chat.BaseComponent; import net.md_5.bungee.api.chat.TextComponent; import net.md_5.bungee.api.connection.ProxiedPlayer; @@ -239,6 +241,19 @@ public class Main extends Plugin implements Listener { //man.addToQueue(player, data); } + if(subchannel.equals("massqueue")) { + String data = in.readUTF(); + String[] parts = data.split(","); + for(String part : parts) { + String[] pparts = part.split(":"); + String pname = pparts[0]; + String pserver = pparts[1]; + ProxiedPlayer p = ProxyServer.getInstance().getPlayer(pname); + String[] args = new String[1]; + args[0] = pserver; + moveCommand.execute(p, args); + } + } if(subchannel.equals("queuename")) { BungeeUtils.sendCustomData(player, "queuename", aliases.getAlias(man.getQueuedName(player))); } diff --git a/src/main/java/us/ajg0702/queue/spigot/Main.java b/src/main/java/us/ajg0702/queue/spigot/Main.java index 06d1ba7..5e5a1bd 100644 --- a/src/main/java/us/ajg0702/queue/spigot/Main.java +++ b/src/main/java/us/ajg0702/queue/spigot/Main.java @@ -10,6 +10,7 @@ import org.bukkit.event.player.PlayerQuitEvent; import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.plugin.messaging.PluginMessageListener; +import com.google.common.collect.Iterables; import com.google.common.io.ByteArrayDataInput; import com.google.common.io.ByteArrayDataOutput; import com.google.common.io.ByteStreams; @@ -20,6 +21,9 @@ public class Main extends JavaPlugin implements PluginMessageListener,Listener { boolean papi = false; Placeholders placeholders; + + Config config; + public void onEnable() { getServer().getMessenger().registerIncomingPluginChannel(this, "ajqueue:tospigot", this); getServer().getMessenger().registerOutgoingPluginChannel(this, "ajqueue:tobungee"); @@ -36,13 +40,27 @@ public class Main extends JavaPlugin implements PluginMessageListener,Listener { getLogger().info("Registered PlaceholderAPI placeholders"); } - getLogger().info("Spigot side enabled! v"+getDescription().getVersion()); - /*Bukkit.getScheduler().runTaskTimer(this, new Runnable() { + Bukkit.getScheduler().runTaskTimer(this, new Runnable() { public void run() { - sendMessage + if(Bukkit.getOnlinePlayers().size() <= 0) return; + String msg = ""; + for(Player p : queuebatch.keySet()) { + msg += p.getName()+":"+queuebatch.get(p)+","; + } + if(msg.length() > 1) { + msg = msg.substring(0, msg.length()-1); + } + queuebatch.clear(); + sendMessage("massqueue", msg); } - }, 0, 2*20);*/ + }, 2*20, 20); + + config = new Config(this); + + getLogger().info("Spigot side enabled! v"+getDescription().getVersion()); } + + HashMap queuebatch = new HashMap<>(); @Override public void onPluginMessageReceived(String channel, Player player, byte[] message) { @@ -140,6 +158,15 @@ public class Main extends JavaPlugin implements PluginMessageListener,Listener { player.sendPluginMessage(this, "ajqueue:tobungee", out.toByteArray()); } + public void sendMessage(String subchannel, String data) { + ByteArrayDataOutput out = ByteStreams.newDataOutput(); + out.writeUTF(subchannel); + out.writeUTF(data); + + Bukkit.getOnlinePlayers().iterator().next() + .sendPluginMessage(this, "ajqueue:tobungee", out.toByteArray()); + } + @EventHandler public void onLeave(PlayerQuitEvent e) { if(!papi) return;