package de.maxgb.minecraft.second_screen.commands.mss_sub;
import de.maxgb.minecraft.second_screen.commands.BaseCommand;
import net.minecraft.command.CommandException;
import net.minecraft.command.ICommand;
import net.minecraft.command.ICommandSender;
import net.minecraft.util.BlockPos;
import java.util.ArrayList;
import java.util.List;
/**
* Manages all commands which start with mss
* @author Max
*
*/
@SuppressWarnings({ "rawtypes", "unchecked" })
public class MssCommand extends BaseCommand {
private List aliases;
private ArrayList<MssSubCommand> commands;
public MssCommand() {
this.aliases = new ArrayList();
this.aliases.add("mss");
this.aliases.add("minecraftsecondscreen");
this.aliases.add("secondscreen");
commands = new ArrayList<MssSubCommand>();
}
@Override
public int compareTo(ICommand o) {
return 0;
}
public void addSubCommand(MssSubCommand c) {
commands.add(c);
}
@Override
public String getCommandName() {
return "mss";
}
@Override
public String getCommandUsage(ICommandSender var1) {
return "/mss <action> <params>";
}
@Override
public List<String> getCommandAliases() {
return aliases;
}
@Override
public void processCommand(ICommandSender sender, String[] args) throws CommandException {
if (args == null || args.length == 0) {
BaseCommand.sendMessage(sender, "Usage: " + getCommandUsage(sender));
return;
}
//Tests for the corrosponding subcommand and calls it with the reduced amount of params
for (MssSubCommand c : commands) {
if (args[0].equals(c.getCommandName())) {
String[] var;
if (args.length == 1) {
var = null;
} else {
var = new String[args.length - 1];
for (int i = 1; i < args.length; i++) {
var[i - 1] = args[i];
}
}
c.processCommand(sender, var);
return;
}
}
if (!args[0].equals("help")) {
BaseCommand.sendMessage(sender, "Action not found.");
}
sendActions(sender);
}
@Override
public boolean canCommandSenderUseCommand(ICommandSender sender) {
return true;
}
@Override
public boolean isUsernameIndex(String[] var1, int var2) {
return false;
}
/**
* Prints the available actions/subcommands to the command sender
* @param var1
*/
private void sendActions(ICommandSender var1) {
sendMessage(var1, getCommandUsage(var1));
sendMessage(var1, "Actions:");
for (MssSubCommand c : commands) {
c.sendCommandUsage(var1);
}
}
@Override
public List addTabCompletionOptions(ICommandSender sender, String[] args,
BlockPos pos) {
return null;
}
protected interface MssSubCommand {
boolean canCommandSenderUseCommand(ICommandSender var1);
String getCommandName();
void processCommand(ICommandSender var1, String[] var2);
void sendCommandUsage(ICommandSender var1);
}
}