Esempio n. 1
0
  /**
   * 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);
    }
  }