diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java index 27367d5507..30959af211 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -53,6 +53,7 @@ import net.minecraft.server.ItemStack; import net.minecraft.server.WorldMap; import net.minecraft.server.WorldMapCollection; import org.bukkit.*; +import org.bukkit.permissions.Permissible; import org.bukkit.plugin.Plugin; import org.bukkit.plugin.PluginManager; import org.bukkit.plugin.ServicesManager; @@ -226,13 +227,7 @@ public final class CraftServer implements Server { } public int broadcastMessage(String message) { - Player[] players = getOnlinePlayers(); - - for (Player player : players) { - player.sendMessage(message); - } - - return players.length; + return broadcast(message, BROADCAST_CHANNEL_USERS); } public Player getPlayer(final EntityPlayer entity) { @@ -796,4 +791,19 @@ public final class CraftServer implements Server { public void shutdown() { console.a(); } + + public int broadcast(String message, String permission) { + int count = 0; + Set permissibles = getPluginManager().getPermissionSubscriptions(permission); + + for (Permissible permissible : permissibles) { + if (permissible instanceof CommandSender) { + CommandSender user = (CommandSender)permissible; + user.sendMessage(message); + count++; + } + } + + return count; + } }