package net.minecraft.command.type.custom;
import java.util.regex.Matcher;
import net.minecraft.command.ParsingUtilities;
import net.minecraft.command.SyntaxErrorException;
import net.minecraft.command.arg.ArgWrapper;
import net.minecraft.command.arg.PermissionWrapper;
import net.minecraft.command.completion.TCDSet;
import net.minecraft.command.descriptors.SelectorDescriptor;
import net.minecraft.command.parser.CompletionParser.CompletionData;
import net.minecraft.command.parser.Context;
import net.minecraft.command.parser.Parser;
import net.minecraft.command.type.IParse;
import net.minecraft.command.type.TypeCompletable;
public class TypeUntypedSelector extends TypeCompletable<ArgWrapper<?>>
{
@Override
public ArgWrapper<?> iParse(final Parser parser, final Context context) throws SyntaxErrorException
{
return parseName(parser).parse(parser);
}
public static SelectorDescriptor<?> parseName(final Parser parser) throws SyntaxErrorException
{
final Matcher m = parser.getMatcher(ParsingUtilities.nameMatcher);
if (!parser.find(m))
throw parser.SEE("No selector name found ");
final SelectorDescriptor<?> descriptor = SelectorDescriptor.getDescriptor(m.group());
if (descriptor == null)
throw parser.SEE("Unknown selector type '" + m.group() + "' ");
parser.incIndex(m);
return descriptor;
}
@Override
public void complete(final TCDSet tcDataSet, final Parser parser, final int startIndex, final CompletionData cData)
{
PermissionWrapper.complete(tcDataSet, startIndex, cData, SelectorDescriptor.selectorCompletions);
}
public static IParse<ArgWrapper<?>> parser = new TypeUntypedSelector();
}