diff --git a/src/mineverse/Aust1n46/chat/MineverseChat.java b/src/mineverse/Aust1n46/chat/MineverseChat.java index d292910..13a2a61 100644 --- a/src/mineverse/Aust1n46/chat/MineverseChat.java +++ b/src/mineverse/Aust1n46/chat/MineverseChat.java @@ -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(); diff --git a/src/mineverse/Aust1n46/chat/bungee/MineverseChatBungee.java b/src/mineverse/Aust1n46/chat/bungee/MineverseChatBungee.java index f7c76d7..5d33d5f 100644 --- a/src/mineverse/Aust1n46/chat/bungee/MineverseChatBungee.java +++ b/src/mineverse/Aust1n46/chat/bungee/MineverseChatBungee.java @@ -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(); diff --git a/src/mineverse/Aust1n46/chat/command/MineverseCommand.java b/src/mineverse/Aust1n46/chat/command/MineverseCommand.java index e1a5876..818a793 100644 --- a/src/mineverse/Aust1n46/chat/command/MineverseCommand.java +++ b/src/mineverse/Aust1n46/chat/command/MineverseCommand.java @@ -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 onTabComplete(CommandSender sender, Command command, String label, String[] args) { + return null; + } + public String getName() { return name; } -} \ No newline at end of file +} diff --git a/src/mineverse/Aust1n46/chat/command/MineverseCommandExecutor.java b/src/mineverse/Aust1n46/chat/command/MineverseCommandExecutor.java index 1518bbf..fe442f8 100644 --- a/src/mineverse/Aust1n46/chat/command/MineverseCommandExecutor.java +++ b/src/mineverse/Aust1n46/chat/command/MineverseCommandExecutor.java @@ -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 commands; public MineverseCommandExecutor(Map 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; } -} \ No newline at end of file + + @Override + public List onTabComplete(CommandSender sender, Command command, String label, String[] args) { + return commands.get(command.getName()).onTabComplete(sender, command, label, args); + } +} diff --git a/src/mineverse/Aust1n46/chat/command/mute/Mute.java b/src/mineverse/Aust1n46/chat/command/mute/Mute.java index 8d990ae..980a16b 100644 --- a/src/mineverse/Aust1n46/chat/command/mute/Mute.java +++ b/src/mineverse/Aust1n46/chat/command/mute/Mute.java @@ -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 onTabComplete(CommandSender sender, Command command, String label, String[] args) { + List 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(); + } + } } diff --git a/src/mineverse/Aust1n46/chat/database/TemporaryDataInstance.java b/src/mineverse/Aust1n46/chat/database/TemporaryDataInstance.java new file mode 100644 index 0000000..af7b9dc --- /dev/null +++ b/src/mineverse/Aust1n46/chat/database/TemporaryDataInstance.java @@ -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 temporaryDataInstances = new HashMap(); + + 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); + } +}