/** * Monitor PlayerChat events. * * @param event The event to watch */ @EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true) public void onPlayerChat(PlayerChatEvent event) { Player player = event.getPlayer(); PlayerProfile profile = Users.getProfile(player); if (profile == null) { return; } if (profile.getPartyChatMode()) { Party party = profile.getParty(); if (party == null) { player.sendMessage( "You're not in a party, type /p to leave party chat mode."); // TODO: Use mcLocale return; } String partyName = party.getName(); String playerName = player.getName(); McMMOPartyChatEvent chatEvent = new McMMOPartyChatEvent(playerName, partyName, event.getMessage()); plugin.getServer().getPluginManager().callEvent(chatEvent); if (chatEvent.isCancelled()) { return; } String prefix = ChatColor.GREEN + "(" + ChatColor.WHITE + playerName + ChatColor.GREEN + ") "; plugin .getLogger() .info("[P](" + partyName + ")" + "<" + playerName + "> " + chatEvent.getMessage()); for (Player member : party.getOnlineMembers()) { member.sendMessage(prefix + chatEvent.getMessage()); } event.setCancelled(true); } else if (profile.getAdminChatMode()) { String playerName = player.getName(); McMMOAdminChatEvent chatEvent = new McMMOAdminChatEvent(playerName, event.getMessage()); plugin.getServer().getPluginManager().callEvent(chatEvent); if (chatEvent.isCancelled()) { return; } String prefix = ChatColor.AQUA + "{" + ChatColor.WHITE + playerName + ChatColor.AQUA + "} "; plugin.getLogger().info("[A]<" + playerName + "> " + chatEvent.getMessage()); for (Player otherPlayer : plugin.getServer().getOnlinePlayers()) { if (Permissions.getInstance().adminChat(otherPlayer) || otherPlayer.isOp()) { otherPlayer.sendMessage(prefix + chatEvent.getMessage()); } } event.setCancelled(true); } }