Browse Source

Added ChatAPI
Allows an external plugin to send admin and party chat
In addition to previous events allows for full control of the chat channels

NuclearW 13 years ago
parent
commit
46648e2547
1 changed files with 64 additions and 0 deletions
  1. 64 0
      src/main/java/com/gmail/nossr50/api/ChatAPI.java

+ 64 - 0
src/main/java/com/gmail/nossr50/api/ChatAPI.java

@@ -0,0 +1,64 @@
+package com.gmail.nossr50.api;
+
+import org.bukkit.Bukkit;
+import org.bukkit.ChatColor;
+import org.bukkit.entity.Player;
+
+import com.gmail.nossr50.Users;
+import com.gmail.nossr50.mcPermissions;
+import com.gmail.nossr50.events.chat.McMMOAdminChatEvent;
+import com.gmail.nossr50.events.chat.McMMOPartyChatEvent;
+
+public class ChatAPI {
+    /**
+     * Send a message to all members of a party
+     * </br>
+     * This function is designed for API usage.
+     *
+     * @param sender The name of the sender to display in the chat
+     * @param party The name of the party to send to
+     * @param message The message to send
+     */
+    public void sendPartyChat(String sender, String party, String message) {
+        McMMOPartyChatEvent chatEvent = new McMMOPartyChatEvent(sender, party, message);
+        Bukkit.getPluginManager().callEvent(chatEvent);
+
+        if(chatEvent.isCancelled()) return;
+
+        String pPrefix = ChatColor.GREEN + "(" + ChatColor.WHITE + chatEvent.getSender() + ChatColor.GREEN + ") ";
+
+        Bukkit.getLogger().info("[P](" + chatEvent.getParty() + ")" + "<" + chatEvent.getSender() + "> " + chatEvent.getMessage());
+
+        for (Player player : Bukkit.getServer().getOnlinePlayers()) {
+            if (Users.getProfile(player).inParty()) {
+                if (Users.getProfile(player).getParty().equalsIgnoreCase(chatEvent.getParty())) {
+                    player.sendMessage(pPrefix + chatEvent.getMessage());
+                }
+            }
+        }
+    }
+
+    /**
+     * Send a message to administrators
+     * </br>
+     * This function is designed for API usage.
+     *
+     * @param sender The name of the sender to display in the chat
+     * @param message The message to send
+     */
+    public void sendAdminChat(String sender, String message) {
+        McMMOAdminChatEvent chatEvent = new McMMOAdminChatEvent(sender, message);
+        Bukkit.getPluginManager().callEvent(chatEvent);
+
+        if(chatEvent.isCancelled()) return;
+
+        String aPrefix = ChatColor.AQUA + "{" + ChatColor.WHITE + chatEvent.getSender() + ChatColor.AQUA + "} ";
+
+        Bukkit.getLogger().info("[A]<" + chatEvent.getSender() + "> " + chatEvent.getMessage());
+
+        for (Player player : Bukkit.getServer().getOnlinePlayers()) {
+            if (mcPermissions.getInstance().adminChat(player) || player.isOp())
+                player.sendMessage(aPrefix + chatEvent.getMessage());
+        }
+    }
+}