package net.minecraft.command.completion;
import java.util.Collection;
import java.util.HashSet;
import java.util.Set;
import net.minecraft.command.parser.CompletionParser.CompletionData;
import net.minecraft.command.parser.Parser;
import net.minecraft.command.type.CListProvider;
import net.minecraft.command.type.IComplete;
public class ProviderCompleter implements IComplete
{
private final CListProvider provider;
public ProviderCompleter(final CListProvider provider)
{
this.provider = provider;
}
public ProviderCompleter(final Set<ITabCompletion> completions)
{
this(new StaticCProvider(completions));
}
public ProviderCompleter(final ITabCompletion... completions)
{
this(new StaticCProvider(completions));
}
public ProviderCompleter(final String... names)
{
final Set<ITabCompletion> completions = new HashSet<>(names.length);
for (final String name : names)
completions.add(new TabCompletion(name));
this.provider = new StaticCProvider(completions);
}
public static ProviderCompleter create(final Collection<String> names)
{
final Set<ITabCompletion> completions = new HashSet<>(names.size());
for (final String name : names)
completions.add(new TabCompletion(name));
return new ProviderCompleter(completions);
}
public static ProviderCompleter createEscaped(final String... names)
{
final Set<ITabCompletion> completions = new HashSet<>(names.length);
for (final String name : names)
completions.add(new TabCompletion.Escaped(name));
return new ProviderCompleter(completions);
}
@Override
public void complete(final TCDSet tcDataSet, final Parser parser, final int startIndex, final CompletionData cData)
{
final Set<ITabCompletion> possibilites = this.provider.getList(parser);
for (final ITabCompletion tc : possibilites)
TabCompletionData.addToSet(tcDataSet, startIndex, cData, tc);
}
}