Ajout de la commande /broadcastperm pour publier un message que à certains joueurs

This commit is contained in:
Marc Baloup 2015-01-17 15:03:54 -05:00
parent 1e9dae8dbe
commit 97be575fa2
3 changed files with 91 additions and 2 deletions

View File

@ -58,6 +58,10 @@ commands:
description: Envoi un message sur tout le serveur description: Envoi un message sur tout le serveur
usage: /broadcast <message> usage: /broadcast <message>
permission: pandacraft.broadcast permission: pandacraft.broadcast
broadcastperm:
description: Envoi un message aux joueurs qui ont la permission spécifiée
usage: /broadcastperm <permission> <message>
permission: pandacraft.broadcast
@ -126,7 +130,7 @@ permissions:
# à ajouter ###################### # à ajouter ######################
pandacraft.broadcast: pandacraft.broadcast:
description: Utiliser la commande broadcast description: Utiliser la commande broadcast et broadcastperm
default: op default: op

View File

@ -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.plugin.pandacraftutils.system_analyzer.CommandSystem;
import net.mc_pandacraft.java.util.mysql.DBConnection; import net.mc_pandacraft.java.util.mysql.DBConnection;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.plugin.java.JavaPlugin;
public class PandacraftUtils extends JavaPlugin { public class PandacraftUtils extends JavaPlugin {
@ -124,6 +126,73 @@ public class PandacraftUtils extends JavaPlugin {
try { databaseConnection.getConnection().close(); } catch (SQLException e) { } 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 <i>true</i> 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 <i>null</i> si le message est adressé à tous les joueurs
* @throws IllegalArgumentException si message est <i>null</i>
*/
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 <i>true</i> 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 <i>null</i>
*/
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 <b>permission</b> est <i>null</i>
* @param message message à envoyer
* @param prefix <i>true</i> 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 <i>null</i> si le message est adressé à tous les joueurs et à la console
* @throws IllegalArgumentException si message est <i>null</i>
*/
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 <i>true</i> si le message doit être précédé de "[Pandacraft] "
*/
public void broadcast(String message, boolean prefix) {
broadcast(message, prefix, true, null);
}
} }

View File

@ -15,13 +15,29 @@ public class CommandBroadcast implements CommandExecutor {
public CommandBroadcast(PandacraftUtils pl) { public CommandBroadcast(PandacraftUtils pl) {
plugin = pl; plugin = pl;
plugin.getCommand("broadcast").setExecutor(this); plugin.getCommand("broadcast").setExecutor(this);
plugin.getCommand("broadcastperm").setExecutor(this);
} }
@Override @Override
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
if (args.length == 0) return false; 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; return true;
} }