package net.minecraft.command.type.custom; import java.util.Set; import net.minecraft.command.SyntaxErrorException; import net.minecraft.command.completion.ITabCompletion; import net.minecraft.command.completion.ProviderCompleter; import net.minecraft.command.completion.TCDSet; import net.minecraft.command.parser.CompletionParser.CompletionData; import net.minecraft.command.parser.Context; import net.minecraft.command.parser.Parser; import net.minecraft.command.type.CListProvider; import net.minecraft.command.type.base.CustomCompletable; import net.minecraft.command.type.management.CConvertable; public class TypeLabel<T> extends CustomCompletable<T> { private final ProviderCompleter completer; private final CConvertable<?, T> target; public TypeLabel(final CConvertable<?, T> target) { this.target = target; this.completer = new ProviderCompleter(new CListProvider() { @Override public Set<ITabCompletion> getList(final Parser parser) { return parser.getLabelCompletions(target); } }); } @Override public T iParse(final Parser parser, final Context context) throws SyntaxErrorException { return TypeUntypedLabel.parseLabel(parser).convertTo(parser, this.target); } @Override public void complete(final TCDSet tcDataSet, final Parser parser, final int startIndex, final CompletionData cData) { this.completer.complete(tcDataSet, parser, startIndex, cData); } }