package jas.spawner.modern.command;
import jas.spawner.modern.MVELProfile;
import jas.spawner.modern.spawner.CountInfo;
import jas.spawner.modern.spawner.CustomSpawner;
import jas.spawner.modern.spawner.creature.handler.LivingGroupRegistry;
import jas.spawner.modern.spawner.creature.handler.LivingHandler;
import jas.spawner.modern.spawner.creature.handler.LivingHandlerRegistry;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import net.minecraft.command.ICommandSender;
import net.minecraft.command.WrongUsageException;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityList;
import net.minecraft.entity.EntityLiving;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.util.ChatComponentText;
public class CommandLocate extends CommandJasBase {
public String getCommandName() {
return "locate";
}
/**
* Return the required permission level for this command.
*/
public int getRequiredPermissionLevel() {
return 2;
}
@Override
public String getCommandUsage(ICommandSender commandSender) {
return "commands.jaslocate.usage";
}
@Override
public void process(ICommandSender commandSender, String[] stringArgs) {
if (stringArgs.length >= 3) {
throw new WrongUsageException("commands.jaslocate.usage", new Object[0]);
}
EntityPlayerMP targetPlayer;
if (stringArgs.length == 2) {
targetPlayer = getPlayer(commandSender, stringArgs[0]);
} else {
targetPlayer = getPlayer(commandSender, commandSender.getCommandSenderName());
}
String entityTarget = stringArgs.length == 0 ? "*" : stringArgs.length == 1 ? stringArgs[0] : stringArgs[1];
StringBuilder countedContents = new StringBuilder();
countedContents.append("Locations: ");
boolean foundMatch = false;
Iterator<Entity> iterator = CustomSpawner.spawnCounter.countLoadedEntities(targetPlayer.worldObj).iterator();
CountInfo info = CustomSpawner.spawnCounter.countEntities(targetPlayer.worldObj);
while (iterator.hasNext()) {
Entity entity = iterator.next();
LivingGroupRegistry groupRegistry = MVELProfile.worldSettings().livingGroupRegistry();
LivingHandlerRegistry handlerRegistry = MVELProfile.worldSettings().livingHandlerRegistry();
List<LivingHandler> livingHandlers = handlerRegistry.getLivingHandlers(groupRegistry.EntityClasstoJASName
.get(entity.getClass()));
for (LivingHandler livingHandler : livingHandlers) {
if (livingHandler != null
&& (entityTarget.equals("*") || livingHandler.creatureTypeID.equals(entityTarget))
|| entityTarget.equals(EntityList.classToStringMapping.get(entity.getClass()))) {
foundMatch = true;
;
boolean canDespawn = livingHandler.canDespawn((EntityLiving) entity, info);
countedContents.append(canDespawn ? "\u00A7a" : "\u00A7c")
.append(EntityList.classToStringMapping.get(entity.getClass())).append("\u00A7r[");
countedContents.append("\u00A79").append((int) entity.posX).append("\u00A7r").append(",");
countedContents.append("\u00A79").append((int) entity.posY).append("\u00A7r").append(",");
countedContents.append("\u00A79").append((int) entity.posZ).append("\u00A7r");
if (iterator.hasNext()) {
countedContents.append("] ");
}
break;
}
}
}
if (!foundMatch) {
throw new WrongUsageException("commands.jaslocate.typenotfound", new Object[0]);
} else {
commandSender.addChatMessage(new ChatComponentText(countedContents.toString()));
}
}
/**
* Adds the strings available in this command to the given list of tab completion options.
*/
@Override
public List<String> getTabCompletions(ICommandSender commandSender, String[] stringArgs) {
stringArgs = correctedParseArgs(stringArgs, false);
List<String> tabCompletions = new ArrayList<String>();
if (stringArgs.length == 1) {
addEntityTypes(tabCompletions);
addPlayerUsernames(tabCompletions);
addEntityNames(tabCompletions);
} else if (stringArgs.length == 2) {
addEntityTypes(tabCompletions);
addEntityNames(tabCompletions);
}
if (!tabCompletions.isEmpty()) {
return getStringsMatchingLastWord(stringArgs, tabCompletions);
} else {
return tabCompletions;
}
}
}