package net.mc_pandacraft.java.plugin.pandacraftutils.commands; import java.text.DateFormat; import java.util.List; import java.util.Locale; import mkremins.fanciful.FancyMessage; import net.mc_pandacraft.java.plugin.pandacraftutils.modules.PrivateMessagesManager.MessageSender; import net.mc_pandacraft.java.plugin.pandacraftutils.modules.PrivateMessagesManager.MessageSendingException; import net.mc_pandacraft.java.plugin.pandacraftutils.modules.PrivateMessagesManager.PrivateDiscussion; import net.mc_pandacraft.java.plugin.pandacraftutils.players.OnlinePlayerManager; import org.bukkit.ChatColor; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; public class CommandTell extends AbstractCommandExecutor { public CommandTell() { super("tell"); } @Override public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { if (args.length == 0 && sender instanceof Player) { Player player = (Player) sender; onCommandDiscussionsList(player); return true; } else if (args.length == 0) { sender.sendMessage(ChatColor.RED+"Seul un joueur en ligne peut voir la liste de ses discussions."); return false; } if (args.length >= 2) { onCommandSend(sender, args[0], getLastParam(args, 1)); return true; } return false; } private void onCommandSend(CommandSender sender, String target, String message) { if (sender instanceof Player && OnlinePlayerManager.get((Player) sender).getEssentialsUser().isMuted()) { sender.sendMessage(ChatColor.RED+"Vous ne pouvez pas envoyer de message quand vous êtes muet"); return; } try { plugin.privateMessagesManager.inputMessage(new MessageSender(sender), target, message); } catch (MessageSendingException e) { sender.sendMessage(ChatColor.RED+e.getMessage()); } } private void onCommandDiscussionsList(Player player) { List lastDiscussions = plugin.privateMessagesManager.getLastDiscussions(player, 5); player.sendMessage(ChatColor.GOLD+"--- Messagerie privée - Liste des conversations ---"); for (PrivateDiscussion pvd : lastDiscussions) { String name = (pvd.name == null) ? new MessageSender(pvd.name).getDisplayName() : (pvd.name.toLowerCase().startsWith("g:")) ? ChatColor.GOLD+pvd.name.substring(2) : new MessageSender(pvd.name).getDisplayName(); String line = name+ChatColor.RESET; int nbM = pvd.nbUnread; if (nbM > 0) line += ChatColor.GRAY+" - "+ChatColor.RED+nbM+" message"+((nbM > 1)?"s":"")+" non lu"+((nbM > 1)?"s":""); DateFormat date = DateFormat.getDateInstance(DateFormat.MEDIUM, Locale.FRANCE); DateFormat hour = DateFormat.getTimeInstance(DateFormat.MEDIUM, Locale.FRANCE); String affDate = date.format(pvd.timeLastMessage) + " à " + hour.format(pvd.timeLastMessage); line += ChatColor.GRAY+" - "+affDate; new FancyMessage("").then(line).color(ChatColor.GRAY).command("/m d:"+((pvd.name == null)?"null":pvd.name)).send(player); } player.sendMessage(ChatColor.GOLD+"Cliquez sur une conversation pour voir les messages"); player.sendMessage(ChatColor.GOLD+"----------------------------------------------"); } }