package net.minecraft.command.construction; import java.util.List; import net.minecraft.command.WrongUsageException; import net.minecraft.command.descriptors.CommandDescriptor; import net.minecraft.command.parser.Parser; import net.minecraft.util.ChatComponentTranslation; import net.minecraft.util.IChatComponent; public abstract class UsageProviderDefault implements CommandDescriptor.UsageProvider { protected abstract <R> R create(List<String> path, AbstractCreator<R> creator); protected abstract static class AbstractCreator<R> { public abstract R create(String usage, Object... errorObjects); } private static final AbstractCreator<WrongUsageException> ExceptionCreator(final Parser parser) { return new AbstractCreator<WrongUsageException>() { @Override public WrongUsageException create(final String usage, final Object... errorObjects) { return parser.WUE(usage, errorObjects); } }; } private static final AbstractCreator<IChatComponent> MessageCreator = new AbstractCreator<IChatComponent>() { @Override public ChatComponentTranslation create(final String usage, final Object... errorObjects) { return new ChatComponentTranslation(usage, errorObjects); }; }; @Override public WrongUsageException createException(final Parser parser, final List<String> path) { return this.create(path, ExceptionCreator(parser)); } @Override public IChatComponent createMessage(final List<String> path) { return this.create(path, MessageCreator); } }