package advancedsystemsmanager.commands;
import advancedsystemsmanager.helpers.LocalizationHelper;
import net.minecraft.command.CommandNotFoundException;
import net.minecraft.command.ICommandSender;
import net.minecraft.command.WrongUsageException;
import net.minecraft.util.ChatComponentText;
import java.util.ArrayList;
import java.util.List;
public class CommandHelp implements ISubCommand
{
public static final String PREFIX = "\u00A7";//ยง
public static final String YELLOW = PREFIX + "e";
public static final String WHITE = PREFIX + "f";
public static CommandHelp instance = new CommandHelp();
@Override
public int getPermissionLevel()
{
return -1;
}
/* ISubCommand */
@Override
public String getCommandName()
{
return "help";
}
@Override
public void handleCommand(ICommandSender sender, String[] arguments)
{
switch (arguments.length)
{
case 1:
StringBuilder output = new StringBuilder(LocalizationHelper.translate("asm.command.info.help.start") + " ");
List<String> commands = new ArrayList<String>();
for (ISubCommand command : ParentCommand.commands.values())
{
if (command.isVisible(sender)) commands.add(command.getCommandName());
}
for (int i = 0; i < commands.size() - 1; i++)
{
output.append("/asm " + YELLOW).append(commands.get(i)).append(WHITE).append(", ");
}
output.delete(output.length() - 2, output.length());
output.append(" and /asm " + YELLOW).append(commands.get(commands.size() - 1)).append(WHITE).append(".");
sender.addChatMessage(new ChatComponentText(output.toString()));
break;
case 2:
String commandName = arguments[1];
if (!ParentCommand.commandExists(commandName))
{
throw new CommandNotFoundException("asm.command.notFound");
}
sender.addChatMessage(new ChatComponentText(LocalizationHelper.translate("asm.command.info." + commandName)));
sender.addChatMessage(new ChatComponentText(LocalizationHelper.translate("asm.command." + commandName + ".syntax")));
break;
default:
throw new WrongUsageException("asm.command." + getCommandName() + ".syntax");
}
}
@Override
@SuppressWarnings(value = "unchecked")
public List<String> addTabCompletionOptions(ICommandSender sender, String[] args)
{
if (args.length == 2)
{
return ParentCommand.instance.addTabCompletionOptions(sender, new String[]{args[1]});
}
return null;
}
@Override
public boolean isVisible(ICommandSender sender)
{
return true;
}
}