SteamWar/SpigotCore
Archiviert
13
0

Add easier Enum Support in ArgumentUtils

Dieser Commit ist enthalten in:
jojo 2020-12-30 22:06:33 +01:00
Ursprung 0b389f2f99
Commit 03bdb926ca
2 geänderte Dateien mit 12 neuen und 2 gelöschten Zeilen

Datei anzeigen

@ -47,8 +47,6 @@ public class Argument<T> {
public static final Argument<Boolean> BOOLEAN = new Argument<>(Boolean::parseBoolean, bool -> true, "true", "false");
public static final Argument<Integer> INT = new Argument<>(Integer::parseInt, integer -> true);
public static final Argument<Long> LONG = new Argument<>(Long::parseLong, l -> true);
public static final Argument<Float> FLOAT = new Argument<>(Float::parseFloat, f -> true);
public static final Argument<Double> DOUBLE = new Argument<>(Double::parseDouble, d -> true);
public static final Argument<String> STRING = new Argument<>(s -> s, string -> true);

Datei anzeigen

@ -21,6 +21,7 @@
package de.steamwar.command;
import java.util.Arrays;
import java.util.Objects;
import java.util.function.BiPredicate;
import java.util.function.Predicate;
import java.util.stream.Stream;
@ -51,6 +52,17 @@ public class ArgumentUtils {
return new Argument<>(s -> s, string -> contains(commands, string, String::equals), s -> supply(s, tabCompletes, commands));
}
public static <T extends Enum<?>> Argument<T> enumValue(Class<T> enumClass) {
T[] enumValues = enumClass.getEnumConstants();
String[] strings = Arrays.stream(enumValues).map(Enum::name).toArray(String[]::new);
return new Argument<>((s, sender) -> {
for (T enumValue : enumValues) {
if (enumValue.name().startsWith(s)) return enumValue;
}
return null;
}, Objects::nonNull, s -> strings);
}
public static Argument<String> ofIgnoreCase(String... arguments) {
return new Argument<>(s -> s, string -> contains(arguments, string, String::equals), arguments);
}