Added networking for BungeeCord /mute.

This commit is contained in:
Aust1n46 2021-03-20 23:47:24 -05:00
parent 241fe7a319
commit 1da382bb38
6 changed files with 387 additions and 510 deletions

View File

@ -899,6 +899,149 @@ public class MineverseChat extends JavaPlugin implements PluginMessageListener {
this.synchronize(p, true);
}
}
if(subchannel.equals("Mute")) {
String identifier = msgin.readUTF();
if(identifier.equals("Send")) {
String server = msgin.readUTF();
String senderIdentifier = msgin.readUTF();
String temporaryDataInstanceUUIDString = msgin.readUTF();
String playerToMute = msgin.readUTF();
String channelName = msgin.readUTF();
long time = msgin.readLong();
MineverseChatPlayer playerToMuteMCP = MineverseChatAPI.getOnlineMineverseChatPlayer(playerToMute);
if(playerToMuteMCP == null) {
out.writeUTF("Mute");
out.writeUTF("Offline");
out.writeUTF(server);
out.writeUTF(temporaryDataInstanceUUIDString);
out.writeUTF(senderIdentifier);
out.writeUTF(playerToMute);
player.sendPluginMessage(this, MineverseChat.PLUGIN_MESSAGING_CHANNEL, stream.toByteArray());
return;
}
if(!ChatChannel.isChannel(channelName)) {
return;
}
ChatChannel chatChannelObj = ChatChannel.getChannel(channelName);
if (playerToMuteMCP.isMuted(chatChannelObj.getName())) {
out.writeUTF("Mute");
out.writeUTF("AlreadyMuted");
out.writeUTF(server);
out.writeUTF(senderIdentifier);
out.writeUTF(playerToMute);
out.writeUTF(channelName);
player.sendPluginMessage(this, MineverseChat.PLUGIN_MESSAGING_CHANNEL, stream.toByteArray());
return;
}
if(time > 0) {
playerToMuteMCP.addMute(chatChannelObj.getName(), time);
String timeString = Format.parseTimeStringFromMillis(time);
playerToMuteMCP.getPlayer()
.sendMessage(LocalizedMessage.MUTE_PLAYER_PLAYER_TIME.toString()
.replace("{channel_color}", chatChannelObj.getColor())
.replace("{channel_name}", chatChannelObj.getName())
.replace("{time}", timeString));
}
else {
playerToMuteMCP.addMute(chatChannelObj.getName(), 0);
playerToMuteMCP.getPlayer()
.sendMessage(LocalizedMessage.MUTE_PLAYER_PLAYER.toString()
.replace("{channel_color}", chatChannelObj.getColor())
.replace("{channel_name}", chatChannelObj.getName()));
}
synchronize(playerToMuteMCP, true);
out.writeUTF("Mute");
out.writeUTF("Valid");
out.writeUTF(server);
out.writeUTF(senderIdentifier);
out.writeUTF(playerToMute);
out.writeUTF(channelName);
out.writeLong(time);
player.sendPluginMessage(this, MineverseChat.PLUGIN_MESSAGING_CHANNEL, stream.toByteArray());
return;
}
if(identifier.equals("Valid")) {
String senderIdentifier = msgin.readUTF();
String playerToMute = msgin.readUTF();
String channelName = msgin.readUTF();
long time = msgin.readLong();
if(!ChatChannel.isChannel(channelName)) {
return;
}
ChatChannel chatChannelObj = ChatChannel.getChannel(channelName);
if(time > 0) {
String timeString = Format.parseTimeStringFromMillis(time);
if(senderIdentifier.equals("VentureChat:Console")) {
Bukkit.getConsoleSender().sendMessage(LocalizedMessage.MUTE_PLAYER_SENDER_TIME.toString()
.replace("{player}", playerToMute)
.replace("{channel_color}", chatChannelObj.getColor())
.replace("{channel_name}", chatChannelObj.getName())
.replace("{time}", timeString));
}
else {
UUID sender = UUID.fromString(senderIdentifier);
MineverseChatPlayer senderMCP = MineverseChatAPI.getOnlineMineverseChatPlayer(sender);
senderMCP.getPlayer().sendMessage(LocalizedMessage.MUTE_PLAYER_SENDER_TIME.toString()
.replace("{player}", playerToMute)
.replace("{channel_color}", chatChannelObj.getColor())
.replace("{channel_name}", chatChannelObj.getName())
.replace("{time}", timeString));
}
}
else {
if(senderIdentifier.equals("VentureChat:Console")) {
Bukkit.getConsoleSender().sendMessage(LocalizedMessage.MUTE_PLAYER_SENDER.toString()
.replace("{player}", playerToMute)
.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.MUTE_PLAYER_SENDER.toString()
.replace("{player}", playerToMute)
.replace("{channel_color}", chatChannelObj.getColor())
.replace("{channel_name}", chatChannelObj.getName()));
}
}
return;
}
if(identifier.equals("Offline")) {
String senderIdentifier = msgin.readUTF();
String playerToMute = msgin.readUTF();
if(senderIdentifier.equals("VentureChat:Console")) {
Bukkit.getConsoleSender().sendMessage(LocalizedMessage.PLAYER_OFFLINE.toString()
.replace("{args}", playerToMute));
return;
}
UUID sender = UUID.fromString(senderIdentifier);
MineverseChatPlayer senderMCP = MineverseChatAPI.getOnlineMineverseChatPlayer(sender);
senderMCP.getPlayer().sendMessage(LocalizedMessage.PLAYER_OFFLINE.toString()
.replace("{args}", playerToMute));
return;
}
if(identifier.equals("AlreadyMuted")) {
String senderIdentifier = msgin.readUTF();
String playerToMute = 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_ALREADY_MUTED.toString()
.replace("{player}", playerToMute).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_ALREADY_MUTED.toString()
.replace("{player}", playerToMute).replace("{channel_color}", chatChannelObj.getColor())
.replace("{channel_name}", chatChannelObj.getName()));
return;
}
}
if(subchannel.equals("Message")) {
String identifier = msgin.readUTF();
if(identifier.equals("Send")) {
@ -912,7 +1055,7 @@ public class MineverseChat extends JavaPlugin implements PluginMessageListener {
String echo = msgin.readUTF();
String spy = msgin.readUTF();
String msg = msgin.readUTF();
if(!this.getConfig().getBoolean("bungeecordmessaging", true) || p == null || !p.isOnline()) {
if(!this.getConfig().getBoolean("bungeecordmessaging", true) || p == null) {
out.writeUTF("Message");
out.writeUTF("Offline");
out.writeUTF(server);
@ -1018,313 +1161,6 @@ public class MineverseChat extends JavaPlugin implements PluginMessageListener {
}
}
}
if(subchannel.equals("Mute")) {
String sendplayer = msgin.readUTF();
String mutePlayer = msgin.readUTF();
String chatchannel = msgin.readUTF();
String server = msgin.readUTF();
String time = msgin.readUTF();
int numtime = 0;
MineverseChatPlayer p = MineverseChatAPI.getMineverseChatPlayer(mutePlayer);
ChatChannel cc = ChatChannel.getChannel(chatchannel);
if(cc == null) {
try {
out.writeUTF("Mute");
out.writeUTF("Channel");
out.writeUTF(sendplayer);
out.writeUTF(chatchannel);
player.sendPluginMessage(this, MineverseChat.PLUGIN_MESSAGING_CHANNEL, stream.toByteArray());
}
catch(Exception e) {
e.printStackTrace();
}
return;
}
if(p == null) {
try {
out.writeUTF("Mute");
out.writeUTF("Player");
out.writeUTF(sendplayer);
out.writeUTF(mutePlayer);
out.writeUTF(server);
player.sendPluginMessage(this, MineverseChat.PLUGIN_MESSAGING_CHANNEL, stream.toByteArray());
}
catch(Exception e) {
e.printStackTrace();
}
return;
}
if(!cc.isMutable()) {
try {
out.writeUTF("Mute");
out.writeUTF("Mutable");
out.writeUTF(sendplayer);
out.writeUTF(cc.getName());
out.writeUTF(cc.getColor());
player.sendPluginMessage(this, MineverseChat.PLUGIN_MESSAGING_CHANNEL, stream.toByteArray());
}
catch(Exception e) {
e.printStackTrace();
}
return;
}
if(p.isMuted(cc.getName())) {
try {
out.writeUTF("Mute");
out.writeUTF("Already");
out.writeUTF(sendplayer);
out.writeUTF(mutePlayer);
out.writeUTF(cc.getName());
out.writeUTF(cc.getColor());
player.sendPluginMessage(this, MineverseChat.PLUGIN_MESSAGING_CHANNEL, stream.toByteArray());
}
catch(Exception e) {
e.printStackTrace();
}
return;
}
if(!time.equals("None\n")) {
try {
numtime = Integer.parseInt(time);
if(numtime > 0) {
Calendar currentDate = Calendar.getInstance();
SimpleDateFormat formatter = new SimpleDateFormat("dd:HH:mm:ss");
String date = formatter.format(currentDate.getTime());
String[] datearray = date.split(":");
int datetime = (Integer.parseInt(datearray[0]) * 1440) + (Integer.parseInt(datearray[1]) * 60) + (Integer.parseInt(datearray[2]));
p.addMute(cc.getName(), datetime + numtime);
String keyword = "minutes";
if(numtime == 1) keyword = "minute";
if(p.isOnline()) p.getPlayer().sendMessage(ChatColor.RED + "You have just been muted in: " + ChatColor.valueOf(cc.getColor().toUpperCase()) + cc.getName() + ChatColor.RED + " for " + time + " " + keyword);
else p.setModified(true);
if(cc.getBungee()) {
MineverseChat.getInstance().synchronize(p, true);
}
try {
out.writeUTF("Mute");
out.writeUTF("Valid");
out.writeUTF(sendplayer);
out.writeUTF(mutePlayer);
out.writeUTF(cc.getName());
out.writeUTF(cc.getColor());
out.writeUTF(time);
player.sendPluginMessage(this, MineverseChat.PLUGIN_MESSAGING_CHANNEL, stream.toByteArray());
}
catch(Exception e) {
e.printStackTrace();
}
return;
}
try {
out.writeUTF("Mute");
out.writeUTF("Time");
out.writeUTF(sendplayer);
out.writeUTF(time);
player.sendPluginMessage(this, MineverseChat.PLUGIN_MESSAGING_CHANNEL, stream.toByteArray());
}
catch(Exception e) {
e.printStackTrace();
}
return;
}
catch(Exception e) {
try {
out.writeUTF("Mute");
out.writeUTF("Time");
out.writeUTF(sendplayer);
out.writeUTF(time);
player.sendPluginMessage(this, MineverseChat.PLUGIN_MESSAGING_CHANNEL, stream.toByteArray());
}
catch(Exception e1) {
e1.printStackTrace();
}
return;
}
}
p.addMute(cc.getName(), 0);
if(p.isOnline()) p.getPlayer().sendMessage(ChatColor.RED + "You have just been muted in: " + ChatColor.valueOf(cc.getColor().toUpperCase()) + cc.getName());
else p.setModified(true);
if(cc.getBungee()) {
MineverseChat.getInstance().synchronize(p, true);
}
try {
out.writeUTF("Mute");
out.writeUTF("Valid");
out.writeUTF(sendplayer);
out.writeUTF(mutePlayer);
out.writeUTF(cc.getName());
out.writeUTF(cc.getColor());
out.writeUTF(time);
player.sendPluginMessage(this, MineverseChat.PLUGIN_MESSAGING_CHANNEL, stream.toByteArray());
}
catch(Exception e) {
e.printStackTrace();
}
return;
}
if(subchannel.equals("Muteall")) {
String sendplayer = msgin.readUTF();
String muteplayer = msgin.readUTF();
String server = msgin.readUTF();
Player mp = Bukkit.getPlayer(muteplayer);
MineverseChatPlayer p = MineverseChatAPI.getMineverseChatPlayer(mp);
if(mp == null) {
try {
out.writeUTF("Muteall");
out.writeUTF("Player");
out.writeUTF(sendplayer);
out.writeUTF(muteplayer);
out.writeUTF(server);
player.sendPluginMessage(this, MineverseChat.PLUGIN_MESSAGING_CHANNEL, stream.toByteArray());
}
catch(Exception e) {
e.printStackTrace();
}
return;
}
boolean bungee = false;
for(ChatChannel c : ChatChannel.getChannels()) {
if(c.isMutable()) {
p.addMute(c.getName(), 0);
if(c.getBungee()) {
bungee = true;
}
}
}
if(bungee) {
MineverseChat.getInstance().synchronize(p, true);
}
if(p.isOnline()) {
p.getPlayer().sendMessage(ChatColor.RED + "You have just been muted in all channels.");
}
else p.setModified(true);
try {
out.writeUTF("Muteall");
out.writeUTF("Valid");
out.writeUTF(sendplayer);
out.writeUTF(muteplayer);
player.sendPluginMessage(this, MineverseChat.PLUGIN_MESSAGING_CHANNEL, stream.toByteArray());
}
catch(Exception e) {
e.printStackTrace();
}
return;
}
if(subchannel.equals("Unmuteall")) {
String sendplayer = msgin.readUTF();
String muteplayer = msgin.readUTF();
String server = msgin.readUTF();
Player mp = Bukkit.getPlayer(muteplayer);
MineverseChatPlayer p = MineverseChatAPI.getMineverseChatPlayer(mp);
if(mp == null) {
try {
out.writeUTF("Unmuteall");
out.writeUTF("Player");
out.writeUTF(sendplayer);
out.writeUTF(muteplayer);
out.writeUTF(server);
player.sendPluginMessage(this, MineverseChat.PLUGIN_MESSAGING_CHANNEL, stream.toByteArray());
}
catch(Exception e) {
e.printStackTrace();
}
return;
}
boolean bungee = false;
for(ChatChannel c : ChatChannel.getChannels()) {
p.removeMute(c.getName());
if(c.getBungee()) {
bungee = true;
}
}
if(bungee) {
MineverseChat.getInstance().synchronize(p, true);
}
if(p.isOnline()) {
p.getPlayer().sendMessage(ChatColor.RED + "You have just been unmuted in all channels.");
}
else p.setModified(true);
try {
out.writeUTF("Unmuteall");
out.writeUTF("Valid");
out.writeUTF(sendplayer);
out.writeUTF(muteplayer);
player.sendPluginMessage(this, MineverseChat.PLUGIN_MESSAGING_CHANNEL, stream.toByteArray());
}
catch(Exception e) {
e.printStackTrace();
}
return;
}
if(subchannel.equals("Unmute")) {
String sendplayer = msgin.readUTF();
String mutePlayer = msgin.readUTF();
String chatchannel = msgin.readUTF();
String server = msgin.readUTF();
MineverseChatPlayer p = MineverseChatAPI.getMineverseChatPlayer(mutePlayer);
ChatChannel cc = ChatChannel.getChannel(chatchannel);
if(cc == null) {
try {
out.writeUTF("Unmute");
out.writeUTF("Channel");
out.writeUTF(sendplayer);
out.writeUTF(chatchannel);
player.sendPluginMessage(this, MineverseChat.PLUGIN_MESSAGING_CHANNEL, stream.toByteArray());
}
catch(Exception e) {
e.printStackTrace();
}
return;
}
if(p == null) {
try {
out.writeUTF("Unmute");
out.writeUTF("Player");
out.writeUTF(sendplayer);
out.writeUTF(mutePlayer);
out.writeUTF(server);
player.sendPluginMessage(this, MineverseChat.PLUGIN_MESSAGING_CHANNEL, stream.toByteArray());
}
catch(Exception e) {
e.printStackTrace();
}
return;
}
if(!p.isMuted(cc.getName())) {
try {
out.writeUTF("Unmute");
out.writeUTF("Already");
out.writeUTF(sendplayer);
out.writeUTF(mutePlayer);
out.writeUTF(cc.getName());
out.writeUTF(cc.getColor());
player.sendPluginMessage(this, MineverseChat.PLUGIN_MESSAGING_CHANNEL, stream.toByteArray());
}
catch(Exception e) {
e.printStackTrace();
}
return;
}
p.removeMute(cc.getName());
if(p.isOnline()) p.getPlayer().sendMessage(ChatColor.RED + "You have just been unmuted in: " + ChatColor.valueOf(cc.getColor().toUpperCase()) + cc.getName());
else p.setModified(true);
if(cc.getBungee()) {
MineverseChat.getInstance().synchronize(p, true);
}
try {
out.writeUTF("Unmute");
out.writeUTF("Valid");
out.writeUTF(sendplayer);
out.writeUTF(mutePlayer);
out.writeUTF(cc.getName());
out.writeUTF(cc.getColor());
player.sendPluginMessage(this, MineverseChat.PLUGIN_MESSAGING_CHANNEL, stream.toByteArray());
}
catch(Exception e) {
e.printStackTrace();
}
return;
}
}
catch(Exception e) {
e.printStackTrace();

View File

@ -17,9 +17,8 @@ import mineverse.Aust1n46.chat.bungee.command.GlobalMuteAll;
import mineverse.Aust1n46.chat.bungee.command.GlobalUnmute;
import mineverse.Aust1n46.chat.bungee.command.GlobalUnmuteAll;
import mineverse.Aust1n46.chat.database.BungeePlayerData;
import mineverse.Aust1n46.chat.database.TemporaryDataInstance;
import mineverse.Aust1n46.chat.utilities.UUIDFetcher;
import net.md_5.bungee.api.ChatColor;
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;
@ -309,6 +308,84 @@ public class MineverseChatBungee extends Plugin implements Listener {
}
}
}
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();
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);
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 playerToMute = in.readUTF();
String channelName = in.readUTF();
long time = in.readLong();
out.writeUTF("Mute");
out.writeUTF("Valid");
out.writeUTF(senderIdentifier);
out.writeUTF(playerToMute);
out.writeUTF(channelName);
out.writeLong(time);
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 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(MineverseChatBungee.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(MineverseChatBungee.PLUGIN_MESSAGING_CHANNEL, outstream.toByteArray());
}
}
}
if(subchannel.equals("Message")) {
String identifier = in.readUTF();
if(identifier.equals("Send")) {
@ -489,124 +566,6 @@ public class MineverseChatBungee extends Plugin implements Listener {
smcp.setMessageToggle(in.readBoolean());
}
}
if(subchannel.equals("Mute")) {
String identifier = in.readUTF();
if(identifier.equals("Channel")) {
String player = in.readUTF();
String channel = in.readUTF();
ProxiedPlayer p = getProxy().getPlayer(player);
p.sendMessage(new TextComponent(ChatColor.RED + "Invalid channel: " + channel));
}
if(identifier.equals("Player")) {
String player = in.readUTF();
String muteplayer = in.readUTF();
String server = in.readUTF();
ProxiedPlayer p = getProxy().getPlayer(player);
p.sendMessage(new TextComponent(ChatColor.RED + "Player: " + ChatColor.GOLD + muteplayer + ChatColor.RED + " is not connected to server: " + server));
}
if(identifier.equals("Mutable")) {
String player = in.readUTF();
String channel = in.readUTF();
String color = in.readUTF();
ProxiedPlayer p = getProxy().getPlayer(player);
p.sendMessage(new TextComponent(ChatColor.RED + "You cannot mute players in this channel: " + ChatColor.valueOf(color.toUpperCase()) + channel));
}
if(identifier.equals("Already")) {
String player = in.readUTF();
String muteplayer = in.readUTF();
String channel = in.readUTF();
String color = in.readUTF();
ProxiedPlayer p = getProxy().getPlayer(player);
p.sendMessage(new TextComponent(ChatColor.GOLD + muteplayer + ChatColor.RED + " is already muted in channel: " + ChatColor.valueOf(color.toUpperCase()) + channel));
}
if(identifier.equals("Time")) {
String player = in.readUTF();
String muteplayer = in.readUTF();
String channel = in.readUTF();
String color = in.readUTF();
ProxiedPlayer p = getProxy().getPlayer(player);
p.sendMessage(new TextComponent(ChatColor.RED + "Muted player " + ChatColor.GOLD + muteplayer + ChatColor.RED + " in: " + ChatColor.valueOf(color.toUpperCase()) + channel));
}
if(identifier.equals("Valid")) {
String player = in.readUTF();
String muteplayer = in.readUTF();
String channel = in.readUTF();
String color = in.readUTF();
String time = in.readUTF();
ProxiedPlayer p = getProxy().getPlayer(player);
String timedmute = "";
if(!time.equals("None\n")) {
String keyword = "minutes";
if(time.equals("1")) keyword = "minute";
timedmute = ChatColor.RED + " for " + time + " " + keyword;
}
p.sendMessage(new TextComponent(ChatColor.RED + "Muted player " + ChatColor.GOLD + muteplayer + ChatColor.RED + " in: " + ChatColor.valueOf(color.toUpperCase()) + channel + timedmute));
}
}
if(subchannel.equals("Muteall")) {
String identifier = in.readUTF();
if(identifier.equals("Player")) {
String player = in.readUTF();
String muteplayer = in.readUTF();
String server = in.readUTF();
ProxiedPlayer p = getProxy().getPlayer(player);
p.sendMessage(new TextComponent(ChatColor.RED + "Player: " + ChatColor.GOLD + muteplayer + ChatColor.RED + " is not connected to server: " + server));
}
if(identifier.equals("Valid")) {
String player = in.readUTF();
String muteplayer = in.readUTF();
ProxiedPlayer p = getProxy().getPlayer(player);
p.sendMessage(new TextComponent(ChatColor.RED + "Muted player " + ChatColor.GOLD + muteplayer + ChatColor.RED + " in all channels."));
}
}
if(subchannel.equals("Unmuteall")) {
String identifier = in.readUTF();
if(identifier.equals("Player")) {
String player = in.readUTF();
String muteplayer = in.readUTF();
String server = in.readUTF();
ProxiedPlayer p = getProxy().getPlayer(player);
p.sendMessage(new TextComponent(ChatColor.RED + "Player: " + ChatColor.GOLD + muteplayer + ChatColor.RED + " is not connected to server: " + server));
}
if(identifier.equals("Valid")) {
String player = in.readUTF();
String muteplayer = in.readUTF();
ProxiedPlayer p = getProxy().getPlayer(player);
p.sendMessage(new TextComponent(ChatColor.RED + "Unmuted player " + ChatColor.GOLD + muteplayer + ChatColor.RED + " in all channels."));
}
}
if(subchannel.equals("Unmute")) {
String identifier = in.readUTF();
if(identifier.equals("Channel")) {
String player = in.readUTF();
String channel = in.readUTF();
ProxiedPlayer p = getProxy().getPlayer(player);
p.sendMessage(new TextComponent(ChatColor.RED + "Invalid channel: " + channel));
}
if(identifier.equals("Player")) {
String player = in.readUTF();
String muteplayer = in.readUTF();
String server = in.readUTF();
ProxiedPlayer p = getProxy().getPlayer(player);
p.sendMessage(new TextComponent(ChatColor.RED + "Player: " + ChatColor.GOLD + muteplayer + ChatColor.RED + " is not connected to server: " + server));
}
if(identifier.equals("Already")) {
String player = in.readUTF();
String muteplayer = in.readUTF();
String channel = in.readUTF();
String color = in.readUTF();
ProxiedPlayer p = getProxy().getPlayer(player);
p.sendMessage(new TextComponent(ChatColor.GOLD + muteplayer + ChatColor.RED + " is not muted in channel: " + ChatColor.valueOf(color.toUpperCase()) + channel));
}
if(identifier.equals("Valid")) {
String player = in.readUTF();
String muteplayer = in.readUTF();
String channel = in.readUTF();
String color = in.readUTF();
ProxiedPlayer p = getProxy().getPlayer(player);
p.sendMessage(new TextComponent(ChatColor.RED + "Unmuted player " + ChatColor.GOLD + muteplayer + ChatColor.RED + " in: " + ChatColor.valueOf(color.toUpperCase()) + channel));
}
}
}
catch(Exception e) {
e.printStackTrace();

View File

@ -1,5 +1,8 @@
package mineverse.Aust1n46.chat.command;
import java.util.List;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
//This class is the parent class of all of the plugins commands. The execute method runs the command.
@ -13,8 +16,12 @@ public abstract class MineverseCommand {
}
public abstract void execute(CommandSender sender, String command, String[] args);
public List<String> onTabComplete(CommandSender sender, Command command, String label, String[] args) {
return null;
}
public String getName() {
return name;
}
}
}

View File

@ -1,13 +1,14 @@
package mineverse.Aust1n46.chat.command;
import java.util.List;
import java.util.Map;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.command.TabExecutor;
//This class is a standard command executor that is used to run the MineverseCommand's.
public class MineverseCommandExecutor implements CommandExecutor {
public class MineverseCommandExecutor implements TabExecutor {
private Map<String, MineverseCommand> commands;
public MineverseCommandExecutor(Map<String, MineverseCommand> commands) {
@ -16,12 +17,12 @@ public class MineverseCommandExecutor implements CommandExecutor {
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] parameters) {
for(String com : commands.keySet()) {
if(command.getName().equalsIgnoreCase(com)) {
commands.get(com).execute(sender, command.getName(), parameters);
return true;
}
}
return false;
commands.get(command.getName()).execute(sender, command.getName(), parameters);
return true;
}
}
@Override
public List<String> onTabComplete(CommandSender sender, Command command, String label, String[] args) {
return commands.get(command.getName()).onTabComplete(sender, command, label, args);
}
}

View File

@ -1,6 +1,15 @@
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 org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.util.StringUtil;
import mineverse.Aust1n46.chat.MineverseChat;
import mineverse.Aust1n46.chat.api.MineverseChatAPI;
@ -11,6 +20,7 @@ import mineverse.Aust1n46.chat.localization.LocalizedMessage;
import mineverse.Aust1n46.chat.utilities.Format;
public class Mute extends MineverseCommand {
private MineverseChat plugin = MineverseChat.getInstance();
public Mute(String name) {
super(name);
@ -24,86 +34,81 @@ public class Mute extends MineverseCommand {
.replace("{args}", "[player] [channel] {time}"));
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 (args.length == 2) {
if (ChatChannel.isChannel(args[1])) {
ChatChannel channel = ChatChannel.getChannel(args[1]);
if (player.isMuted(channel.getName())) {
sender.sendMessage(LocalizedMessage.PLAYER_ALREADY_MUTED.toString()
.replace("{player}", player.getName()).replace("{channel_color}", channel.getColor())
.replace("{channel_name}", channel.getName()));
return;
}
if (channel.isMutable()) {
player.addMute(channel.getName(), 0);
sender.sendMessage(LocalizedMessage.MUTE_PLAYER_SENDER.toString()
.replace("{player}", player.getName()).replace("{channel_color}", channel.getColor())
.replace("{channel_name}", channel.getName()));
if (player.isOnline())
player.getPlayer()
.sendMessage(LocalizedMessage.MUTE_PLAYER_PLAYER.toString()
.replace("{channel_color}", channel.getColor())
.replace("{channel_name}", channel.getName()));
else
player.setModified(true);
if (channel.getBungee()) {
MineverseChat.getInstance().synchronize(player, true);
}
return;
}
sender.sendMessage(LocalizedMessage.CHANNEL_CANNOT_MUTE.toString()
.replace("{channel_color}", channel.getColor())
.replace("{channel_name}", channel.getName()));
return;
}
sender.sendMessage(LocalizedMessage.INVALID_CHANNEL.toString().replace("{args}", args[1]));
return;
}
if (ChatChannel.isChannel(args[1])) {
ChatChannel channel = ChatChannel.getChannel(args[1]);
if (player.isMuted(channel.getName())) {
sender.sendMessage(LocalizedMessage.PLAYER_ALREADY_MUTED.toString()
.replace("{player}", player.getName()).replace("{channel_color}", channel.getColor())
.replace("{channel_name}", channel.getName()));
return;
}
if (channel.isMutable()) {
try {
long datetime = System.currentTimeMillis();
long time = Format.parseTimeStringToMillis(args[2]);
if (time > 0) {
player.addMute(channel.getName(), datetime + time);
String timeString = Format.parseTimeStringFromMillis(time);
sender.sendMessage(LocalizedMessage.MUTE_PLAYER_SENDER_TIME.toString()
.replace("{player}", player.getName())
.replace("{channel_color}", channel.getColor())
.replace("{channel_name}", channel.getName())
.replace("{time}", timeString));
if (player.isOnline())
player.getPlayer()
.sendMessage(LocalizedMessage.MUTE_PLAYER_PLAYER_TIME.toString()
.replace("{channel_color}", channel.getColor())
.replace("{channel_name}", channel.getName())
.replace("{time}", timeString));
else
player.setModified(true);
if (channel.getBungee()) {
MineverseChat.getInstance().synchronize(player, true);
long datetime = System.currentTimeMillis();
long time = 0;
if(args.length > 2) {
try {
time = Format.parseTimeStringToMillis(args[2]);
if (time <= 0) {
sender.sendMessage(LocalizedMessage.INVALID_TIME.toString().replace("{args}", args[2]));
return;
}
}
catch (Exception e) {
sender.sendMessage(LocalizedMessage.INVALID_TIME.toString().replace("{args}", args[2]));
return;
}
sender.sendMessage(LocalizedMessage.INVALID_TIME.toString().replace("{args}", args[2]));
} catch (Exception e) {
sender.sendMessage(LocalizedMessage.INVALID_TIME.toString().replace("{args}", args[2]));
}
if(channel.getBungee()) {
if(args.length > 2) {
sendBungeeCordMute(sender, args[0], channel, datetime + time);
return;
}
sendBungeeCordMute(sender, args[0], channel, 0);
return;
}
MineverseChatPlayer playerToMute = MineverseChatAPI.getMineverseChatPlayer(args[0]);
if (playerToMute == null || (!playerToMute.isOnline() && !sender.hasPermission("venturechat.mute.offline"))) {
sender.sendMessage(LocalizedMessage.PLAYER_OFFLINE.toString().replace("{args}", args[0]));
return;
}
if (playerToMute.isMuted(channel.getName())) {
sender.sendMessage(LocalizedMessage.PLAYER_ALREADY_MUTED.toString()
.replace("{player}", playerToMute.getName()).replace("{channel_color}", channel.getColor())
.replace("{channel_name}", channel.getName()));
return;
}
if(args.length > 2) {
playerToMute.addMute(channel.getName(), datetime + time);
String timeString = Format.parseTimeStringFromMillis(time);
sender.sendMessage(LocalizedMessage.MUTE_PLAYER_SENDER_TIME.toString()
.replace("{player}", playerToMute.getName())
.replace("{channel_color}", channel.getColor())
.replace("{channel_name}", channel.getName())
.replace("{time}", timeString));
if (playerToMute.isOnline()) {
playerToMute.getPlayer()
.sendMessage(LocalizedMessage.MUTE_PLAYER_PLAYER_TIME.toString()
.replace("{channel_color}", channel.getColor())
.replace("{channel_name}", channel.getName())
.replace("{time}", timeString));
}
else {
playerToMute.setModified(true);
}
return;
}
playerToMute.addMute(channel.getName(), 0);
sender.sendMessage(LocalizedMessage.MUTE_PLAYER_SENDER.toString()
.replace("{player}", playerToMute.getName()).replace("{channel_color}", channel.getColor())
.replace("{channel_name}", channel.getName()));
if (playerToMute.isOnline()) {
playerToMute.getPlayer()
.sendMessage(LocalizedMessage.MUTE_PLAYER_PLAYER.toString()
.replace("{channel_color}", channel.getColor())
.replace("{channel_name}", channel.getName()));
}
else {
playerToMute.setModified(true);
}
return;
}
sender.sendMessage(LocalizedMessage.CHANNEL_CANNOT_MUTE.toString()
.replace("{channel_color}", channel.getColor()).replace("{channel_name}", channel.getName()));
.replace("{channel_color}", channel.getColor())
.replace("{channel_name}", channel.getName()));
return;
}
sender.sendMessage(LocalizedMessage.INVALID_CHANNEL.toString().replace("{args}", args[1]));
@ -111,4 +116,36 @@ public class Mute extends MineverseCommand {
}
sender.sendMessage(LocalizedMessage.COMMAND_NO_PERMISSION.toString());
}
@Override
public List<String> onTabComplete(CommandSender sender, Command command, String label, String[] args) {
List<String> completions = new ArrayList<>();
StringUtil.copyPartialMatches(args[args.length - 1], MineverseChat.networkPlayerNames, completions);
completions.add("tester");
Collections.sort(completions);
return completions;
}
private void sendBungeeCordMute(CommandSender sender, String playerToMute, ChatChannel channel, long time) {
ByteArrayOutputStream byteOutStream = new ByteArrayOutputStream();
DataOutputStream out = new DataOutputStream(byteOutStream);
try {
out.writeUTF("Mute");
out.writeUTF("Send");
if(sender instanceof Player) {
out.writeUTF(((Player) sender).getUniqueId().toString());
}
else {
out.writeUTF("VentureChat:Console");
}
out.writeUTF(playerToMute);
out.writeUTF(channel.getName());
out.writeLong(time);
plugin.getServer().getOnlinePlayers().iterator().next().sendPluginMessage(plugin, MineverseChat.PLUGIN_MESSAGING_CHANNEL, byteOutStream.toByteArray());
out.close();
}
catch(Exception e) {
e.printStackTrace();
}
}
}

View File

@ -0,0 +1,37 @@
package mineverse.Aust1n46.chat.database;
import java.util.HashMap;
import java.util.UUID;
public class TemporaryDataInstance {
private int messagePackets;
private UUID uuid;
private static HashMap<UUID, TemporaryDataInstance> temporaryDataInstances = new HashMap<UUID, TemporaryDataInstance>();
private TemporaryDataInstance(UUID uuid) {
this.uuid = uuid;
}
public static UUID createTemporaryDataInstance() {
UUID uuid = UUID.randomUUID();
temporaryDataInstances.put(uuid, new TemporaryDataInstance(uuid));
return uuid;
}
public static TemporaryDataInstance getTemporaryDataInstance(UUID uuid) {
return temporaryDataInstances.get(uuid);
}
public int getMessagePackets() {
return this.messagePackets;
}
public void incrementMessagePackets() {
this.messagePackets++;
}
public void destroyInstance() {
temporaryDataInstances.remove(uuid);
}
}