Add Velocity proxy support.

This commit is contained in:
Aust1n46 2021-08-26 23:11:18 -04:00
parent 4194911450
commit 3858519f8f
8 changed files with 711 additions and 530 deletions

10
pom.xml
View File

@ -100,6 +100,10 @@
<id>essentialsx-repo</id> <id>essentialsx-repo</id>
<url>https://repo.essentialsx.net/snapshots/</url> <url>https://repo.essentialsx.net/snapshots/</url>
</repository> </repository>
<repository>
<id>velocity</id>
<url>https://repo.velocitypowered.com/snapshots/</url>
</repository>
</repositories> </repositories>
<dependencies> <dependencies>
<dependency> <dependency>
@ -170,6 +174,12 @@
</exclusion> </exclusion>
</exclusions> </exclusions>
</dependency> </dependency>
<dependency>
<groupId>com.velocitypowered</groupId>
<artifactId>velocity-api</artifactId>
<version>1.0.0-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
<dependency> <dependency>
<groupId>net.md-5</groupId> <groupId>net.md-5</groupId>
<artifactId>bungeecord-api</artifactId> <artifactId>bungeecord-api</artifactId>

View File

@ -468,8 +468,8 @@ public class MineverseChat extends JavaPlugin implements PluginMessageListener {
if(subchannel.equals("Chwho")) { if(subchannel.equals("Chwho")) {
String identifier = msgin.readUTF(); String identifier = msgin.readUTF();
if(identifier.equals("Get")) { if(identifier.equals("Get")) {
String server = msgin.readUTF();
String sender = msgin.readUTF(); String sender = msgin.readUTF();
String name = msgin.readUTF();
String chatchannel = msgin.readUTF(); String chatchannel = msgin.readUTF();
List<String> listening = new ArrayList<String>(); List<String> listening = new ArrayList<String>();
if(ChatChannel.isChannel(chatchannel)) { if(ChatChannel.isChannel(chatchannel)) {
@ -485,8 +485,8 @@ public class MineverseChat extends JavaPlugin implements PluginMessageListener {
} }
out.writeUTF("Chwho"); out.writeUTF("Chwho");
out.writeUTF("Receive"); out.writeUTF("Receive");
out.writeUTF(server);
out.writeUTF(sender); out.writeUTF(sender);
out.writeUTF(name);
out.writeUTF(chatchannel); out.writeUTF(chatchannel);
out.writeInt(listening.size()); out.writeInt(listening.size());
for(String s : listening) { for(String s : listening) {

View File

@ -1,19 +1,15 @@
package mineverse.Aust1n46.chat.bungee; package mineverse.Aust1n46.chat.bungee;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream; import java.io.DataOutputStream;
import java.io.File; import java.io.File;
import java.nio.file.Files; import java.nio.file.Files;
import java.util.UUID; import java.util.List;
import java.util.stream.Collectors;
import mineverse.Aust1n46.chat.api.MineverseChatAPI;
import mineverse.Aust1n46.chat.api.SynchronizedMineverseChatPlayer;
import mineverse.Aust1n46.chat.command.mute.MuteContainer;
import mineverse.Aust1n46.chat.database.BungeePlayerData; import mineverse.Aust1n46.chat.database.BungeePlayerData;
import mineverse.Aust1n46.chat.database.TemporaryDataInstance;
import mineverse.Aust1n46.chat.utilities.UUIDFetcher; import mineverse.Aust1n46.chat.utilities.UUIDFetcher;
import net.md_5.bungee.api.ProxyServer;
import net.md_5.bungee.api.connection.ProxiedPlayer; import net.md_5.bungee.api.connection.ProxiedPlayer;
import net.md_5.bungee.api.connection.Server; import net.md_5.bungee.api.connection.Server;
import net.md_5.bungee.api.event.PluginMessageEvent; import net.md_5.bungee.api.event.PluginMessageEvent;
@ -32,10 +28,9 @@ import net.md_5.bungee.event.EventHandler;
* *
* @author Aust1n46 * @author Aust1n46
*/ */
public class MineverseChatBungee extends Plugin implements Listener { public class MineverseChatBungee extends Plugin implements Listener, VentureChatProxySource {
private static MineverseChatBungee instance; private static MineverseChatBungee instance;
private static Configuration bungeeConfig; private static Configuration bungeeConfig;
public static String PLUGIN_MESSAGING_CHANNEL = "venturechat:data";
@Override @Override
public void onEnable() { public void onEnable() {
@ -58,7 +53,7 @@ public class MineverseChatBungee extends Plugin implements Listener {
BungeePlayerData.loadLegacyBungeePlayerData(); BungeePlayerData.loadLegacyBungeePlayerData();
BungeePlayerData.loadBungeePlayerData(); BungeePlayerData.loadBungeePlayerData();
this.getProxy().registerChannel(PLUGIN_MESSAGING_CHANNEL); this.getProxy().registerChannel(VentureChatProxy.PLUGIN_MESSAGING_CHANNEL_STRING);
this.getProxy().getPluginManager().registerListener(this, this); this.getProxy().getPluginManager().registerListener(this, this);
} }
@ -102,7 +97,7 @@ public class MineverseChatBungee extends Plugin implements Listener {
for(String send : getProxy().getServers().keySet()) { for(String send : getProxy().getServers().keySet()) {
if(getProxy().getServers().get(send).getPlayers().size() > 0) { if(getProxy().getServers().get(send).getPlayers().size() > 0) {
getProxy().getServers().get(send).sendData(PLUGIN_MESSAGING_CHANNEL, outstream.toByteArray()); getProxy().getServers().get(send).sendData(VentureChatProxy.PLUGIN_MESSAGING_CHANNEL_STRING, outstream.toByteArray());
} }
} }
} }
@ -112,525 +107,30 @@ public class MineverseChatBungee extends Plugin implements Listener {
} }
@EventHandler @EventHandler
public void onPluginMessage(PluginMessageEvent ev) { public void onPluginMessage(PluginMessageEvent event) {
//System.out.println(ev.getTag() + "," + ev.getSender().toString() + "," + (ev.getSender() instanceof Server)); if(!event.getTag().equals(VentureChatProxy.PLUGIN_MESSAGING_CHANNEL_STRING) && !event.getTag().contains("viaversion:")) {
if(!ev.getTag().equals(PLUGIN_MESSAGING_CHANNEL) && !ev.getTag().contains("viaversion:")) {
return; return;
} }
if(!(ev.getSender() instanceof Server)) { if(!(event.getSender() instanceof Server)) {
return; return;
} }
Server ser = (Server) ev.getSender(); String serverName = ((Server) event.getSender()).getInfo().getName();
ByteArrayInputStream instream = new ByteArrayInputStream(ev.getData()); VentureChatProxy.onPluginMessage(event.getData(), serverName, this);
DataInputStream in = new DataInputStream(instream); }
try {
String subchannel = in.readUTF(); @Override
//System.out.println(subchannel); public void sendPluginMessage(String serverName, byte[] data) {
ByteArrayOutputStream outstream = new ByteArrayOutputStream(); getProxy().getServers().get(serverName).sendData(VentureChatProxy.PLUGIN_MESSAGING_CHANNEL_STRING, data);
DataOutputStream out = new DataOutputStream(outstream); }
if(subchannel.equals("Chat")) {
String chatchannel = in.readUTF(); @Override
String senderName = in.readUTF(); public List<VentureChatProxyServer> getServers() {
String senderUUID = in.readUTF(); return getProxy().getServers().values().stream().map(bungeeServer -> new VentureChatProxyServer(bungeeServer.getName(), bungeeServer.getPlayers().isEmpty())).collect(Collectors.toList());
boolean bungeeToggle = in.readBoolean(); }
int hash = in.readInt();
String format = in.readUTF(); @Override
String chat = in.readUTF(); public VentureChatProxyServer getServer(String serverName) {
String json = in.readUTF(); ProxyServer server = (ProxyServer) getProxy().getServers().get(serverName);
String primaryGroup = in.readUTF(); return new VentureChatProxyServer(serverName, server.getPlayers().isEmpty());
String nickname = in.readUTF();
out.writeUTF("Chat");
out.writeUTF(ser.getInfo().getName());
out.writeUTF(chatchannel);
out.writeUTF(senderName);
out.writeUTF(senderUUID);
out.writeInt(hash);
out.writeUTF(format);
out.writeUTF(chat);
out.writeUTF(json);
out.writeUTF(primaryGroup);
out.writeUTF(nickname);
for(String send : getProxy().getServers().keySet()) {
if(getProxy().getServers().get(send).getPlayers().size() > 0) {
if(!bungeeToggle && !getProxy().getServers().get(send).getName().equalsIgnoreCase(ser.getInfo().getName())) {
continue;
}
getProxy().getServers().get(send).sendData(PLUGIN_MESSAGING_CHANNEL, outstream.toByteArray());
}
}
}
if(subchannel.equals("DiscordSRV")) {
String chatchannel = in.readUTF();
String message = in.readUTF();
out.writeUTF("DiscordSRV");
out.writeUTF(chatchannel);
out.writeUTF(message);
for(String send : getProxy().getServers().keySet()) {
if(getProxy().getServers().get(send).getPlayers().size() > 0) {
getProxy().getServers().get(send).sendData(PLUGIN_MESSAGING_CHANNEL, outstream.toByteArray());
}
}
}
if(subchannel.equals("Chwho")) {
String identifier = in.readUTF();
if(identifier.equals("Get")) {
String sender = in.readUTF();
String name = in.readUTF();
String channel = in.readUTF();
SynchronizedMineverseChatPlayer smcp = MineverseChatAPI.getSynchronizedMineverseChatPlayer(UUID.fromString(sender));
smcp.clearMessagePackets();
smcp.clearMessageData();
out.writeUTF("Chwho");
out.writeUTF("Get");
out.writeUTF(sender);
out.writeUTF(name);
out.writeUTF(channel);
for(String send : getProxy().getServers().keySet()) {
if(getProxy().getServers().get(send).getPlayers().size() > 0) {
getProxy().getServers().get(send).sendData(PLUGIN_MESSAGING_CHANNEL, outstream.toByteArray());
}
}
}
if(identifier.equals("Receive")) {
String sender = in.readUTF();
String name = in.readUTF();
String channel = in.readUTF();
SynchronizedMineverseChatPlayer smcp = MineverseChatAPI.getSynchronizedMineverseChatPlayer(UUID.fromString(sender));
smcp.incrementMessagePackets();
int players = in.readInt();
for(int a = 0; a < players; a++) {
smcp.addData(in.readUTF());
}
int servers = 0;
for(String send : getProxy().getServers().keySet()) {
if(getProxy().getServers().get(send).getPlayers().size() > 0) {
servers ++;
}
}
if(smcp.getMessagePackets() >= servers) {
smcp.clearMessagePackets();
out.writeUTF("Chwho");
out.writeUTF("Receive");
out.writeUTF(sender);
out.writeUTF(channel);
out.writeInt(smcp.getMessageData().size());
for(String s : smcp.getMessageData()) {
out.writeUTF(s);
}
smcp.clearMessageData();
Server server = getProxy().getPlayer(name).getServer();
server.sendData(PLUGIN_MESSAGING_CHANNEL, outstream.toByteArray());
}
}
}
if(subchannel.equals("RemoveMessage")) {
String hash = in.readUTF();
out.writeUTF("RemoveMessage");
out.writeUTF(hash);
for(String send : getProxy().getServers().keySet()) {
if(getProxy().getServers().get(send).getPlayers().size() > 0) {
getProxy().getServers().get(send).sendData(PLUGIN_MESSAGING_CHANNEL, outstream.toByteArray());
}
}
}
if(subchannel.equals("Ignore")) {
String identifier = in.readUTF();
if(identifier.equals("Send")) {
String server = ser.getInfo().getName();
String player = in.readUTF();
String sender = in.readUTF();
SynchronizedMineverseChatPlayer smcp = MineverseChatAPI.getSynchronizedMineverseChatPlayer(UUID.fromString(sender));
smcp.clearMessagePackets();
out.writeUTF("Ignore");
out.writeUTF("Send");
out.writeUTF(server);
out.writeUTF(player);
out.writeUTF(sender);
for(String send : getProxy().getServers().keySet()) {
if(getProxy().getServers().get(send).getPlayers().size() > 0) {
getProxy().getServers().get(send).sendData(PLUGIN_MESSAGING_CHANNEL, outstream.toByteArray());
}
}
}
if(identifier.equals("Offline")) {
String server = in.readUTF();
String player = in.readUTF();
String sender = in.readUTF();
SynchronizedMineverseChatPlayer smcp = MineverseChatAPI.getSynchronizedMineverseChatPlayer(UUID.fromString(sender));
smcp.incrementMessagePackets();
int servers = 0;
for(String send : getProxy().getServers().keySet()) {
if(getProxy().getServers().get(send).getPlayers().size() > 0) {
servers ++;
}
}
if(smcp.getMessagePackets() >= servers) {
smcp.clearMessagePackets();
out.writeUTF("Ignore");
out.writeUTF("Offline");
out.writeUTF(player);
out.writeUTF(sender);
if(getProxy().getServers().get(server).getPlayers().size() > 0) {
getProxy().getServers().get(server).sendData(PLUGIN_MESSAGING_CHANNEL, outstream.toByteArray());
}
}
}
if(identifier.equals("Echo")) {
String server = in.readUTF();
String player = in.readUTF();
String receiverName = in.readUTF();
String sender = in.readUTF();
out.writeUTF("Ignore");
out.writeUTF("Echo");
out.writeUTF(player);
out.writeUTF(receiverName);
out.writeUTF(sender);
if(getProxy().getServers().get(server).getPlayers().size() > 0) {
getProxy().getServers().get(server).sendData(PLUGIN_MESSAGING_CHANNEL, outstream.toByteArray());
}
}
}
if(subchannel.equals("Mute")) {
String identifier = in.readUTF();
if(identifier.equals("Send")) {
String server = ser.getInfo().getName();
String senderIdentifier = in.readUTF();
String playerToMute = in.readUTF();
String channelName = in.readUTF();
long time = in.readLong();
String reason = in.readUTF();
UUID temporaryDataInstanceUUID = TemporaryDataInstance.createTemporaryDataInstance();
out.writeUTF("Mute");
out.writeUTF("Send");
out.writeUTF(server);
out.writeUTF(senderIdentifier);
out.writeUTF(temporaryDataInstanceUUID.toString());
out.writeUTF(playerToMute);
out.writeUTF(channelName);
out.writeLong(time);
out.writeUTF(reason);
for(String send : getProxy().getServers().keySet()) {
if(getProxy().getServers().get(send).getPlayers().size() > 0) {
getProxy().getServers().get(send).sendData(PLUGIN_MESSAGING_CHANNEL, outstream.toByteArray());
}
}
}
if(identifier.equals("Valid")) {
String server = in.readUTF();
String senderIdentifier = in.readUTF();
String playerToMute = in.readUTF();
String channelName = in.readUTF();
long time = in.readLong();
String reason = in.readUTF();
out.writeUTF("Mute");
out.writeUTF("Valid");
out.writeUTF(senderIdentifier);
out.writeUTF(playerToMute);
out.writeUTF(channelName);
out.writeLong(time);
out.writeUTF(reason);
if(getProxy().getServers().get(server).getPlayers().size() > 0) {
getProxy().getServers().get(server).sendData(PLUGIN_MESSAGING_CHANNEL, outstream.toByteArray());
}
}
if(identifier.equals("Offline")) {
String server = in.readUTF();
UUID temporaryDataInstanceUUID = UUID.fromString(in.readUTF());
String senderIdentifier = in.readUTF();
String playerToMute = in.readUTF();
TemporaryDataInstance temporaryDataInstance = TemporaryDataInstance.getTemporaryDataInstance(temporaryDataInstanceUUID);
temporaryDataInstance.incrementMessagePackets();
int servers = 0;
for(String send : getProxy().getServers().keySet()) {
if(getProxy().getServers().get(send).getPlayers().size() > 0) {
servers ++;
}
}
if(temporaryDataInstance.getMessagePackets() >= servers) {
temporaryDataInstance.destroyInstance();
out.writeUTF("Mute");
out.writeUTF("Offline");
out.writeUTF(senderIdentifier);
out.writeUTF(playerToMute);
if(getProxy().getServers().get(server).getPlayers().size() > 0) {
getProxy().getServers().get(server).sendData(PLUGIN_MESSAGING_CHANNEL, outstream.toByteArray());
}
}
}
if(identifier.equals("AlreadyMuted")) {
String server = in.readUTF();
String senderIdentifier = in.readUTF();
String playerToMute = in.readUTF();
String channelName = in.readUTF();
out.writeUTF("Mute");
out.writeUTF("AlreadyMuted");
out.writeUTF(senderIdentifier);
out.writeUTF(playerToMute);
out.writeUTF(channelName);
if(getProxy().getServers().get(server).getPlayers().size() > 0) {
getProxy().getServers().get(server).sendData(PLUGIN_MESSAGING_CHANNEL, outstream.toByteArray());
}
}
}
if(subchannel.equals("Unmute")) {
String identifier = in.readUTF();
if(identifier.equals("Send")) {
String server = ser.getInfo().getName();
String senderIdentifier = in.readUTF();
String playerToUnmute = in.readUTF();
String channelName = in.readUTF();
UUID temporaryDataInstanceUUID = TemporaryDataInstance.createTemporaryDataInstance();
out.writeUTF("Unmute");
out.writeUTF("Send");
out.writeUTF(server);
out.writeUTF(senderIdentifier);
out.writeUTF(temporaryDataInstanceUUID.toString());
out.writeUTF(playerToUnmute);
out.writeUTF(channelName);
for(String send : getProxy().getServers().keySet()) {
if(getProxy().getServers().get(send).getPlayers().size() > 0) {
getProxy().getServers().get(send).sendData(PLUGIN_MESSAGING_CHANNEL, outstream.toByteArray());
}
}
}
if(identifier.equals("Valid")) {
String server = in.readUTF();
String senderIdentifier = in.readUTF();
String playerToUnmute = in.readUTF();
String channelName = in.readUTF();
out.writeUTF("Unmute");
out.writeUTF("Valid");
out.writeUTF(senderIdentifier);
out.writeUTF(playerToUnmute);
out.writeUTF(channelName);
if(getProxy().getServers().get(server).getPlayers().size() > 0) {
getProxy().getServers().get(server).sendData(PLUGIN_MESSAGING_CHANNEL, outstream.toByteArray());
}
}
if(identifier.equals("Offline")) {
String server = in.readUTF();
UUID temporaryDataInstanceUUID = UUID.fromString(in.readUTF());
String senderIdentifier = in.readUTF();
String playerToUnmute = in.readUTF();
TemporaryDataInstance temporaryDataInstance = TemporaryDataInstance.getTemporaryDataInstance(temporaryDataInstanceUUID);
temporaryDataInstance.incrementMessagePackets();
int servers = 0;
for(String send : getProxy().getServers().keySet()) {
if(getProxy().getServers().get(send).getPlayers().size() > 0) {
servers ++;
}
}
if(temporaryDataInstance.getMessagePackets() >= servers) {
temporaryDataInstance.destroyInstance();
out.writeUTF("Unmute");
out.writeUTF("Offline");
out.writeUTF(senderIdentifier);
out.writeUTF(playerToUnmute);
if(getProxy().getServers().get(server).getPlayers().size() > 0) {
getProxy().getServers().get(server).sendData(PLUGIN_MESSAGING_CHANNEL, outstream.toByteArray());
}
}
}
if(identifier.equals("NotMuted")) {
String server = in.readUTF();
String senderIdentifier = in.readUTF();
String playerToUnmute = in.readUTF();
String channelName = in.readUTF();
out.writeUTF("Unmute");
out.writeUTF("NotMuted");
out.writeUTF(senderIdentifier);
out.writeUTF(playerToUnmute);
out.writeUTF(channelName);
if(getProxy().getServers().get(server).getPlayers().size() > 0) {
getProxy().getServers().get(server).sendData(PLUGIN_MESSAGING_CHANNEL, outstream.toByteArray());
}
}
}
if(subchannel.equals("Message")) {
String identifier = in.readUTF();
if(identifier.equals("Send")) {
String server = ser.getInfo().getName();
String player = in.readUTF();
String sender = in.readUTF();
String sName = in.readUTF();
String send = in.readUTF();
String echo = in.readUTF();
String spy = in.readUTF();
String msg = in.readUTF();
SynchronizedMineverseChatPlayer smcp = MineverseChatAPI.getSynchronizedMineverseChatPlayer(UUID.fromString(sender));
smcp.clearMessagePackets();
out.writeUTF("Message");
out.writeUTF("Send");
out.writeUTF(server);
out.writeUTF(player);
out.writeUTF(sender);
out.writeUTF(sName);
out.writeUTF(send);
out.writeUTF(echo);
out.writeUTF(spy);
out.writeUTF(msg);
for(String serv : getProxy().getServers().keySet()) {
if(getProxy().getServers().get(serv).getPlayers().size() > 0) {
getProxy().getServers().get(serv).sendData(PLUGIN_MESSAGING_CHANNEL, outstream.toByteArray());
}
}
}
if(identifier.equals("Offline")) {
String server = in.readUTF();
String player = in.readUTF();
String sender = in.readUTF();
SynchronizedMineverseChatPlayer smcp = MineverseChatAPI.getSynchronizedMineverseChatPlayer(UUID.fromString(sender));
smcp.incrementMessagePackets();
int servers = 0;
for(String send : getProxy().getServers().keySet()) {
if(getProxy().getServers().get(send).getPlayers().size() > 0) {
servers ++;
}
}
if(smcp.getMessagePackets() >= servers) {
smcp.clearMessagePackets();
out.writeUTF("Message");
out.writeUTF("Offline");
out.writeUTF(player);
out.writeUTF(sender);
if(getProxy().getServers().get(server).getPlayers().size() > 0) {
getProxy().getServers().get(server).sendData(PLUGIN_MESSAGING_CHANNEL, outstream.toByteArray());
}
}
}
if(identifier.equals("Ignore")) {
String server = in.readUTF();
String player = in.readUTF();
String sender = in.readUTF();
out.writeUTF("Message");
out.writeUTF("Ignore");
out.writeUTF(player);
out.writeUTF(sender);
if(getProxy().getServers().get(server).getPlayers().size() > 0) {
getProxy().getServers().get(server).sendData(PLUGIN_MESSAGING_CHANNEL, outstream.toByteArray());
}
}
if(identifier.equals("Blocked")) {
String server = in.readUTF();
String player = in.readUTF();
String sender = in.readUTF();
out.writeUTF("Message");
out.writeUTF("Blocked");
out.writeUTF(player);
out.writeUTF(sender);
if(getProxy().getServers().get(server).getPlayers().size() > 0) {
getProxy().getServers().get(server).sendData(PLUGIN_MESSAGING_CHANNEL, outstream.toByteArray());
}
}
if(identifier.equals("Echo")) {
String server = in.readUTF();
String player = in.readUTF();
String receiverUUID = in.readUTF();
String sender = in.readUTF();
String sName = in.readUTF();
String echo = in.readUTF();
String spy = in.readUTF();
out.writeUTF("Message");
out.writeUTF("Echo");
out.writeUTF(player);
out.writeUTF(receiverUUID);
out.writeUTF(sender);
out.writeUTF(echo);
if(getProxy().getServers().get(server).getPlayers().size() > 0) {
getProxy().getServers().get(server).sendData(PLUGIN_MESSAGING_CHANNEL, outstream.toByteArray());
}
outstream = new ByteArrayOutputStream();
out = new DataOutputStream(outstream);
out.writeUTF("Message");
out.writeUTF("Spy");
out.writeUTF(player);
out.writeUTF(sName);
out.writeUTF(spy);
for(String send : getProxy().getServers().keySet()) {
if(getProxy().getServers().get(send).getPlayers().size() > 0) {
getProxy().getServers().get(send).sendData(PLUGIN_MESSAGING_CHANNEL, outstream.toByteArray());
}
}
}
}
if(subchannel.equals("Sync")) {
//System.out.println("Sync received...");
String identifier = in.readUTF();
if(identifier.equals("Receive")) {
//System.out.println("Sending update...");
String server = ser.getInfo().getName();
UUID uuid = UUID.fromString(in.readUTF());
SynchronizedMineverseChatPlayer smcp = MineverseChatAPI.getSynchronizedMineverseChatPlayer(uuid);
if(smcp == null) {
smcp = new SynchronizedMineverseChatPlayer(uuid);
MineverseChatAPI.addSynchronizedMineverseChatPlayerToMap(smcp);
}
out.writeUTF("Sync");
out.writeUTF(uuid.toString());
int channelCount = smcp.getListening().size();
//System.out.println(channelCount);
out.write(channelCount);
for(String channel : smcp.getListening()) {
out.writeUTF(channel);
}
int muteCount = smcp.getMutes().size();
//System.out.println(muteCount);
out.write(muteCount);
for(MuteContainer muteContainer : smcp.getMutes()) {
out.writeUTF(muteContainer.getChannel());
out.writeLong(muteContainer.getDuration());
out.writeUTF(muteContainer.getReason());
}
//System.out.println(smcp.isSpy() + " spy value");
//System.out.println(out.size() + " size before");
out.writeBoolean(smcp.isSpy());
out.writeBoolean(smcp.getMessageToggle());
//System.out.println(out.size() + " size after");
int ignoreCount = smcp.getIgnores().size();
//System.out.println(ignoreCount + " ignore size");
out.write(ignoreCount);
for(UUID ignore : smcp.getIgnores()) {
out.writeUTF(ignore.toString());
}
if(getProxy().getServers().get(server).getPlayers().size() > 0)
getProxy().getServers().get(server).sendData(PLUGIN_MESSAGING_CHANNEL, outstream.toByteArray());
}
if(identifier.equals("Update")) {
UUID uuid = UUID.fromString(in.readUTF());
SynchronizedMineverseChatPlayer smcp = MineverseChatAPI.getSynchronizedMineverseChatPlayer(uuid);
if(smcp == null) {
smcp = new SynchronizedMineverseChatPlayer(uuid);
MineverseChatAPI.addSynchronizedMineverseChatPlayerToMap(smcp);
}
smcp.getListening().clear();
smcp.clearMutes();
smcp.getIgnores().clear();
int sizeL = in.read();
//System.out.println(sizeL + " listening");
for(int a = 0; a < sizeL; a++) {
smcp.addListening(in.readUTF());
}
int sizeM = in.read();
for(int b = 0; b < sizeM; b++) {
String mute = in.readUTF();
long muteTime = in.readLong();
String muteReason = in.readUTF();
//System.out.println(mute);
smcp.addMute(mute, muteTime, muteReason);
}
int sizeI = in.read();
for(int c = 0; c < sizeI; c++) {
String ignore = in.readUTF();
//System.out.println(mute);
smcp.addIgnore(MineverseChatAPI.getSynchronizedMineverseChatPlayer(UUID.fromString(ignore)));
}
smcp.setSpy(in.readBoolean());
smcp.setMessageToggle(in.readBoolean());
}
}
}
catch(Exception e) {
e.printStackTrace();
}
} }
} }

View File

@ -0,0 +1,533 @@
package mineverse.Aust1n46.chat.bungee;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.util.UUID;
import java.util.concurrent.atomic.AtomicInteger;
import mineverse.Aust1n46.chat.api.MineverseChatAPI;
import mineverse.Aust1n46.chat.api.SynchronizedMineverseChatPlayer;
import mineverse.Aust1n46.chat.command.mute.MuteContainer;
import mineverse.Aust1n46.chat.database.TemporaryDataInstance;
public class VentureChatProxy {
public static String PLUGIN_MESSAGING_CHANNEL_NAMESPACE = "venturechat";
public static String PLUGIN_MESSAGING_CHANNEL_NAME = "data";
public static String PLUGIN_MESSAGING_CHANNEL_STRING = "venturechat:data";
public static void onPluginMessage(byte[] data, String serverName, VentureChatProxySource source) {
ByteArrayInputStream instream = new ByteArrayInputStream(data);
DataInputStream in = new DataInputStream(instream);
try {
String subchannel = in.readUTF();
//System.out.println(subchannel);
final ByteArrayOutputStream outstream = new ByteArrayOutputStream();
DataOutputStream out = new DataOutputStream(outstream);
if(subchannel.equals("Chat")) {
String chatchannel = in.readUTF();
String senderName = in.readUTF();
String senderUUID = in.readUTF();
boolean bungeeToggle = in.readBoolean();
int hash = in.readInt();
String format = in.readUTF();
String chat = in.readUTF();
String json = in.readUTF();
String primaryGroup = in.readUTF();
String nickname = in.readUTF();
out.writeUTF("Chat");
out.writeUTF(serverName);
out.writeUTF(chatchannel);
out.writeUTF(senderName);
out.writeUTF(senderUUID);
out.writeInt(hash);
out.writeUTF(format);
out.writeUTF(chat);
out.writeUTF(json);
out.writeUTF(primaryGroup);
out.writeUTF(nickname);
for(VentureChatProxyServer send : source.getServers()) {
if(!send.isEmpty()) {
if(!bungeeToggle && !send.getName().equalsIgnoreCase(serverName)) {
continue;
}
source.sendPluginMessage(send.getName(), outstream.toByteArray());
}
}
}
if(subchannel.equals("DiscordSRV")) {
String chatchannel = in.readUTF();
String message = in.readUTF();
out.writeUTF("DiscordSRV");
out.writeUTF(chatchannel);
out.writeUTF(message);
source.getServers().forEach(send -> {
if(!send.isEmpty()) {
source.sendPluginMessage(send.getName(), outstream.toByteArray());
}
});
}
if(subchannel.equals("Chwho")) {
String identifier = in.readUTF();
if(identifier.equals("Get")) {
String server = serverName;
String sender = in.readUTF();
String channel = in.readUTF();
SynchronizedMineverseChatPlayer smcp = MineverseChatAPI.getSynchronizedMineverseChatPlayer(UUID.fromString(sender));
smcp.clearMessagePackets();
smcp.clearMessageData();
out.writeUTF("Chwho");
out.writeUTF("Get");
out.writeUTF(server);
out.writeUTF(sender);
out.writeUTF(channel);
source.getServers().forEach(send -> {
if(!send.isEmpty()) {
source.sendPluginMessage(send.getName(), outstream.toByteArray());
}
});
}
if(identifier.equals("Receive")) {
String server = in.readUTF();
String sender = in.readUTF();
String channel = in.readUTF();
SynchronizedMineverseChatPlayer smcp = MineverseChatAPI.getSynchronizedMineverseChatPlayer(UUID.fromString(sender));
smcp.incrementMessagePackets();
int players = in.readInt();
for(int a = 0; a < players; a++) {
smcp.addData(in.readUTF());
}
AtomicInteger servers = new AtomicInteger(0);
source.getServers().forEach(send -> {
if(!send.isEmpty()) {
servers.incrementAndGet();
}
});
if(smcp.getMessagePackets() >= servers.get()) {
smcp.clearMessagePackets();
out.writeUTF("Chwho");
out.writeUTF("Receive");
out.writeUTF(sender);
out.writeUTF(channel);
out.writeInt(smcp.getMessageData().size());
for(String s : smcp.getMessageData()) {
out.writeUTF(s);
}
smcp.clearMessageData();
source.sendPluginMessage(server, outstream.toByteArray());
}
}
}
if(subchannel.equals("RemoveMessage")) {
String hash = in.readUTF();
out.writeUTF("RemoveMessage");
out.writeUTF(hash);
source.getServers().forEach(send -> {
if(!send.isEmpty()) {
source.sendPluginMessage(send.getName(), outstream.toByteArray());
}
});
}
if(subchannel.equals("Ignore")) {
String identifier = in.readUTF();
if(identifier.equals("Send")) {
String server = serverName;
String player = in.readUTF();
String sender = in.readUTF();
SynchronizedMineverseChatPlayer smcp = MineverseChatAPI.getSynchronizedMineverseChatPlayer(UUID.fromString(sender));
smcp.clearMessagePackets();
out.writeUTF("Ignore");
out.writeUTF("Send");
out.writeUTF(server);
out.writeUTF(player);
out.writeUTF(sender);
source.getServers().forEach(send -> {
if(!send.isEmpty()) {
source.sendPluginMessage(send.getName(), outstream.toByteArray());
}
});
}
if(identifier.equals("Offline")) {
String server = in.readUTF();
String player = in.readUTF();
String sender = in.readUTF();
SynchronizedMineverseChatPlayer smcp = MineverseChatAPI.getSynchronizedMineverseChatPlayer(UUID.fromString(sender));
smcp.incrementMessagePackets();
AtomicInteger servers = new AtomicInteger(0);
source.getServers().forEach(send -> {
if(!send.isEmpty()) {
servers.incrementAndGet();
}
});
if(smcp.getMessagePackets() >= servers.get()) {
smcp.clearMessagePackets();
out.writeUTF("Ignore");
out.writeUTF("Offline");
out.writeUTF(player);
out.writeUTF(sender);
if(!source.getServer(server).isEmpty()) {
source.sendPluginMessage(server, outstream.toByteArray());
}
}
}
if(identifier.equals("Echo")) {
String server = in.readUTF();
String player = in.readUTF();
String receiverName = in.readUTF();
String sender = in.readUTF();
out.writeUTF("Ignore");
out.writeUTF("Echo");
out.writeUTF(player);
out.writeUTF(receiverName);
out.writeUTF(sender);
if(!source.getServer(server).isEmpty()) {
source.sendPluginMessage(server, outstream.toByteArray());
}
}
}
if(subchannel.equals("Mute")) {
String identifier = in.readUTF();
if(identifier.equals("Send")) {
String server = serverName;
String senderIdentifier = in.readUTF();
String playerToMute = in.readUTF();
String channelName = in.readUTF();
long time = in.readLong();
String reason = in.readUTF();
UUID temporaryDataInstanceUUID = TemporaryDataInstance.createTemporaryDataInstance();
out.writeUTF("Mute");
out.writeUTF("Send");
out.writeUTF(server);
out.writeUTF(senderIdentifier);
out.writeUTF(temporaryDataInstanceUUID.toString());
out.writeUTF(playerToMute);
out.writeUTF(channelName);
out.writeLong(time);
out.writeUTF(reason);
source.getServers().forEach(send -> {
if(!send.isEmpty()) {
source.sendPluginMessage(send.getName(), outstream.toByteArray());
}
});
}
if(identifier.equals("Valid")) {
String server = in.readUTF();
String senderIdentifier = in.readUTF();
String playerToMute = in.readUTF();
String channelName = in.readUTF();
long time = in.readLong();
String reason = in.readUTF();
out.writeUTF("Mute");
out.writeUTF("Valid");
out.writeUTF(senderIdentifier);
out.writeUTF(playerToMute);
out.writeUTF(channelName);
out.writeLong(time);
out.writeUTF(reason);
if(!source.getServer(server).isEmpty()) {
source.sendPluginMessage(server, outstream.toByteArray());
}
}
if(identifier.equals("Offline")) {
String server = in.readUTF();
UUID temporaryDataInstanceUUID = UUID.fromString(in.readUTF());
String senderIdentifier = in.readUTF();
String playerToMute = in.readUTF();
TemporaryDataInstance temporaryDataInstance = TemporaryDataInstance.getTemporaryDataInstance(temporaryDataInstanceUUID);
temporaryDataInstance.incrementMessagePackets();
AtomicInteger servers = new AtomicInteger(0);
source.getServers().forEach(send -> {
if(!send.isEmpty()) {
servers.incrementAndGet();
}
});
if(temporaryDataInstance.getMessagePackets() >= servers.get()) {
temporaryDataInstance.destroyInstance();
out.writeUTF("Mute");
out.writeUTF("Offline");
out.writeUTF(senderIdentifier);
out.writeUTF(playerToMute);
if(!source.getServer(server).isEmpty()) {
source.sendPluginMessage(server, outstream.toByteArray());
}
}
}
if(identifier.equals("AlreadyMuted")) {
String server = in.readUTF();
String senderIdentifier = in.readUTF();
String playerToMute = in.readUTF();
String channelName = in.readUTF();
out.writeUTF("Mute");
out.writeUTF("AlreadyMuted");
out.writeUTF(senderIdentifier);
out.writeUTF(playerToMute);
out.writeUTF(channelName);
if(!source.getServer(server).isEmpty()) {
source.sendPluginMessage(server, outstream.toByteArray());
}
}
}
if(subchannel.equals("Unmute")) {
String identifier = in.readUTF();
if(identifier.equals("Send")) {
String server = serverName;
String senderIdentifier = in.readUTF();
String playerToUnmute = in.readUTF();
String channelName = in.readUTF();
UUID temporaryDataInstanceUUID = TemporaryDataInstance.createTemporaryDataInstance();
out.writeUTF("Unmute");
out.writeUTF("Send");
out.writeUTF(server);
out.writeUTF(senderIdentifier);
out.writeUTF(temporaryDataInstanceUUID.toString());
out.writeUTF(playerToUnmute);
out.writeUTF(channelName);
source.getServers().forEach(send -> {
if(!send.isEmpty()) {
source.sendPluginMessage(send.getName(), outstream.toByteArray());
}
});
}
if(identifier.equals("Valid")) {
String server = in.readUTF();
String senderIdentifier = in.readUTF();
String playerToUnmute = in.readUTF();
String channelName = in.readUTF();
out.writeUTF("Unmute");
out.writeUTF("Valid");
out.writeUTF(senderIdentifier);
out.writeUTF(playerToUnmute);
out.writeUTF(channelName);
if(!source.getServer(server).isEmpty()) {
source.sendPluginMessage(server, outstream.toByteArray());
}
}
if(identifier.equals("Offline")) {
String server = in.readUTF();
UUID temporaryDataInstanceUUID = UUID.fromString(in.readUTF());
String senderIdentifier = in.readUTF();
String playerToUnmute = in.readUTF();
TemporaryDataInstance temporaryDataInstance = TemporaryDataInstance.getTemporaryDataInstance(temporaryDataInstanceUUID);
temporaryDataInstance.incrementMessagePackets();
AtomicInteger servers = new AtomicInteger(0);
source.getServers().forEach(send -> {
if(!send.isEmpty()) {
servers.incrementAndGet();
}
});
if(temporaryDataInstance.getMessagePackets() >= servers.get()) {
temporaryDataInstance.destroyInstance();
out.writeUTF("Unmute");
out.writeUTF("Offline");
out.writeUTF(senderIdentifier);
out.writeUTF(playerToUnmute);
if(!source.getServer(server).isEmpty()) {
source.sendPluginMessage(server, outstream.toByteArray());
}
}
}
if(identifier.equals("NotMuted")) {
String server = in.readUTF();
String senderIdentifier = in.readUTF();
String playerToUnmute = in.readUTF();
String channelName = in.readUTF();
out.writeUTF("Unmute");
out.writeUTF("NotMuted");
out.writeUTF(senderIdentifier);
out.writeUTF(playerToUnmute);
out.writeUTF(channelName);
if(!source.getServer(server).isEmpty()) {
source.sendPluginMessage(server, outstream.toByteArray());
}
}
}
if(subchannel.equals("Message")) {
String identifier = in.readUTF();
if(identifier.equals("Send")) {
String server = serverName;
String player = in.readUTF();
String sender = in.readUTF();
String sName = in.readUTF();
String send = in.readUTF();
String echo = in.readUTF();
String spy = in.readUTF();
String msg = in.readUTF();
SynchronizedMineverseChatPlayer smcp = MineverseChatAPI.getSynchronizedMineverseChatPlayer(UUID.fromString(sender));
smcp.clearMessagePackets();
out.writeUTF("Message");
out.writeUTF("Send");
out.writeUTF(server);
out.writeUTF(player);
out.writeUTF(sender);
out.writeUTF(sName);
out.writeUTF(send);
out.writeUTF(echo);
out.writeUTF(spy);
out.writeUTF(msg);
source.getServers().forEach(serv -> {
if(!send.isEmpty()) {
source.sendPluginMessage(serv.getName(), outstream.toByteArray());
}
});
}
if(identifier.equals("Offline")) {
String server = in.readUTF();
String player = in.readUTF();
String sender = in.readUTF();
SynchronizedMineverseChatPlayer smcp = MineverseChatAPI.getSynchronizedMineverseChatPlayer(UUID.fromString(sender));
smcp.incrementMessagePackets();
AtomicInteger servers = new AtomicInteger(0);
source.getServers().forEach(send -> {
if(!send.isEmpty()) {
servers.incrementAndGet();
}
});
if(smcp.getMessagePackets() >= servers.get()) {
smcp.clearMessagePackets();
out.writeUTF("Message");
out.writeUTF("Offline");
out.writeUTF(player);
out.writeUTF(sender);
if(!source.getServer(server).isEmpty()) {
source.sendPluginMessage(server, outstream.toByteArray());
}
}
}
if(identifier.equals("Ignore")) {
String server = in.readUTF();
String player = in.readUTF();
String sender = in.readUTF();
out.writeUTF("Message");
out.writeUTF("Ignore");
out.writeUTF(player);
out.writeUTF(sender);
if(!source.getServer(server).isEmpty()) {
source.sendPluginMessage(server, outstream.toByteArray());
}
}
if(identifier.equals("Blocked")) {
String server = in.readUTF();
String player = in.readUTF();
String sender = in.readUTF();
out.writeUTF("Message");
out.writeUTF("Blocked");
out.writeUTF(player);
out.writeUTF(sender);
if(!source.getServer(server).isEmpty()) {
source.sendPluginMessage(server, outstream.toByteArray());
}
}
if(identifier.equals("Echo")) {
String server = in.readUTF();
String player = in.readUTF();
String receiverUUID = in.readUTF();
String sender = in.readUTF();
String sName = in.readUTF();
String echo = in.readUTF();
String spy = in.readUTF();
out.writeUTF("Message");
out.writeUTF("Echo");
out.writeUTF(player);
out.writeUTF(receiverUUID);
out.writeUTF(sender);
out.writeUTF(echo);
if(!source.getServer(server).isEmpty()) {
source.sendPluginMessage(server, outstream.toByteArray());
}
outstream.reset();
out = new DataOutputStream(outstream);
out.writeUTF("Message");
out.writeUTF("Spy");
out.writeUTF(player);
out.writeUTF(sName);
out.writeUTF(spy);
source.getServers().forEach(send -> {
if(!send.isEmpty()) {
source.sendPluginMessage(send.getName(), outstream.toByteArray());
}
});
}
}
if(subchannel.equals("Sync")) {
//System.out.println("Sync received...");
String identifier = in.readUTF();
if(identifier.equals("Receive")) {
//System.out.println("Sending update...");
String server = serverName;
UUID uuid = UUID.fromString(in.readUTF());
SynchronizedMineverseChatPlayer smcp = MineverseChatAPI.getSynchronizedMineverseChatPlayer(uuid);
if(smcp == null) {
smcp = new SynchronizedMineverseChatPlayer(uuid);
MineverseChatAPI.addSynchronizedMineverseChatPlayerToMap(smcp);
}
out.writeUTF("Sync");
out.writeUTF(uuid.toString());
int channelCount = smcp.getListening().size();
//System.out.println(channelCount);
out.write(channelCount);
for(String channel : smcp.getListening()) {
out.writeUTF(channel);
}
int muteCount = smcp.getMutes().size();
//System.out.println(muteCount);
out.write(muteCount);
for(MuteContainer muteContainer : smcp.getMutes()) {
out.writeUTF(muteContainer.getChannel());
out.writeLong(muteContainer.getDuration());
out.writeUTF(muteContainer.getReason());
}
//System.out.println(smcp.isSpy() + " spy value");
//System.out.println(out.size() + " size before");
out.writeBoolean(smcp.isSpy());
out.writeBoolean(smcp.getMessageToggle());
//System.out.println(out.size() + " size after");
int ignoreCount = smcp.getIgnores().size();
//System.out.println(ignoreCount + " ignore size");
out.write(ignoreCount);
for(UUID ignore : smcp.getIgnores()) {
out.writeUTF(ignore.toString());
}
if(!source.getServer(server).isEmpty()) {
source.sendPluginMessage(server, outstream.toByteArray());
}
}
if(identifier.equals("Update")) {
UUID uuid = UUID.fromString(in.readUTF());
SynchronizedMineverseChatPlayer smcp = MineverseChatAPI.getSynchronizedMineverseChatPlayer(uuid);
if(smcp == null) {
smcp = new SynchronizedMineverseChatPlayer(uuid);
MineverseChatAPI.addSynchronizedMineverseChatPlayerToMap(smcp);
}
smcp.getListening().clear();
smcp.clearMutes();
smcp.getIgnores().clear();
int sizeL = in.read();
//System.out.println(sizeL + " listening");
for(int a = 0; a < sizeL; a++) {
smcp.addListening(in.readUTF());
}
int sizeM = in.read();
for(int b = 0; b < sizeM; b++) {
String mute = in.readUTF();
long muteTime = in.readLong();
String muteReason = in.readUTF();
//System.out.println(mute);
smcp.addMute(mute, muteTime, muteReason);
}
int sizeI = in.read();
for(int c = 0; c < sizeI; c++) {
String ignore = in.readUTF();
//System.out.println(mute);
smcp.addIgnore(MineverseChatAPI.getSynchronizedMineverseChatPlayer(UUID.fromString(ignore)));
}
smcp.setSpy(in.readBoolean());
smcp.setMessageToggle(in.readBoolean());
}
}
}
catch(Exception e) {
e.printStackTrace();
}
}
}

View File

@ -0,0 +1,19 @@
package mineverse.Aust1n46.chat.bungee;
public class VentureChatProxyServer {
private String name;
private boolean empty;
public VentureChatProxyServer(String name, boolean empty) {
this.name = name;
this.empty = empty;
}
public boolean isEmpty() {
return empty;
}
public String getName() {
return name;
}
}

View File

@ -0,0 +1,11 @@
package mineverse.Aust1n46.chat.bungee;
import java.util.List;
public interface VentureChatProxySource {
public void sendPluginMessage(String serverName, byte[] data);
public List<VentureChatProxyServer> getServers();
public VentureChatProxyServer getServer(String serverName);
}

View File

@ -0,0 +1,109 @@
package mineverse.Aust1n46.chat.bungee;
import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.util.List;
import java.util.Optional;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
import org.slf4j.Logger;
import com.google.inject.Inject;
import com.velocitypowered.api.event.Subscribe;
import com.velocitypowered.api.event.connection.DisconnectEvent;
import com.velocitypowered.api.event.connection.PluginMessageEvent;
import com.velocitypowered.api.event.connection.PluginMessageEvent.ForwardResult;
import com.velocitypowered.api.event.player.ServerConnectedEvent;
import com.velocitypowered.api.event.proxy.ProxyInitializeEvent;
import com.velocitypowered.api.plugin.Plugin;
import com.velocitypowered.api.proxy.Player;
import com.velocitypowered.api.proxy.ProxyServer;
import com.velocitypowered.api.proxy.ServerConnection;
import com.velocitypowered.api.proxy.messages.ChannelIdentifier;
import com.velocitypowered.api.proxy.messages.MinecraftChannelIdentifier;
import com.velocitypowered.api.proxy.server.RegisteredServer;
@Plugin(id = "venturechat", name = "VentureChat", version = "${project.version}",
description = "#1 Channels Chat plugin! Spigot + Bungee. Supports PlaceholderAPI + JSON formatting. Moderation GUI!", authors = {"Aust1n46"})
public class VentureChatVelocity implements VentureChatProxySource {
private final ProxyServer proxyServer;
private final ChannelIdentifier channelIdentifier = MinecraftChannelIdentifier.create(VentureChatProxy.PLUGIN_MESSAGING_CHANNEL_NAMESPACE, VentureChatProxy.PLUGIN_MESSAGING_CHANNEL_NAME);
@Inject
public VentureChatVelocity(ProxyServer server, Logger logger) {
this.proxyServer = server;
}
@Subscribe
public void onInitialize(ProxyInitializeEvent event) {
proxyServer.getChannelRegistrar().register(channelIdentifier);
}
@Subscribe
public void onPlayerJoin(ServerConnectedEvent event) {
proxyServer.getScheduler().buildTask(this, () -> {
updatePlayerNames();
})
.delay(500, TimeUnit.MILLISECONDS)
.schedule();
}
@Subscribe
public void onPlayerQuit(DisconnectEvent event) {
updatePlayerNames();
}
private void updatePlayerNames() {
try {
ByteArrayOutputStream outstream = new ByteArrayOutputStream();
DataOutputStream out = new DataOutputStream(outstream);
out.writeUTF("PlayerNames");
out.writeInt(proxyServer.getPlayerCount());
for(Player player : proxyServer.getAllPlayers()) {
out.writeUTF(player.getUsername());
}
getServers().forEach(send -> {
if(!send.isEmpty()) {
sendPluginMessage(send.getName(), outstream.toByteArray());
}
});
}
catch(Exception e) {
e.printStackTrace();
}
}
@Subscribe
public void onPluginMessage(PluginMessageEvent event) {
String channelIdentifierId = event.getIdentifier().getId();
if(!channelIdentifierId.equals(VentureChatProxy.PLUGIN_MESSAGING_CHANNEL_STRING) && !channelIdentifierId.contains("viaversion:")) {
return;
}
if(!(event.getSource() instanceof ServerConnection)) {
return;
}
String serverName = ((ServerConnection) event.getSource()).getServerInfo().getName();
VentureChatProxy.onPluginMessage(event.getData(), serverName, this);
event.setResult(ForwardResult.handled());
}
@Override
public void sendPluginMessage(String serverName, byte[] data) {
Optional<RegisteredServer> server = proxyServer.getServer(serverName);
if(server.isPresent()) {
server.get().sendPluginMessage(channelIdentifier, data);
}
}
@Override
public List<VentureChatProxyServer> getServers() {
return proxyServer.getAllServers().stream().map(velocityServer -> new VentureChatProxyServer(velocityServer.getServerInfo().getName(), velocityServer.getPlayersConnected().isEmpty())).collect(Collectors.toList());
}
@Override
public VentureChatProxyServer getServer(String serverName) {
RegisteredServer server = proxyServer.getServer(serverName).get();
return new VentureChatProxyServer(serverName, server.getPlayersConnected().isEmpty());
}
}

View File

@ -49,7 +49,6 @@ public class Chwho implements VentureCommand {
out.writeUTF("Chwho"); out.writeUTF("Chwho");
out.writeUTF("Get"); out.writeUTF("Get");
out.writeUTF(mcp.getUUID().toString()); out.writeUTF(mcp.getUUID().toString());
out.writeUTF(mcp.getName());
out.writeUTF(channel.getName()); out.writeUTF(channel.getName());
mcp.getPlayer().sendPluginMessage(plugin, MineverseChat.PLUGIN_MESSAGING_CHANNEL, byteOutStream.toByteArray()); mcp.getPlayer().sendPluginMessage(plugin, MineverseChat.PLUGIN_MESSAGING_CHANNEL, byteOutStream.toByteArray());
out.close(); out.close();