Les joueurs peuvent maintenant voir leurs dernières discussions
This commit is contained in:
parent
0432d10975
commit
2fd3bc316c
@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<jardesc>
|
||||
<jar path="PandacraftUtils/jar_export/PandacraftUtils-4.3.jar"/>
|
||||
<jar path="PandacraftUtils/jar_export/PandacraftUtils-4.4.jar"/>
|
||||
<options buildIfNeeded="true" compress="true" descriptionLocation="/PandacraftUtils/make_jar.jardesc" exportErrors="true" exportWarnings="true" includeDirectoryEntries="false" overwrite="false" saveDescription="true" storeRefactorings="false" useSourceFolders="false"/>
|
||||
<storedRefactorings deprecationInfo="true" structuralOnly="false"/>
|
||||
<selectedProjects/>
|
||||
|
@ -1,6 +1,6 @@
|
||||
name: PandacraftUtils
|
||||
main: net.mc_pandacraft.java.plugin.pandacraftutils.PandacraftUtils
|
||||
version: 4.3
|
||||
version: 4.4
|
||||
|
||||
|
||||
|
||||
|
@ -1,7 +1,13 @@
|
||||
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;
|
||||
@ -20,11 +26,12 @@ public class CommandTell extends AbstractCommandExecutor {
|
||||
String[] args) {
|
||||
|
||||
if (args.length == 0 && sender instanceof Player) {
|
||||
plugin.privateMessagesManager.displayUnreadMessages((Player)sender);
|
||||
Player player = (Player) sender;
|
||||
onCommandDiscussionsList(player);
|
||||
return true;
|
||||
}
|
||||
else if (args.length == 0) {
|
||||
sender.sendMessage(ChatColor.RED+"Seul un joueur en ligne peut lire ses messages non lus.");
|
||||
sender.sendMessage(ChatColor.RED+"Seul un joueur en ligne peut voir la liste de ses discussions.");
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -60,5 +67,46 @@ public class CommandTell extends AbstractCommandExecutor {
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
private void onCommandDiscussionsList(Player player) {
|
||||
List<PrivateDiscussion> 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+"----------------------------------------------");
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
@ -24,6 +24,7 @@ import net.mc_pandacraft.java.plugin.pandacraftutils.players.OffPlayer;
|
||||
import net.mc_pandacraft.java.plugin.pandacraftutils.players.OnlinePlayer;
|
||||
import net.mc_pandacraft.java.plugin.pandacraftutils.players.OnlinePlayerManager;
|
||||
|
||||
import org.apache.commons.lang.NullArgumentException;
|
||||
import org.apache.commons.lang.Validate;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
@ -262,37 +263,21 @@ public class PrivateMessagesManager extends BukkitRunnable {
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* @param player le joueur qui veut voir ses messages non lus
|
||||
* @return vrai si le joueur a bien des messages non lu, faux sinon. Retourne vrai en cas d'erreur lors de la récupération des messages
|
||||
* Retourne les dernières discussions auquel a participé le joueur passé en paramètre.
|
||||
* @param p le joueur pour lequel on doit retourner les dernières discussions
|
||||
* @param nbLastMin le nombre de discussion minimum qui doit être retourné (si il en existe au moins ce nombre minimum)<br/>
|
||||
* Si le nombre de discussion totale est inférieur ou égale à <i>nbLastMin</i>, aucune suppression n'est faite.<br/>
|
||||
* Dans le cas contraire, la méthode supprime itérativement la discussion déjà lu la plus ancienne, jusqu'à ce que le nombre de discussion restante
|
||||
* soit égale à <i>nbLastMin</i> ou jusqu'à ce qu'il ne reste que des discussion non lus.
|
||||
* @return les discussions, dans l'ordre chronologique inverse des derniers messages de chaque discussions. Plus clairement, la discussion la
|
||||
* plus récente est placé à l'indice 0 de la liste.
|
||||
*/
|
||||
public boolean displayUnreadMessages(Player player) {
|
||||
try {
|
||||
List<MPMessageElement> messages = ((MPMessageTable)ORM.getTable("mp_message")).getAllUnreadForPlayer(player.getName());
|
||||
if (messages.size() == 0) {
|
||||
player.sendMessage(ChatColor.GRAY+"Vous n'avez pas de messages non lus");
|
||||
return false;
|
||||
}
|
||||
|
||||
for(MPMessageElement mess : messages)
|
||||
tryDisplayMessage(mess);
|
||||
|
||||
return true;
|
||||
|
||||
} catch (SQLException e) {
|
||||
e.printStackTrace();
|
||||
player.sendMessage(ChatColor.RED+"Impossible de lire les messages non lus");
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
public List<PrivateDiscussion> getLastDiscussions(Player p, Integer nbLast) {
|
||||
public List<PrivateDiscussion> getLastDiscussions(Player p, Integer nbLastMin) {
|
||||
try {
|
||||
// récupère les messages, triés de la plus vieille à la plus récente
|
||||
List<MPMessageElement> messages = ORM.getTable(MPMessageTable.class).getForPlayer(p.getName(), false, 1000);
|
||||
@ -321,9 +306,11 @@ public class PrivateMessagesManager extends BukkitRunnable {
|
||||
|
||||
}
|
||||
|
||||
if (nbLast != null && nbLast >= 0) {
|
||||
while (discussionList.size()>nbLast.intValue()) {
|
||||
discussionList.remove(discussionList.size()-1);
|
||||
if (nbLastMin != null && nbLastMin >= 0) {
|
||||
for (int i = discussionList.size()-1; i >= 0 && discussionList.size() > nbLastMin; i--) {
|
||||
if (discussionList.get(i).nbUnread == 0) {
|
||||
discussionList.remove(i);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -342,6 +329,7 @@ public class PrivateMessagesManager extends BukkitRunnable {
|
||||
public class PrivateDiscussion {
|
||||
/**
|
||||
* Le pseudo du joueur ou du groupe de discussion (avec "g:" devant)
|
||||
* ou null si il s'agit d'un message système (hors groupe)
|
||||
*/
|
||||
public final String name;
|
||||
public int nbUnread;
|
||||
@ -383,6 +371,8 @@ public class PrivateMessagesManager extends BukkitRunnable {
|
||||
*/
|
||||
private void tryDisplayMessage(MPMessageElement message) {
|
||||
|
||||
if (message == null) throw new NullArgumentException("message doit être non null");
|
||||
|
||||
try {
|
||||
|
||||
OffPlayer offP = new OffPlayer(message.getViewerNick());
|
||||
@ -546,12 +536,15 @@ public class PrivateMessagesManager extends BukkitRunnable {
|
||||
try {
|
||||
List<MPMessageElement> messages = ((MPMessageTable)ORM.getTable("mp_message")).getAllUnreadForPlayer(event.getPlayer().getName());
|
||||
|
||||
if (messages.size() == 0) return;
|
||||
int nbMess = messages.size();
|
||||
|
||||
if (nbMess == 0) return;
|
||||
|
||||
|
||||
String[] m = new String[] {
|
||||
ChatColor.GOLD+"--------------- Messagerie privée ---------------",
|
||||
ChatColor.GOLD+"Vous avez "+messages.size()+" message"+((messages.size()>1)?"s":"")+" non lu"+((messages.size()>1)?"s":""),
|
||||
ChatColor.GOLD+"Faites "+ChatColor.GRAY+"/m"+ChatColor.GOLD+" pour voir le"+((messages.size()>1)?"s":"")+" message"+((messages.size()>1)?"s":""),
|
||||
ChatColor.GOLD+"Vous avez "+nbMess+" message"+((nbMess>1)?"s":"")+" non lu"+((nbMess>1)?"s":""),
|
||||
ChatColor.GOLD+"Faites "+ChatColor.GRAY+"/m"+ChatColor.GOLD+" pour voir le"+((nbMess>1)?"s":"")+" message"+((nbMess>1)?"s":""),
|
||||
ChatColor.GOLD+"----------------------------------------------",
|
||||
};
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user