diff --git a/Plugins/Mineplex.Core/src/mineplex/core/message/commands/AnnounceCommand.java b/Plugins/Mineplex.Core/src/mineplex/core/message/commands/AnnounceCommand.java index c82cdd800..cbdddc228 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/message/commands/AnnounceCommand.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/message/commands/AnnounceCommand.java @@ -10,6 +10,7 @@ import mineplex.core.message.MessageManager; import mineplex.serverdata.commands.AnnouncementCommand; import org.bukkit.Bukkit; +import org.bukkit.ChatColor; import org.bukkit.entity.Player; public class AnnounceCommand extends CommandBase @@ -22,13 +23,25 @@ public class AnnounceCommand extends CommandBase @Override public void Execute(Player caller, String[] args) { - if (args == null || args.length == 0) + if (args == null || args.length <= 1) { Plugin.Help(caller); } else { - new AnnouncementCommand(true, F.combine(args, 0, null, false)).publish(); + Rank rank = Rank.ALL; + + try + { + rank = Rank.valueOf(args[0]); + } + catch (IllegalArgumentException ex) + { + UtilPlayer.message(caller, F.main(Plugin.getName(), ChatColor.RED + "" + ChatColor.BOLD + "Invalid rank!")); + return; + } + + new AnnouncementCommand(true, rank.toString(), F.combine(args, 1, null, false)).publish(); } } } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/message/redis/AnnouncementHandler.java b/Plugins/Mineplex.Core/src/mineplex/core/message/redis/AnnouncementHandler.java index 81972dd76..6901ad162 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/message/redis/AnnouncementHandler.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/message/redis/AnnouncementHandler.java @@ -1,5 +1,7 @@ package mineplex.core.message.redis; +import mineplex.core.account.CoreClientManager; +import mineplex.core.common.Rank; import mineplex.core.common.util.C; import mineplex.core.common.util.F; import mineplex.core.common.util.UtilPlayer; @@ -13,20 +15,41 @@ import org.bukkit.entity.Player; public class AnnouncementHandler implements CommandCallback { + private CoreClientManager _clientManager; + + public AnnouncementHandler(CoreClientManager clientManager) + { + _clientManager = clientManager; + } + public void run(ServerCommand command) { if (command instanceof AnnouncementCommand) { AnnouncementCommand announcementCommand = (AnnouncementCommand)command; - + + Rank rank; + try + { + rank = Rank.valueOf(announcementCommand.getRank()); + } + catch (Exception e) + { + e.printStackTrace(); + return; + } + String message = announcementCommand.getMessage(); - if (announcementCommand.getDisplayTitle()) - UtilTextMiddle.display(C.cYellow + "Announcement", message, 10, 120, 10); - for (Player player : Bukkit.getOnlinePlayers()) { - UtilPlayer.message(player, F.main("Announcement", C.cAqua + message)); + if (_clientManager.hasRank(player, rank)) + { + if (announcementCommand.getDisplayTitle()) + UtilTextMiddle.display(C.cYellow + "Announcement", message, 10, 120, 10, player); + + UtilPlayer.message(player, F.main("Announcement", C.cAqua + message)); + } } } } diff --git a/Plugins/Mineplex.ServerData/src/mineplex/serverdata/commands/AnnouncementCommand.java b/Plugins/Mineplex.ServerData/src/mineplex/serverdata/commands/AnnouncementCommand.java index d7c8d87d6..ebb8804ac 100644 --- a/Plugins/Mineplex.ServerData/src/mineplex/serverdata/commands/AnnouncementCommand.java +++ b/Plugins/Mineplex.ServerData/src/mineplex/serverdata/commands/AnnouncementCommand.java @@ -4,14 +4,17 @@ package mineplex.serverdata.commands; public class AnnouncementCommand extends ServerCommand { private boolean _displayTitle; + private String _rank; private String _message; public boolean getDisplayTitle() { return _displayTitle; } + public String getRank() { return _rank; } public String getMessage() { return _message; } - public AnnouncementCommand(boolean displayTitle, String message) + public AnnouncementCommand(boolean displayTitle, String rank, String message) { _displayTitle = displayTitle; + _rank = rank; _message = message; }