Package com.epicsagaonline.bukkit.EpicZones.CommandHandlers

Source Code of com.epicsagaonline.bukkit.EpicZones.CommandHandlers.WhoCommandHandler

package com.epicsagaonline.bukkit.EpicZones.CommandHandlers;

import java.util.ArrayList;

import org.bukkit.entity.Player;
import org.bukkit.event.player.PlayerChatEvent;

import com.epicsagaonline.bukkit.EpicZones.EpicZone;
import com.epicsagaonline.bukkit.EpicZones.EpicZonePlayer;
import com.epicsagaonline.bukkit.EpicZones.EpicZones;
import com.epicsagaonline.bukkit.EpicZones.General;

public class WhoCommandHandler {

  public static void Process(String[] data, PlayerChatEvent event)
  {

    int pageNumber = 1;

    if(EpicZones.permissions.has(event.getPlayer(), "epiczones.who"))
    {
      if (data.length > 1)
      {
        if (data[1].equalsIgnoreCase("all"))
        {
          if (data.length > 2)
          {
            try
            {
              pageNumber = Integer.parseInt(data[2]);
            }
            catch(NumberFormatException nfe)
            {
              pageNumber = 1;
            }
          }
          buildWho(General.getPlayer(event.getPlayer().getName()), event.getPlayer(), pageNumber, true);
          return;
        }
        else
        {
          try
          {
            pageNumber = Integer.parseInt(data[1]);
          }
          catch(NumberFormatException nfe)
          {
            pageNumber = 1;
          }
        }
      }
      buildWho(General.getPlayer(event.getPlayer().getName()), event.getPlayer(), pageNumber, false);
      event.setCancelled(true);
    }
  }

  private static void buildWho(EpicZonePlayer ezp, Player player, int pageNumber, boolean allZones)
  {

    EpicZone currentZone = General.getPlayer(player.getName()).getCurrentZone();
    if(currentZone == null){allZones = true;}
    ArrayList<EpicZonePlayer> players = getPlayers(currentZone, allZones);
    int playersPerPage = 8;
    int playerCount = players.size();

    if (allZones)
    {
      player.sendMessage(playerCount + " Players Online [Page " + pageNumber + " of " + ((int)Math.ceil((double)playerCount / (double)playersPerPage)) + "]");
      for(int i = (pageNumber - 1) * playersPerPage; i < (pageNumber * playersPerPage); i++)
      {
        if (players.size() > i)
        {
          player.sendMessage(buildWhoPlayerName(ezp, players, i, allZones));
        }
      }
    }
    else
    {
      player.sendMessage(playerCount + " Players Online in " + currentZone.getName() + " [Page " + pageNumber + " of " + ((int)Math.ceil((double)playerCount / playersPerPage) + 1) + "]");
      for(int i = (pageNumber - 1) * playersPerPage; i < pageNumber * playersPerPage; i++)
      {
        if (players.size() > i)
        {
          player.sendMessage(buildWhoPlayerName(ezp, players, i, allZones));
        }
      }
    }
  }

  private static String buildWhoPlayerName(EpicZonePlayer ezp, ArrayList<EpicZonePlayer> players, int index, boolean allZones )
  {

    if (allZones)
    {
      if(players.get(index).getCurrentZone() != null)
      {
        return players.get(index).getName() + " - " + players.get(index).getCurrentZone().getName() + " - Distance: " + CalcDist(ezp, players.get(index));
      }
      else
      {
        return players.get(index).getName() + " - Distance: " + CalcDist(ezp, players.get(index));
      }
    }
    else
    {
      return players.get(index).getName() + " - Distance: " + CalcDist(ezp, players.get(index));
    }
  }

  private static int  CalcDist(EpicZonePlayer player1, EpicZonePlayer player2)
  {
    int result = 0;

    if(!player1.getName().equals(player2.getName()))
    {
      int a = Math.abs(player1.getCurrentLocation().getBlockX() - player2.getCurrentLocation().getBlockX());
      int b = Math.abs(player1.getCurrentLocation().getBlockZ() - player2.getCurrentLocation().getBlockZ());
      int aSquared = (a * a);
      int bSquared = (b * b);
      int cSquared = aSquared + bSquared;     
     
      result = (int)Math.ceil(Math.sqrt(cSquared));
    }

    return result;
  }

  private static ArrayList<EpicZonePlayer> getPlayers(EpicZone currentZone, boolean allZones)
  {
    if (allZones)
    {
      return General.myPlayers;
    }
    else
    {
      ArrayList<EpicZonePlayer> result = new ArrayList<EpicZonePlayer>();
      for (EpicZonePlayer ezp: General.myPlayers)
      {
        if (!result.contains(ezp) && ezp.getCurrentZone().equals(currentZone))
        {
          result.add(ezp);
        }
      }
      return result;
    }
  }
}
TOP

Related Classes of com.epicsagaonline.bukkit.EpicZones.CommandHandlers.WhoCommandHandler

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.