ChatManager.java 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. package com.gmail.nossr50.chat;
  2. import com.gmail.nossr50.datatypes.party.Party;
  3. import com.gmail.nossr50.datatypes.player.McMMOPlayer;
  4. import com.gmail.nossr50.events.chat.McMMOAdminChatEvent;
  5. import com.gmail.nossr50.events.chat.McMMOPartyChatEvent;
  6. import com.gmail.nossr50.mcMMO;
  7. import org.bukkit.ChatColor;
  8. import org.bukkit.entity.Player;
  9. import java.util.regex.Matcher;
  10. import java.util.regex.Pattern;
  11. public class ChatManager {
  12. private final String ADMIN_CHAT_PERMISSION = "mcmmo.chat.adminchat";
  13. private final mcMMO pluginRef;
  14. public ChatManager(mcMMO pluginRef) {
  15. this.pluginRef = pluginRef;
  16. }
  17. public void processAdminChat(Player player, String message) {
  18. sendAdminChatMessage(new McMMOAdminChatEvent(pluginRef, player.getName(), player.getDisplayName(), message));
  19. }
  20. public void processAdminChat(String senderName, String displayName, String message) {
  21. sendAdminChatMessage(new McMMOAdminChatEvent(pluginRef, senderName, displayName, message));
  22. }
  23. public void processPartyChat(Party party, Player sender, String message) {
  24. sendPartyChatMessage(new McMMOPartyChatEvent(pluginRef, sender.getName(), sender.getDisplayName(), party, message));
  25. }
  26. public void processPartyChat(Party party, String senderName, String message) {
  27. sendPartyChatMessage(new McMMOPartyChatEvent(pluginRef, senderName, senderName, party, message));
  28. }
  29. private void sendAdminChatMessage(McMMOAdminChatEvent event) {
  30. pluginRef.getServer().getPluginManager().callEvent(event);
  31. if (event.isCancelled()) {
  32. return;
  33. }
  34. String chatPrefix = pluginRef.getConfigManager().getConfigCommands().getAdminChatPrefix();
  35. String senderName = event.getSender();
  36. String displayName = pluginRef.getConfigManager().getConfigCommands().isUseDisplayNames() ? event.getDisplayName() : senderName;
  37. String message = pluginRef.getLocaleManager().formatString(chatPrefix, displayName) + " " + event.getMessage();
  38. pluginRef.getServer().broadcast(message, ADMIN_CHAT_PERMISSION);
  39. }
  40. private void sendPartyChatMessage(McMMOPartyChatEvent event) {
  41. pluginRef.getServer().getPluginManager().callEvent(event);
  42. if (event.isCancelled()) {
  43. return;
  44. }
  45. Party party = event.getParty();
  46. String chatPrefix = pluginRef.getConfigManager().getConfigParty().getPartyChatPrefixFormat();
  47. String senderName = event.getSender();
  48. String displayName = pluginRef.getConfigManager().getConfigCommands().isUseDisplayNames() ? event.getDisplayName() : senderName;
  49. String message = pluginRef.getLocaleManager().formatString(chatPrefix, displayName) + " " + event.getMessage();
  50. if (pluginRef.getConfigManager().getConfigParty().isPartyLeaderColoredGold()
  51. && senderName.equalsIgnoreCase(party.getLeader().getPlayerName())) {
  52. message = message.replaceFirst(Pattern.quote(displayName), ChatColor.GOLD + Matcher.quoteReplacement(displayName) + ChatColor.RESET);
  53. }
  54. for (Player member : party.getOnlineMembers()) {
  55. member.sendMessage(message);
  56. }
  57. if (party.getAlly() != null) {
  58. for (Player member : party.getAlly().getOnlineMembers()) {
  59. String allyPrefix = pluginRef.getLocaleManager().formatString(pluginRef.getConfigManager().getConfigParty().getPartyChatPrefixAlly());
  60. member.sendMessage(allyPrefix + message);
  61. }
  62. }
  63. pluginRef.getServer().getConsoleSender().sendMessage(ChatColor.stripColor("[mcMMO] [P]<" + party.getName() + ">" + message));
  64. /*
  65. * Party Chat Spying
  66. */
  67. for (McMMOPlayer mcMMOPlayer : pluginRef.getUserManager().getPlayers()) {
  68. Player player = mcMMOPlayer.getPlayer();
  69. //Check for toggled players
  70. if (mcMMOPlayer.isPartyChatSpying()) {
  71. Party adminParty = mcMMOPlayer.getParty();
  72. //Only message admins not part of this party
  73. if (adminParty != null) {
  74. //TODO: Incorporate JSON
  75. if (adminParty != event.getParty())
  76. player.sendMessage(pluginRef.getLocaleManager().getString("Commands.AdminChatSpy.Chat", event.getParty(), message));
  77. } else {
  78. player.sendMessage(pluginRef.getLocaleManager().getString("Commands.AdminChatSpy.Chat", event.getParty(), message));
  79. }
  80. }
  81. }
  82. }
  83. }