Change UserArgument

Changed list usages to set and made the default builders use the mention parser
This commit is contained in:
broccolai 2020-10-20 08:45:04 +01:00 committed by Alexander Söderberg
parent 37d4bdfe80
commit 433cd88c90

View file

@ -33,9 +33,10 @@ import net.dv8tion.jda.api.entities.User;
import org.checkerframework.checker.nullness.qual.NonNull;
import org.jetbrains.annotations.NotNull;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Queue;
import java.util.Set;
/**
* Command Argument for {@link User}
@ -45,11 +46,11 @@ import java.util.Queue;
@SuppressWarnings("unused")
public final class UserArgument<C> extends CommandArgument<C, User> {
private final List<ParserMode> modes;
private final Set<ParserMode> modes;
private UserArgument(
final boolean required, final @NonNull String name,
final @NonNull List<ParserMode> modes
final @NonNull Set<ParserMode> modes
) {
super(required, name, new UserParser<>(modes), User.class);
this.modes = modes;
@ -74,7 +75,7 @@ public final class UserArgument<C> extends CommandArgument<C, User> {
* @return Created component
*/
public static <C> @NonNull CommandArgument<C, User> of(final @NonNull String name) {
return UserArgument.<C>newBuilder(name).asRequired().build();
return UserArgument.<C>newBuilder(name).withParserMode(ParserMode.MENTION).asRequired().build();
}
/**
@ -85,7 +86,7 @@ public final class UserArgument<C> extends CommandArgument<C, User> {
* @return Created component
*/
public static <C> @NonNull CommandArgument<C, User> optional(final @NonNull String name) {
return UserArgument.<C>newBuilder(name).asOptional().build();
return UserArgument.<C>newBuilder(name).withParserMode(ParserMode.MENTION).asOptional().build();
}
/**
@ -93,7 +94,7 @@ public final class UserArgument<C> extends CommandArgument<C, User> {
*
* @return List of Modes
*/
public @NotNull List<ParserMode> getModes() {
public @NotNull Set<ParserMode> getModes() {
return modes;
}
@ -107,7 +108,7 @@ public final class UserArgument<C> extends CommandArgument<C, User> {
public static final class Builder<C> extends CommandArgument.Builder<C, User> {
private List<ParserMode> modes = new ArrayList<>();
private Set<ParserMode> modes = new HashSet<>();
protected Builder(final @NonNull String name) {
super(User.class, name);
@ -119,11 +120,22 @@ public final class UserArgument<C> extends CommandArgument<C, User> {
* @param modes List of Modes
* @return Builder instance
*/
public @NonNull Builder<C> withParsers(final @NonNull List<ParserMode> modes) {
public @NonNull Builder<C> withParsers(final @NonNull Set<ParserMode> modes) {
this.modes = modes;
return this;
}
/**
* Add a parser mode to use
*
* @param mode Parser mode to add
* @return Builder instance
*/
public @NonNull Builder<C> withParserMode(final @NonNull ParserMode mode) {
this.modes.add(mode);
return this;
}
/**
* Builder a new example component
*
@ -139,9 +151,9 @@ public final class UserArgument<C> extends CommandArgument<C, User> {
public static final class UserParser<C> implements ArgumentParser<C, User> {
private final List<ParserMode> modes;
private final Set<ParserMode> modes;
private UserParser(final @NonNull List<ParserMode> modes) {
private UserParser(final @NonNull Set<ParserMode> modes) {
this.modes = modes;
}