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"?>
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
<jardesc>
|
<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"/>
|
<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"/>
|
<storedRefactorings deprecationInfo="true" structuralOnly="false"/>
|
||||||
<selectedProjects/>
|
<selectedProjects/>
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
name: PandacraftUtils
|
name: PandacraftUtils
|
||||||
main: net.mc_pandacraft.java.plugin.pandacraftutils.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;
|
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.MessageSender;
|
||||||
import net.mc_pandacraft.java.plugin.pandacraftutils.modules.PrivateMessagesManager.MessageSendingException;
|
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 net.mc_pandacraft.java.plugin.pandacraftutils.players.OnlinePlayerManager;
|
||||||
|
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
@ -20,11 +26,12 @@ public class CommandTell extends AbstractCommandExecutor {
|
|||||||
String[] args) {
|
String[] args) {
|
||||||
|
|
||||||
if (args.length == 0 && sender instanceof Player) {
|
if (args.length == 0 && sender instanceof Player) {
|
||||||
plugin.privateMessagesManager.displayUnreadMessages((Player)sender);
|
Player player = (Player) sender;
|
||||||
|
onCommandDiscussionsList(player);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
else if (args.length == 0) {
|
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;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -61,4 +68,45 @@ 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.OnlinePlayer;
|
||||||
import net.mc_pandacraft.java.plugin.pandacraftutils.players.OnlinePlayerManager;
|
import net.mc_pandacraft.java.plugin.pandacraftutils.players.OnlinePlayerManager;
|
||||||
|
|
||||||
|
import org.apache.commons.lang.NullArgumentException;
|
||||||
import org.apache.commons.lang.Validate;
|
import org.apache.commons.lang.Validate;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
@ -262,37 +263,21 @@ public class PrivateMessagesManager extends BukkitRunnable {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Retourne les dernières discussions auquel a participé le joueur passé en paramètre.
|
||||||
* @param player le joueur qui veut voir ses messages non lus
|
* @param p le joueur pour lequel on doit retourner les dernières discussions
|
||||||
* @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
|
* @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) {
|
public List<PrivateDiscussion> getLastDiscussions(Player p, Integer nbLastMin) {
|
||||||
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) {
|
|
||||||
try {
|
try {
|
||||||
// récupère les messages, triés de la plus vieille à la plus récente
|
// 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);
|
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) {
|
if (nbLastMin != null && nbLastMin >= 0) {
|
||||||
while (discussionList.size()>nbLast.intValue()) {
|
for (int i = discussionList.size()-1; i >= 0 && discussionList.size() > nbLastMin; i--) {
|
||||||
discussionList.remove(discussionList.size()-1);
|
if (discussionList.get(i).nbUnread == 0) {
|
||||||
|
discussionList.remove(i);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -342,6 +329,7 @@ public class PrivateMessagesManager extends BukkitRunnable {
|
|||||||
public class PrivateDiscussion {
|
public class PrivateDiscussion {
|
||||||
/**
|
/**
|
||||||
* Le pseudo du joueur ou du groupe de discussion (avec "g:" devant)
|
* 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 final String name;
|
||||||
public int nbUnread;
|
public int nbUnread;
|
||||||
@ -383,6 +371,8 @@ public class PrivateMessagesManager extends BukkitRunnable {
|
|||||||
*/
|
*/
|
||||||
private void tryDisplayMessage(MPMessageElement message) {
|
private void tryDisplayMessage(MPMessageElement message) {
|
||||||
|
|
||||||
|
if (message == null) throw new NullArgumentException("message doit être non null");
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|
||||||
OffPlayer offP = new OffPlayer(message.getViewerNick());
|
OffPlayer offP = new OffPlayer(message.getViewerNick());
|
||||||
@ -546,12 +536,15 @@ public class PrivateMessagesManager extends BukkitRunnable {
|
|||||||
try {
|
try {
|
||||||
List<MPMessageElement> messages = ((MPMessageTable)ORM.getTable("mp_message")).getAllUnreadForPlayer(event.getPlayer().getName());
|
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[] {
|
String[] m = new String[] {
|
||||||
ChatColor.GOLD+"--------------- Messagerie privée ---------------",
|
ChatColor.GOLD+"--------------- Messagerie privée ---------------",
|
||||||
ChatColor.GOLD+"Vous avez "+messages.size()+" message"+((messages.size()>1)?"s":"")+" non lu"+((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"+((messages.size()>1)?"s":"")+" message"+((messages.size()>1)?"s":""),
|
ChatColor.GOLD+"Faites "+ChatColor.GRAY+"/m"+ChatColor.GOLD+" pour voir le"+((nbMess>1)?"s":"")+" message"+((nbMess>1)?"s":""),
|
||||||
ChatColor.GOLD+"----------------------------------------------",
|
ChatColor.GOLD+"----------------------------------------------",
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user