ChatManager.java 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. package com.gmail.nossr50.chat;
  2. import com.gmail.nossr50.datatypes.party.Party;
  3. import com.gmail.nossr50.events.chat.McMMOPartyChatEvent;
  4. import com.gmail.nossr50.util.player.UserManager;
  5. import org.bukkit.ChatColor;
  6. import org.bukkit.entity.Player;
  7. import org.bukkit.plugin.Plugin;
  8. import com.gmail.nossr50.events.chat.McMMOChatEvent;
  9. import com.gmail.nossr50.locale.LocaleLoader;
  10. public abstract class ChatManager {
  11. protected Plugin plugin;
  12. protected boolean useDisplayNames;
  13. protected String chatPrefix;
  14. protected String senderName;
  15. protected String displayName;
  16. protected String message;
  17. protected ChatManager(Plugin plugin, boolean useDisplayNames, String chatPrefix) {
  18. this.plugin = plugin;
  19. this.useDisplayNames = useDisplayNames;
  20. this.chatPrefix = chatPrefix;
  21. }
  22. protected void handleChat(McMMOChatEvent event) {
  23. plugin.getServer().getPluginManager().callEvent(event);
  24. if (event.isCancelled()) {
  25. return;
  26. }
  27. senderName = event.getSender();
  28. displayName = useDisplayNames ? event.getDisplayName() : senderName;
  29. message = LocaleLoader.formatString(chatPrefix, displayName) + " " + event.getMessage();
  30. sendMessage();
  31. /*
  32. * Party Chat Spying
  33. * Party messages will be copied to people with the mcmmo.admin.chatspy permission node
  34. */
  35. if(event instanceof McMMOPartyChatEvent)
  36. {
  37. //We need to grab the party chat name
  38. McMMOPartyChatEvent partyChatEvent = (McMMOPartyChatEvent) event;
  39. //Find the people with permissions
  40. for(Player player : event.getPlugin().getServer().getOnlinePlayers())
  41. {
  42. //Check for toggled players
  43. if(UserManager.getPlayer(player).isPartyChatSpying())
  44. {
  45. Party adminParty = UserManager.getPlayer(player).getParty();
  46. //Only message admins not part of this party
  47. if(adminParty != null && !adminParty.getName().equalsIgnoreCase(partyChatEvent.getParty()))
  48. {
  49. //TODO: Incorporate JSON
  50. player.sendMessage(ChatColor.GOLD+"[SPY: "+ChatColor.GREEN+partyChatEvent.getParty()+ChatColor.GOLD+"] "+message);
  51. }
  52. }
  53. }
  54. }
  55. }
  56. public void handleChat(String senderName, String message) {
  57. handleChat(senderName, senderName, message, false);
  58. }
  59. public void handleChat(Player player, String message, boolean isAsync) {
  60. handleChat(player.getName(), player.getDisplayName(), message, isAsync);
  61. }
  62. public void handleChat(String senderName, String displayName, String message) {
  63. handleChat(senderName, displayName, message, false);
  64. }
  65. public abstract void handleChat(String senderName, String displayName, String message, boolean isAsync);
  66. protected abstract void sendMessage();
  67. }