From 97be575fa2254fe340258da911b76597a254bd03 Mon Sep 17 00:00:00 2001 From: Marc Baloup Date: Sat, 17 Jan 2015 15:03:54 -0500 Subject: [PATCH] =?UTF-8?q?Ajout=20de=20la=20commande=20/broadcastperm=20p?= =?UTF-8?q?our=20publier=20un=20message=20que=20=C3=A0=20certains=20joueur?= =?UTF-8?q?s?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resources/plugin.yml | 6 +- .../pandacraftutils/PandacraftUtils.java | 69 +++++++++++++++++++ .../broadcast/CommandBroadcast.java | 18 ++++- 3 files changed, 91 insertions(+), 2 deletions(-) diff --git a/resources/plugin.yml b/resources/plugin.yml index b3d27ef..2b25acd 100644 --- a/resources/plugin.yml +++ b/resources/plugin.yml @@ -58,6 +58,10 @@ commands: description: Envoi un message sur tout le serveur usage: /broadcast permission: pandacraft.broadcast + broadcastperm: + description: Envoi un message aux joueurs qui ont la permission spécifiée + usage: /broadcastperm + permission: pandacraft.broadcast @@ -126,7 +130,7 @@ permissions: # à ajouter ###################### pandacraft.broadcast: - description: Utiliser la commande broadcast + description: Utiliser la commande broadcast et broadcastperm default: op diff --git a/src/net/mc_pandacraft/java/plugin/pandacraftutils/PandacraftUtils.java b/src/net/mc_pandacraft/java/plugin/pandacraftutils/PandacraftUtils.java index 2fa96f0..8f81c3d 100644 --- a/src/net/mc_pandacraft/java/plugin/pandacraftutils/PandacraftUtils.java +++ b/src/net/mc_pandacraft/java/plugin/pandacraftutils/PandacraftUtils.java @@ -24,6 +24,8 @@ import net.mc_pandacraft.java.plugin.pandacraftutils.survival_cuboid.CommandWand import net.mc_pandacraft.java.plugin.pandacraftutils.system_analyzer.CommandSystem; import net.mc_pandacraft.java.util.mysql.DBConnection; +import org.bukkit.ChatColor; +import org.bukkit.entity.Player; import org.bukkit.plugin.java.JavaPlugin; public class PandacraftUtils extends JavaPlugin { @@ -124,6 +126,73 @@ public class PandacraftUtils extends JavaPlugin { try { databaseConnection.getConnection().close(); } catch (SQLException e) { } } + + + + + + /** + * Envoi d'un message groupé à plusieurs ou à tout les joueurs et peut-être à la console + * @param message message à envoyer + * @param prefix true si le message doit être précédé de "[Pandacraft] " + * @param console défini si le message doit être affiché sur la console + * @param permission défini la permission que doit avoir le joueur pour voir le message, ou null si le message est adressé à tous les joueurs + * @throws IllegalArgumentException si message est null + */ + public void broadcast(String message, boolean prefix, boolean console, String permission) { + if (message == null) + throw new IllegalArgumentException("Un message doit être défini"); + + if (prefix) + message = ChatColor.YELLOW+"["+ChatColor.WHITE+"Pandacraft"+ChatColor.YELLOW+"] " + message; + + + for (Player p : getServer().getOnlinePlayers()) + { + if (p==null || !p.isOnline()) continue; + if (permission != null && !p.hasPermission(permission)) continue; + p.sendMessage(message); + } + + if (console) + getServer().getConsoleSender().sendMessage(message); + + } + + + /** + * Envoi d'un message groupé à tout les joueurs et peut-être à la console + * @param message message à envoyer + * @param prefix true si le message doit être précédé de "[Pandacraft] " + * @param console défini si le message doit être affiché sur la console + * @throws IllegalArgumentException si message est null + */ + public void broadcast(String message, boolean prefix, boolean console) { + broadcast(message, prefix, console, null); + } + + + /** + * Envoi d'un message groupé à plusieurs ou à tout les joueurs, et à la console si le paramètre permission est null + * @param message message à envoyer + * @param prefix true si le message doit être précédé de "[Pandacraft] " + * @param permission défini la permission que doit avoir le joueur pour voir le message, ou null si le message est adressé à tous les joueurs et à la console + * @throws IllegalArgumentException si message est null + */ + public void broadcast(String message, boolean prefix, String permission) { + broadcast(message, prefix, (permission == null), permission); + } + + /** + * Envoi d'un message groupé à tout les joueurs et à la console + * @param message message à envoyer + * @param prefix true si le message doit être précédé de "[Pandacraft] " + */ + public void broadcast(String message, boolean prefix) { + broadcast(message, prefix, true, null); + } + + } diff --git a/src/net/mc_pandacraft/java/plugin/pandacraftutils/simple_commands/broadcast/CommandBroadcast.java b/src/net/mc_pandacraft/java/plugin/pandacraftutils/simple_commands/broadcast/CommandBroadcast.java index dd65f9e..9764bf8 100644 --- a/src/net/mc_pandacraft/java/plugin/pandacraftutils/simple_commands/broadcast/CommandBroadcast.java +++ b/src/net/mc_pandacraft/java/plugin/pandacraftutils/simple_commands/broadcast/CommandBroadcast.java @@ -15,13 +15,29 @@ public class CommandBroadcast implements CommandExecutor { public CommandBroadcast(PandacraftUtils pl) { plugin = pl; plugin.getCommand("broadcast").setExecutor(this); + plugin.getCommand("broadcastperm").setExecutor(this); } @Override public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { if (args.length == 0) return false; - plugin.getServer().broadcastMessage(ChatColor.YELLOW+"["+ChatColor.WHITE+"Pandacraft"+ChatColor.YELLOW+"] " + ChatColor.translateAlternateColorCodes('&', StringUtils.join(args, ' '))); + + if (label.equalsIgnoreCase("broadcast")) + { + plugin.broadcast(ChatColor.translateAlternateColorCodes('&', StringUtils.join(args, ' ')), true); + return true; + } + + // ici, il s'agit de /broadcastperm + if (args.length > 2) return false; + + String perm = args[0]; + args[0] = null; + + + plugin.broadcast(ChatColor.translateAlternateColorCodes('&', StringUtils.join(args, ' ')), true, perm); + return true; }