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); 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")) { if(subchannel.equals("Message")) {
String identifier = msgin.readUTF(); String identifier = msgin.readUTF();
if(identifier.equals("Send")) { if(identifier.equals("Send")) {
@ -912,7 +1055,7 @@ public class MineverseChat extends JavaPlugin implements PluginMessageListener {
String echo = msgin.readUTF(); String echo = msgin.readUTF();
String spy = msgin.readUTF(); String spy = msgin.readUTF();
String msg = 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("Message");
out.writeUTF("Offline"); out.writeUTF("Offline");
out.writeUTF(server); 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) { catch(Exception e) {
e.printStackTrace(); 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.GlobalUnmute;
import mineverse.Aust1n46.chat.bungee.command.GlobalUnmuteAll; import mineverse.Aust1n46.chat.bungee.command.GlobalUnmuteAll;
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.ChatColor;
import net.md_5.bungee.api.chat.TextComponent;
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;
@ -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")) { if(subchannel.equals("Message")) {
String identifier = in.readUTF(); String identifier = in.readUTF();
if(identifier.equals("Send")) { if(identifier.equals("Send")) {
@ -489,124 +566,6 @@ public class MineverseChatBungee extends Plugin implements Listener {
smcp.setMessageToggle(in.readBoolean()); 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) { catch(Exception e) {
e.printStackTrace(); e.printStackTrace();

View File

@ -1,5 +1,8 @@
package mineverse.Aust1n46.chat.command; package mineverse.Aust1n46.chat.command;
import java.util.List;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
//This class is the parent class of all of the plugins commands. The execute method runs the command. //This class is the parent class of all of the plugins commands. The execute method runs the command.
@ -14,6 +17,10 @@ public abstract class MineverseCommand {
public abstract void execute(CommandSender sender, String command, String[] args); 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() { public String getName() {
return name; return name;
} }

View File

@ -1,13 +1,14 @@
package mineverse.Aust1n46.chat.command; package mineverse.Aust1n46.chat.command;
import java.util.List;
import java.util.Map; import java.util.Map;
import org.bukkit.command.Command; import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender; 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. //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; private Map<String, MineverseCommand> commands;
public MineverseCommandExecutor(Map<String, MineverseCommand> commands) { public MineverseCommandExecutor(Map<String, MineverseCommand> commands) {
@ -16,12 +17,12 @@ public class MineverseCommandExecutor implements CommandExecutor {
@Override @Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] parameters) { public boolean onCommand(CommandSender sender, Command command, String label, String[] parameters) {
for(String com : commands.keySet()) { commands.get(command.getName()).execute(sender, command.getName(), parameters);
if(command.getName().equalsIgnoreCase(com)) { return true;
commands.get(com).execute(sender, command.getName(), parameters); }
return true;
} @Override
} public List<String> onTabComplete(CommandSender sender, Command command, String label, String[] args) {
return false; return commands.get(command.getName()).onTabComplete(sender, command, label, args);
} }
} }

View File

@ -1,6 +1,15 @@
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 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;
@ -11,6 +20,7 @@ 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();
public Mute(String name) { public Mute(String name) {
super(name); super(name);
@ -24,86 +34,81 @@ public class Mute extends MineverseCommand {
.replace("{args}", "[player] [channel] {time}")); .replace("{args}", "[player] [channel] {time}"));
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 (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])) { if (ChatChannel.isChannel(args[1])) {
ChatChannel channel = ChatChannel.getChannel(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()) { if (channel.isMutable()) {
try { long datetime = System.currentTimeMillis();
long datetime = System.currentTimeMillis(); long time = 0;
long time = Format.parseTimeStringToMillis(args[2]); if(args.length > 2) {
if (time > 0) { try {
player.addMute(channel.getName(), datetime + time); time = Format.parseTimeStringToMillis(args[2]);
String timeString = Format.parseTimeStringFromMillis(time); if (time <= 0) {
sender.sendMessage(LocalizedMessage.MUTE_PLAYER_SENDER_TIME.toString() sender.sendMessage(LocalizedMessage.INVALID_TIME.toString().replace("{args}", args[2]));
.replace("{player}", player.getName()) return;
.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);
} }
}
catch (Exception e) {
sender.sendMessage(LocalizedMessage.INVALID_TIME.toString().replace("{args}", args[2]));
return; return;
} }
sender.sendMessage(LocalizedMessage.INVALID_TIME.toString().replace("{args}", args[2])); }
} catch (Exception e) { if(channel.getBungee()) {
sender.sendMessage(LocalizedMessage.INVALID_TIME.toString().replace("{args}", args[2])); 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; return;
} }
sender.sendMessage(LocalizedMessage.CHANNEL_CANNOT_MUTE.toString() 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; return;
} }
sender.sendMessage(LocalizedMessage.INVALID_CHANNEL.toString().replace("{args}", args[1])); 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()); 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);
}
}