package net.geforcemods.securitycraft.util;
import java.util.Iterator;
import java.util.List;
import net.geforcemods.securitycraft.entity.EntitySecurityCamera;
import net.minecraft.client.Minecraft;
import net.minecraft.command.ICommandSender;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.server.MinecraftServer;
import net.minecraft.util.ChatComponentText;
import net.minecraft.util.EnumChatFormatting;
import net.minecraftforge.common.ForgeHooks;
import net.minecraftforge.fml.common.FMLCommonHandler;
import net.minecraftforge.fml.relauncher.Side;
public class PlayerUtils{
/**
* Gets the EntityPlayer instance of a player (if they're online) using their name. <p>
*
* Args: playerName.
*/
public static EntityPlayer getPlayerFromName(String par1){
if(FMLCommonHandler.instance().getEffectiveSide() == Side.CLIENT){
List<?> players = Minecraft.getMinecraft().theWorld.playerEntities;
Iterator<?> iterator = players.iterator();
while(iterator.hasNext()){
EntityPlayer tempPlayer = (EntityPlayer) iterator.next();
if(tempPlayer.getName().matches(par1)){
return tempPlayer;
}
}
return null;
}else{
List<?> players = MinecraftServer.getServer().getConfigurationManager().playerEntityList;
Iterator<?> iterator = players.iterator();
while(iterator.hasNext()){
EntityPlayer tempPlayer = (EntityPlayer) iterator.next();
if(tempPlayer.getName().matches(par1)){
return tempPlayer;
}
}
return null;
}
}
public static EntityPlayer getPlayerByUUID(String uuid){
if(FMLCommonHandler.instance().getEffectiveSide() == Side.CLIENT){
List<?> players = Minecraft.getMinecraft().theWorld.playerEntities;
Iterator<?> iterator = players.iterator();
while(iterator.hasNext()){
EntityPlayer tempPlayer = (EntityPlayer) iterator.next();
if(tempPlayer.getGameProfile().getId().toString().matches(uuid)){
return tempPlayer;
}
}
return null;
}else{
List<?> players = MinecraftServer.getServer().getConfigurationManager().playerEntityList;
Iterator<?> iterator = players.iterator();
while(iterator.hasNext()){
EntityPlayer tempPlayer = (EntityPlayer) iterator.next();
if(tempPlayer.getGameProfile().getId().toString().matches(uuid)){
return tempPlayer;
}
}
return null;
}
}
/**
* Returns true if a player with the given name is in the world.
*
* Args: playerName.
*/
public static boolean isPlayerOnline(String par1) {
if(FMLCommonHandler.instance().getEffectiveSide() == Side.CLIENT){
for(int i = 0; i < Minecraft.getMinecraft().theWorld.playerEntities.size(); i++){
EntityPlayer player = (EntityPlayer) Minecraft.getMinecraft().theWorld.playerEntities.get(i);
if(player != null && player.getName().matches(par1)){
return true;
}
}
return false;
}else{
return (MinecraftServer.getServer().getConfigurationManager().getPlayerByUsername(par1) != null);
}
}
public static void sendMessageToPlayer(EntityPlayer player, String prefix, String text, EnumChatFormatting color){
player.addChatComponentMessage(new ChatComponentText("[" + color + prefix + EnumChatFormatting.WHITE + "] " + text));
}
public static void sendMessageToPlayer(ICommandSender sender, String prefix, String text, EnumChatFormatting color){
sender.addChatMessage(new ChatComponentText("[" + color + prefix + EnumChatFormatting.WHITE + "] " + text));
}
/**
* Sends the given {@link ICommandSender} a chat message, followed by a link prefixed with a colon. <p>
*
* Args: sender, prefix, text, link, color.
*/
public static void sendMessageEndingWithLink(ICommandSender sender, String prefix, String text, String link, EnumChatFormatting color){
sender.addChatMessage(new ChatComponentText("[" + color + prefix + EnumChatFormatting.WHITE + "] " + text + ": ").appendSibling(ForgeHooks.newChatWithLinks(link)));
}
/**
* Returns true if the player is holding the given item.
*
* Args: player, item.
*/
public static boolean isHoldingItem(EntityPlayer player, Item item){
if(item == null && player.getCurrentEquippedItem() == null){
return true;
}
return (player.getCurrentEquippedItem() != null && player.getCurrentEquippedItem().getItem() == item);
}
/**
* Is the entity mounted on to a security camera?
*
* Args: entity.
*/
public static boolean isPlayerMountedOnCamera(EntityLivingBase entity) {
return entity.ridingEntity != null && entity.ridingEntity instanceof EntitySecurityCamera;
}
}