Added tab completion for all network players to private messaging.

This commit is contained in:
Aust1n46 2021-02-07 17:32:23 -06:00
parent 03ff3ceaf7
commit 13bd351c41
3 changed files with 44 additions and 74 deletions

View File

@ -147,7 +147,7 @@ public class MineverseChat extends JavaPlugin implements PluginMessageListener {
private static final Logger log = Logger.getLogger("Minecraft");
public static Set<MineverseChatPlayer> players = new HashSet<MineverseChatPlayer>();
public static Set<MineverseChatPlayer> onlinePlayers = new HashSet<MineverseChatPlayer>();
public static HashMap<String, String> networkPlayers = new HashMap<String, String>();
public static List<String> networkPlayerNames = new ArrayList<String>();
private boolean firstRun = true;
// Plugin Messaging Channel
@ -636,33 +636,6 @@ public class MineverseChat extends JavaPlugin implements PluginMessageListener {
e.printStackTrace();
}
}
public void updatePlayerList(MineverseChatPlayer mcp, boolean request) {
ByteArrayOutputStream outstream = new ByteArrayOutputStream();
DataOutputStream out = new DataOutputStream(outstream);
try {
out.writeUTF("Sync");
if(request) {
out.writeUTF("PlayersReceive");
// System.out.println(mcp.getPlayer().getServer().getServerName());
out.writeUTF(this.getServer().getName());
}
else {
out.writeUTF("PlayersUpdate");
// System.out.println(networkPlayers.keySet().size());
out.write(networkPlayers.keySet().size());
for(String p : networkPlayers.keySet()) {
out.writeUTF(p + "," + networkPlayers.get(p));
}
}
mcp.getPlayer().sendPluginMessage(this, MineverseChat.PLUGIN_MESSAGING_CHANNEL, outstream.toByteArray());
// System.out.println("Sync start bottom...");
out.close();
}
catch(IOException e) {
e.printStackTrace();
}
}
public static void sendDiscordSRVPluginMessage(String chatChannel, String message) {
if(onlinePlayers.size() == 0) {
@ -786,6 +759,13 @@ public class MineverseChat extends JavaPlugin implements PluginMessageListener {
}
}
}
if(subchannel.equals("PlayerNames")) {
networkPlayerNames.clear();
int playerCount = msgin.readInt();
for(int a = 0; a < playerCount; a ++) {
networkPlayerNames.add(msgin.readUTF());
}
}
if(subchannel.equals("Chwho")) {
String identifier = msgin.readUTF();
if(identifier.equals("Get")) {
@ -838,16 +818,6 @@ public class MineverseChat extends JavaPlugin implements PluginMessageListener {
String hash = msgin.readUTF();
this.getServer().dispatchCommand(this.getServer().getConsoleSender(), "removemessage " + hash);
}
if(subchannel.equals("PlayersUpdate")) {
networkPlayers.clear();
int size = msgin.read();
for(int a = 1; a <= size; a++) {
String p = msgin.readUTF();
String[] parts = p.split(",");
networkPlayers.put(parts[0], parts[1]);
System.out.print(p);
}
}
if(subchannel.equals("Sync")) {
if(this.getConfig().getString("loglevel", "info").equals("debug")) {
Bukkit.getConsoleSender().sendMessage(Format.FormatStringAll("&8[&eVentureChat&8]&e - Received update..."));

View File

@ -24,6 +24,8 @@ import net.md_5.bungee.api.chat.TextComponent;
import net.md_5.bungee.api.connection.ProxiedPlayer;
import net.md_5.bungee.api.connection.Server;
import net.md_5.bungee.api.event.PluginMessageEvent;
import net.md_5.bungee.api.event.ServerDisconnectEvent;
import net.md_5.bungee.api.event.ServerSwitchEvent;
import net.md_5.bungee.api.plugin.Listener;
import net.md_5.bungee.api.plugin.Plugin;
import net.md_5.bungee.config.Configuration;
@ -38,7 +40,6 @@ public class MineverseChatBungee extends Plugin implements Listener {
private Configuration bungeeconfig;
private Configuration playerData;
public static Set<SynchronizedMineverseChatPlayer> players = new HashSet<SynchronizedMineverseChatPlayer>();
public static HashMap<String, String> networkPlayers = new HashMap<String, String>();
public static String PLUGIN_MESSAGING_CHANNEL = "venturechat:data";
@Override
@ -133,6 +134,37 @@ public class MineverseChatBungee extends Plugin implements Listener {
e.printStackTrace();
}
}
@EventHandler
public void onPlayerJoin(ServerSwitchEvent event) {
updatePlayerNames();
}
@EventHandler
public void onPlayerLeave(ServerDisconnectEvent event) {
updatePlayerNames();
}
private void updatePlayerNames() {
try {
ByteArrayOutputStream outstream = new ByteArrayOutputStream();
DataOutputStream out = new DataOutputStream(outstream);
out.writeUTF("PlayerNames");
out.writeInt(this.getProxy().getPlayers().size());
for(ProxiedPlayer pp : this.getProxy().getPlayers()) {
out.writeUTF(pp.getName());
}
for(String send : getProxy().getServers().keySet()) {
if(getProxy().getServers().get(send).getPlayers().size() > 0) {
getProxy().getServers().get(send).sendData(MineverseChatBungee.PLUGIN_MESSAGING_CHANNEL, outstream.toByteArray());
}
}
}
catch(Exception e) {
e.printStackTrace();
}
}
@EventHandler
public void onPluginMessage(PluginMessageEvent ev) {
@ -486,35 +518,6 @@ public class MineverseChatBungee extends Plugin implements Listener {
smcp.setSpy(in.readBoolean());
smcp.setMessageToggle(in.readBoolean());
}
if(identifier.equals("PlayersReceive")) {
String server = in.readUTF();
out.writeUTF("PlayersUpdate");
out.write(networkPlayers.keySet().size());
for(String s : networkPlayers.keySet()) {
out.writeUTF(s + "," + networkPlayers.get(s));
}
if(getProxy().getServers().get(server).getPlayers().size() > 0)
getProxy().getServers().get(server).sendData(MineverseChatBungee.PLUGIN_MESSAGING_CHANNEL, outstream.toByteArray());
}
if(identifier.equals("PlayersUpdate")) {
networkPlayers.clear();
int size = in.read();
//System.out.println(size);
for(int a = 1; a <= size; a ++) {
String player = in.readUTF();
String[] parts = player.split(",");
networkPlayers.put(parts[0], parts[1]);
}
out.writeUTF("PlayersUpdate");
out.write(networkPlayers.keySet().size());
for(String s : networkPlayers.keySet()) {
out.writeUTF(s + "," + networkPlayers.get(s));
}
for(String send : getProxy().getServers().keySet()) {
if(getProxy().getServers().get(send).getPlayers().size() > 0)
getProxy().getServers().get(send).sendData(MineverseChatBungee.PLUGIN_MESSAGING_CHANNEL, outstream.toByteArray());
}
}
}
if(subchannel.equals("Mute")) {
String identifier = in.readUTF();

View File

@ -2,7 +2,6 @@ package mineverse.Aust1n46.chat.command.message;
import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.util.ArrayList;
import java.util.List;
import org.bukkit.ChatColor;
@ -165,12 +164,10 @@ public class MessageCommandExecutor implements TabExecutor {
@Override
public List<String> onTabComplete(CommandSender sender, Command command, String label, String[] args) {
List<String> completions = new ArrayList<>();
for(Player p : plugin.getServer().getOnlinePlayers()) {
completions.add(p.getName());
if(plugin.getConfig().getBoolean("bungeecordmessaging", true)) {
return MineverseChat.networkPlayerNames;
}
return completions;
return null;
}
private void sendBungeeCordMessage(MineverseChatPlayer mcp, String command, String[] args) {