Meilleure gestion des messages privés en provenance de la console
This commit is contained in:
@@ -5,6 +5,7 @@ import net.mc_pandacraft.java.plugin.pandacraftutils.network_api.request_executo
|
||||
import net.mc_pandacraft.java.plugin.pandacraftutils.network_api.request_executors.RequestExecutorCommand;
|
||||
import net.mc_pandacraft.java.plugin.pandacraftutils.network_api.request_executors.RequestExecutorCommandAsync;
|
||||
import net.mc_pandacraft.java.plugin.pandacraftutils.network_api.request_executors.RequestExecutorPlayerList;
|
||||
import net.mc_pandacraft.java.plugin.pandacraftutils.network_api.request_executors.RequestExecutorPrivateMessage;
|
||||
|
||||
public class NetworkAPI {
|
||||
|
||||
@@ -22,6 +23,7 @@ public class NetworkAPI {
|
||||
new RequestExecutorCommandAsync();
|
||||
new RequestExecutorPlayerList();
|
||||
new RequestExecutorChatSend();
|
||||
new RequestExecutorPrivateMessage();
|
||||
|
||||
}
|
||||
|
||||
|
@@ -51,10 +51,7 @@ public class NetworkAPIListener extends Thread {
|
||||
private HashMap<String, AbstractRequestExecutor> requestExecutors = new HashMap<String, AbstractRequestExecutor>();
|
||||
|
||||
private NetworkAPIListener() {
|
||||
super("NetworkAPI Listener");
|
||||
plugin.getServer().getLogger().info("System property 'file.encoding' was set to 'UTF-8'");
|
||||
|
||||
|
||||
super("NAPI Listener");
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -148,7 +145,7 @@ class PacketExecutor extends Thread {
|
||||
private Socket socket;
|
||||
|
||||
public PacketExecutor(Socket s, int iteration) {
|
||||
super("NetworkAPI Input Packet #"+iteration);
|
||||
super("NAPI Input "+iteration);
|
||||
socket = s;
|
||||
}
|
||||
|
||||
|
@@ -0,0 +1,60 @@
|
||||
package net.mc_pandacraft.java.plugin.pandacraftutils.network_api.request_executors;
|
||||
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import com.earth2me.essentials.CommandSource;
|
||||
import com.earth2me.essentials.Console;
|
||||
|
||||
import ru.tehkode.permissions.PermissionUser;
|
||||
import ru.tehkode.permissions.bukkit.PermissionsEx;
|
||||
import net.mc_pandacraft.java.plugin.pandacraftutils.network_api.Response;
|
||||
import net.mc_pandacraft.java.plugin.pandacraftutils.players.OnlinePlayerManager;
|
||||
import net.mc_pandacraft.java.plugin.pandacraftutils.plugin_interface.EssentialsInterface;
|
||||
|
||||
public class RequestExecutorPrivateMessage extends AbstractRequestExecutor {
|
||||
|
||||
public RequestExecutorPrivateMessage() {
|
||||
super("private_message");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Response run(String data) {
|
||||
|
||||
String[] dataSplit = data.split(" ", 3);
|
||||
if (dataSplit.length != 3)
|
||||
return new Response(false, "bad_data : at least two space");
|
||||
|
||||
PermissionUser permUser = PermissionsEx.getUser(dataSplit[0]);
|
||||
|
||||
if (permUser == null)
|
||||
return new Response(false, "user_src_not_exist : user is not registered in permission plugin");
|
||||
|
||||
Player p = plugin.getServer().getPlayer(dataSplit[1]);
|
||||
|
||||
if (p == null || !p.isOnline()) {
|
||||
plugin.getLogger().warning(ChatColor.RED+dataSplit[1]+" n'est pas en ligne");
|
||||
return new Response(false, "user_dest_not_online");
|
||||
}
|
||||
|
||||
String displayName = "["+ChatColor.GRAY+"Console"+ChatColor.GOLD+"]"+permUser.getPrefix() + permUser.getName() + permUser.getSuffix();
|
||||
|
||||
|
||||
String finalMessageToUser = ChatColor.GOLD+"["+displayName+ChatColor.GOLD+" -> moi] "+ChatColor.RESET+dataSplit[2];
|
||||
String finalMessageToConsole = ChatColor.GOLD+"["+displayName+ChatColor.GOLD+" -> "+p.getDisplayName()+ChatColor.GOLD+"] "+ChatColor.RESET+dataSplit[2];
|
||||
|
||||
plugin.getServer().getConsoleSender().sendMessage(ChatColor.translateAlternateColorCodes('&', finalMessageToConsole));
|
||||
p.sendMessage(ChatColor.translateAlternateColorCodes('&', finalMessageToUser));
|
||||
|
||||
if (!OnlinePlayerManager.get(p).hasReceiveMessageFromNetworkAPI()) {
|
||||
p.sendMessage(ChatColor.GREEN+"Répondez à un message venant de la console avec "+ChatColor.GRAY+"/m console");
|
||||
}
|
||||
|
||||
|
||||
EssentialsInterface.getPlayer(p).setReplyTo(new CommandSource(plugin.getServer().getConsoleSender()));
|
||||
Console.getConsoleReplyTo().setReplyTo(new CommandSource(p));
|
||||
|
||||
return new Response(true, "");
|
||||
}
|
||||
|
||||
}
|
@@ -315,6 +315,21 @@ public class OnlinePlayer {
|
||||
|
||||
|
||||
|
||||
private boolean hasAlreadyReceivedMessageFromNetworkAPI = false;
|
||||
|
||||
/**
|
||||
* Indique à l'intance de OnlinePlayer que le joueur vient de recevoir un message
|
||||
* depuis le networkAPI.
|
||||
* @return <code>false</code> si il s'agit du premier message depuis la connexion du joueur ou <code>true</code> pour les messages suivant
|
||||
*/
|
||||
public boolean hasReceiveMessageFromNetworkAPI() {
|
||||
boolean r = hasAlreadyReceivedMessageFromNetworkAPI;
|
||||
hasAlreadyReceivedMessageFromNetworkAPI = true;
|
||||
return r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user