package net.minecraft.command.selectors.entity;
import java.util.List;
import net.minecraft.command.SyntaxErrorException;
import net.minecraft.command.arg.ArgWrapper;
import net.minecraft.command.arg.TypedWrapper.Getter;
import net.minecraft.command.collections.TypeIDs;
import net.minecraft.command.collections.Types;
import net.minecraft.command.descriptors.SelectorDescriptorDefault.DefaultParserData;
import net.minecraft.command.parser.MatcherRegistry;
import net.minecraft.command.parser.Parser;
import net.minecraft.command.type.IParse;
import net.minecraft.command.type.custom.TypeNullable;
public class FilterList
{
public static final MatcherRegistry inverterMatcher = new MatcherRegistry("\\G\\s*+!");
public static final FilterList name = new FilterList(Types.nameList);
public static final FilterList team = new FilterList(new TypeNullable<ArgWrapper<List<String>>>(Types.teamNameList));
public static final FilterList type = new FilterList(Types.entityIDWPlayerList);
public static class InvertableArg
{
public final boolean inverted;
public final Getter<List<String>> arg;
public InvertableArg(final boolean inverted, final Getter<List<String>> getter)
{
this.inverted = inverted;
this.arg = getter;
}
}
private final IParse<ArgWrapper<List<String>>> listParser;
public FilterList(final IParse<ArgWrapper<List<String>>> listParser)
{
this.listParser = listParser;
}
public InvertableArg parse(final Parser parser, final DefaultParserData data) throws SyntaxErrorException
{
return new InvertableArg(parser.findInc(inverterMatcher), this.listParser.parse(parser).addToProcess(data.toProcess).get(TypeIDs.StringList));
}
}