package net.minecraft.command.descriptors; import java.util.List; import java.util.Set; import net.minecraft.command.IPermission; import net.minecraft.command.SyntaxErrorException; import net.minecraft.command.WrongUsageException; import net.minecraft.command.arg.CommandArg; import net.minecraft.command.completion.ITabCompletion; import net.minecraft.command.parser.Parser; import net.minecraft.util.IChatComponent; public abstract class ICommandDescriptor<D> { public static interface UsageProvider { public WrongUsageException createException(Parser parser, List<String> path); public IChatComponent createMessage(List<String> path); } public final UsageProvider usage; public final IPermission permission; public ICommandDescriptor(final UsageProvider usage, final IPermission permission) { this.usage = usage; this.permission = permission; } public abstract void addSubDescriptor(final String key, final ICommandDescriptor<? super D> descriptor); public abstract CommandArg<Integer> construct(final D data) throws SyntaxErrorException; public abstract void parse(final Parser parser, final D parserData, final UsageProvider usage) throws SyntaxErrorException; public abstract ICommandDescriptor<? super D> getSubDescriptor(final String keyword); public abstract ICommandDescriptor<? super D> getSubDescriptor(final Parser parser, final D data) throws SyntaxErrorException; public abstract Set<ITabCompletion> getKeywordCompletions(); }