Added BungeeCord functionality to /unmute command.

This commit is contained in:
Aust1n46 2021-03-21 19:08:49 -05:00
parent a867c2d23a
commit b91e54bbe4
4 changed files with 266 additions and 34 deletions

View File

@ -596,6 +596,10 @@ public class MineverseChat extends JavaPlugin implements PluginMessageListener {
} }
} }
public static void sendPluginMessage(ByteArrayOutputStream byteOutStream) {
MineverseChatAPI.getOnlineMineverseChatPlayers().iterator().next().getPlayer().sendPluginMessage(MineverseChat.getInstance(), MineverseChat.PLUGIN_MESSAGING_CHANNEL, byteOutStream.toByteArray());
}
public static void sendDiscordSRVPluginMessage(String chatChannel, String message) { public static void sendDiscordSRVPluginMessage(String chatChannel, String message) {
if(MineverseChatAPI.getOnlineMineverseChatPlayers().size() == 0) { if(MineverseChatAPI.getOnlineMineverseChatPlayers().size() == 0) {
return; return;
@ -916,7 +920,7 @@ public class MineverseChat extends JavaPlugin implements PluginMessageListener {
out.writeUTF(temporaryDataInstanceUUIDString); out.writeUTF(temporaryDataInstanceUUIDString);
out.writeUTF(senderIdentifier); out.writeUTF(senderIdentifier);
out.writeUTF(playerToMute); out.writeUTF(playerToMute);
player.sendPluginMessage(this, MineverseChat.PLUGIN_MESSAGING_CHANNEL, stream.toByteArray()); sendPluginMessage(stream);
return; return;
} }
if(!ChatChannel.isChannel(channelName)) { if(!ChatChannel.isChannel(channelName)) {
@ -930,7 +934,7 @@ public class MineverseChat extends JavaPlugin implements PluginMessageListener {
out.writeUTF(senderIdentifier); out.writeUTF(senderIdentifier);
out.writeUTF(playerToMute); out.writeUTF(playerToMute);
out.writeUTF(channelName); out.writeUTF(channelName);
player.sendPluginMessage(this, MineverseChat.PLUGIN_MESSAGING_CHANNEL, stream.toByteArray()); sendPluginMessage(stream);
return; return;
} }
if(time > 0) { if(time > 0) {
@ -957,7 +961,7 @@ public class MineverseChat extends JavaPlugin implements PluginMessageListener {
out.writeUTF(playerToMute); out.writeUTF(playerToMute);
out.writeUTF(channelName); out.writeUTF(channelName);
out.writeLong(time); out.writeLong(time);
player.sendPluginMessage(this, MineverseChat.PLUGIN_MESSAGING_CHANNEL, stream.toByteArray()); sendPluginMessage(stream);
return; return;
} }
if(identifier.equals("Valid")) { if(identifier.equals("Valid")) {
@ -1042,6 +1046,113 @@ public class MineverseChat extends JavaPlugin implements PluginMessageListener {
return; return;
} }
} }
if(subchannel.equals("Unmute")) {
String identifier = msgin.readUTF();
if(identifier.equals("Send")) {
String server = msgin.readUTF();
String senderIdentifier = msgin.readUTF();
String temporaryDataInstanceUUIDString = msgin.readUTF();
String playerToUnmute = msgin.readUTF();
String channelName = msgin.readUTF();
MineverseChatPlayer playerToUnmuteMCP = MineverseChatAPI.getOnlineMineverseChatPlayer(playerToUnmute);
if(playerToUnmuteMCP == null) {
out.writeUTF("Unmute");
out.writeUTF("Offline");
out.writeUTF(server);
out.writeUTF(temporaryDataInstanceUUIDString);
out.writeUTF(senderIdentifier);
out.writeUTF(playerToUnmute);
sendPluginMessage(stream);
return;
}
if(!ChatChannel.isChannel(channelName)) {
return;
}
ChatChannel chatChannelObj = ChatChannel.getChannel(channelName);
if (!playerToUnmuteMCP.isMuted(chatChannelObj.getName())) {
out.writeUTF("Unmute");
out.writeUTF("NotMuted");
out.writeUTF(server);
out.writeUTF(senderIdentifier);
out.writeUTF(playerToUnmute);
out.writeUTF(channelName);
sendPluginMessage(stream);
return;
}
playerToUnmuteMCP.removeMute(chatChannelObj.getName());
playerToUnmuteMCP.getPlayer().sendMessage(LocalizedMessage.UNMUTE_PLAYER_PLAYER.toString()
.replace("{player}", player.getName()).replace("{channel_color}", chatChannelObj.getColor())
.replace("{channel_name}", chatChannelObj.getName()));
synchronize(playerToUnmuteMCP, true);
out.writeUTF("Unmute");
out.writeUTF("Valid");
out.writeUTF(server);
out.writeUTF(senderIdentifier);
out.writeUTF(playerToUnmute);
out.writeUTF(channelName);
sendPluginMessage(stream);
return;
}
if(identifier.equals("Valid")) {
String senderIdentifier = msgin.readUTF();
String playerToUnmute = msgin.readUTF();
String channelName = msgin.readUTF();
if(!ChatChannel.isChannel(channelName)) {
return;
}
ChatChannel chatChannelObj = ChatChannel.getChannel(channelName);
if(senderIdentifier.equals("VentureChat:Console")) {
Bukkit.getConsoleSender().sendMessage(LocalizedMessage.UNMUTE_PLAYER_SENDER.toString()
.replace("{player}", playerToUnmute)
.replace("{channel_color}", chatChannelObj.getColor())
.replace("{channel_name}", chatChannelObj.getName()));
}
else {
UUID sender = UUID.fromString(senderIdentifier);
MineverseChatPlayer senderMCP = MineverseChatAPI.getOnlineMineverseChatPlayer(sender);
senderMCP.getPlayer().sendMessage(LocalizedMessage.UNMUTE_PLAYER_SENDER.toString()
.replace("{player}", playerToUnmute)
.replace("{channel_color}", chatChannelObj.getColor())
.replace("{channel_name}", chatChannelObj.getName()));
}
return;
}
if(identifier.equals("Offline")) {
String senderIdentifier = msgin.readUTF();
String playerToUnmute = msgin.readUTF();
if(senderIdentifier.equals("VentureChat:Console")) {
Bukkit.getConsoleSender().sendMessage(LocalizedMessage.PLAYER_OFFLINE.toString()
.replace("{args}", playerToUnmute));
return;
}
UUID sender = UUID.fromString(senderIdentifier);
MineverseChatPlayer senderMCP = MineverseChatAPI.getOnlineMineverseChatPlayer(sender);
senderMCP.getPlayer().sendMessage(LocalizedMessage.PLAYER_OFFLINE.toString()
.replace("{args}", playerToUnmute));
return;
}
if(identifier.equals("NotMuted")) {
String senderIdentifier = msgin.readUTF();
String playerToUnmute = msgin.readUTF();
String channelName = msgin.readUTF();
if(!ChatChannel.isChannel(channelName)) {
return;
}
ChatChannel chatChannelObj = ChatChannel.getChannel(channelName);
if(senderIdentifier.equals("VentureChat:Console")) {
Bukkit.getConsoleSender().sendMessage(LocalizedMessage.PLAYER_NOT_MUTED.toString()
.replace("{player}", playerToUnmute).replace("{channel_color}", chatChannelObj.getColor())
.replace("{channel_name}", chatChannelObj.getName()));
return;
}
UUID sender = UUID.fromString(senderIdentifier);
MineverseChatPlayer senderMCP = MineverseChatAPI.getOnlineMineverseChatPlayer(sender);
senderMCP.getPlayer().sendMessage(LocalizedMessage.PLAYER_NOT_MUTED.toString()
.replace("{player}", playerToUnmute).replace("{channel_color}", chatChannelObj.getColor())
.replace("{channel_name}", chatChannelObj.getName()));
return;
}
}
if(subchannel.equals("Message")) { if(subchannel.equals("Message")) {
String identifier = msgin.readUTF(); String identifier = msgin.readUTF();
if(identifier.equals("Send")) { if(identifier.equals("Send")) {

View File

@ -386,6 +386,80 @@ public class MineverseChatBungee extends Plugin implements Listener {
} }
} }
} }
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(MineverseChatBungee.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(MineverseChatBungee.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(MineverseChatBungee.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(MineverseChatBungee.PLUGIN_MESSAGING_CHANNEL, outstream.toByteArray());
}
}
}
if(subchannel.equals("Message")) { if(subchannel.equals("Message")) {
String identifier = in.readUTF(); String identifier = in.readUTF();
if(identifier.equals("Send")) { if(identifier.equals("Send")) {

View File

@ -22,8 +22,6 @@ import mineverse.Aust1n46.chat.localization.LocalizedMessage;
import mineverse.Aust1n46.chat.utilities.Format; import mineverse.Aust1n46.chat.utilities.Format;
public class Mute extends MineverseCommand { public class Mute extends MineverseCommand {
private MineverseChat plugin = MineverseChat.getInstance();
private static final List<String> COMMON_MUTE_TIMES = Collections.unmodifiableList(Arrays.asList(new String[]{"12h", "15m", "1d", "1h", "1m", "30s"})); private static final List<String> COMMON_MUTE_TIMES = Collections.unmodifiableList(Arrays.asList(new String[]{"12h", "15m", "1d", "1h", "1m", "30s"}));
public Mute(String name) { public Mute(String name) {
@ -158,7 +156,7 @@ public class Mute extends MineverseCommand {
out.writeUTF(playerToMute); out.writeUTF(playerToMute);
out.writeUTF(channel.getName()); out.writeUTF(channel.getName());
out.writeLong(time); out.writeLong(time);
plugin.getServer().getOnlinePlayers().iterator().next().sendPluginMessage(plugin, MineverseChat.PLUGIN_MESSAGING_CHANNEL, byteOutStream.toByteArray()); MineverseChat.sendPluginMessage(byteOutStream);
out.close(); out.close();
} }
catch(Exception e) { catch(Exception e) {

View File

@ -1,6 +1,16 @@
package mineverse.Aust1n46.chat.command.mute; package mineverse.Aust1n46.chat.command.mute;
import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.util.StringUtil;
import mineverse.Aust1n46.chat.MineverseChat; import mineverse.Aust1n46.chat.MineverseChat;
import mineverse.Aust1n46.chat.api.MineverseChatAPI; import mineverse.Aust1n46.chat.api.MineverseChatAPI;
@ -23,35 +33,36 @@ public class Unmute extends MineverseCommand {
.replace("{args}", "[player] [channel]")); .replace("{args}", "[player] [channel]"));
return; return;
} }
MineverseChatPlayer player = MineverseChatAPI.getMineverseChatPlayer(args[0]); if (ChatChannel.isChannel(args[1])) {
if (player == null || (!player.isOnline() && !sender.hasPermission("venturechat.mute.offline"))) { ChatChannel channel = ChatChannel.getChannel(args[1]);
sender.sendMessage(LocalizedMessage.PLAYER_OFFLINE.toString().replace("{args}", args[0])); if(channel.getBungee()) {
return; sendBungeeCordUnmute(sender, args[0], channel);
}
for (ChatChannel channel : ChatChannel.getChatChannels()) {
if (channel.getName().equalsIgnoreCase(args[1]) || channel.getAlias().equalsIgnoreCase(args[1])) {
if (!player.isMuted(channel.getName())) {
sender.sendMessage(LocalizedMessage.PLAYER_NOT_MUTED.toString()
.replace("{player}", player.getName()).replace("{channel_color}", channel.getColor())
.replace("{channel_name}", channel.getName()));
return;
}
player.removeMute(channel.getName());
sender.sendMessage(LocalizedMessage.UNMUTE_PLAYER_SENDER.toString()
.replace("{player}", player.getName()).replace("{channel_color}", channel.getColor())
.replace("{channel_name}", channel.getName()));
if (player.isOnline()) {
player.getPlayer().sendMessage(LocalizedMessage.UNMUTE_PLAYER_PLAYER.toString()
.replace("{player}", player.getName()).replace("{channel_color}", channel.getColor())
.replace("{channel_name}", channel.getName()));
} else {
player.setModified(true);
}
if (channel.getBungee()) {
MineverseChat.getInstance().synchronize(player, true);
}
return; return;
} }
MineverseChatPlayer player = MineverseChatAPI.getMineverseChatPlayer(args[0]);
if (player == null || (!player.isOnline() && !sender.hasPermission("venturechat.mute.offline"))) {
sender.sendMessage(LocalizedMessage.PLAYER_OFFLINE.toString().replace("{args}", args[0]));
return;
}
if (!player.isMuted(channel.getName())) {
sender.sendMessage(LocalizedMessage.PLAYER_NOT_MUTED.toString()
.replace("{player}", player.getName()).replace("{channel_color}", channel.getColor())
.replace("{channel_name}", channel.getName()));
return;
}
player.removeMute(channel.getName());
sender.sendMessage(LocalizedMessage.UNMUTE_PLAYER_SENDER.toString()
.replace("{player}", player.getName()).replace("{channel_color}", channel.getColor())
.replace("{channel_name}", channel.getName()));
if (player.isOnline()) {
player.getPlayer().sendMessage(LocalizedMessage.UNMUTE_PLAYER_PLAYER.toString()
.replace("{player}", player.getName()).replace("{channel_color}", channel.getColor())
.replace("{channel_name}", channel.getName()));
}
else {
player.setModified(true);
}
return;
} }
sender.sendMessage(LocalizedMessage.INVALID_CHANNEL.toString().replace("{args}", args[1])); sender.sendMessage(LocalizedMessage.INVALID_CHANNEL.toString().replace("{args}", args[1]));
return; return;
@ -60,4 +71,42 @@ public class Unmute extends MineverseCommand {
return; return;
} }
} }
@Override
public List<String> onTabComplete(CommandSender sender, Command command, String label, String[] args) {
List<String> completions = new ArrayList<>();
if(args.length == 1) {
StringUtil.copyPartialMatches(args[0], MineverseChat.networkPlayerNames, completions);
Collections.sort(completions);
return completions;
}
if(args.length == 2) {
StringUtil.copyPartialMatches(args[1], ChatChannel.getChatChannels().stream().map(ChatChannel::getName).collect(Collectors.toList()), completions);
Collections.sort(completions);
return completions;
}
return Collections.emptyList();
}
private void sendBungeeCordUnmute(CommandSender sender, String playerToUnmute, ChatChannel channel) {
ByteArrayOutputStream byteOutStream = new ByteArrayOutputStream();
DataOutputStream out = new DataOutputStream(byteOutStream);
try {
out.writeUTF("Unmute");
out.writeUTF("Send");
if(sender instanceof Player) {
out.writeUTF(((Player) sender).getUniqueId().toString());
}
else {
out.writeUTF("VentureChat:Console");
}
out.writeUTF(playerToUnmute);
out.writeUTF(channel.getName());
MineverseChat.sendPluginMessage(byteOutStream);
out.close();
}
catch(Exception e) {
e.printStackTrace();
}
}
} }