WIP: CommandFramework #84
@ -23,9 +23,12 @@ package de.steamwar.command;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.function.Function;
|
||||
import java.util.function.Predicate;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class Argument<T> {
|
||||
|
||||
@ -66,4 +69,18 @@ public class Argument<T> {
|
||||
return Optional.empty();
|
||||
}
|
||||
|
||||
public Optional<List<String>> tabCompleteSupplier(String s) {
|
||||
try {
|
||||
// Check if mappable
|
||||
if (!s.isEmpty()) argumentType.mapper.apply(s);
|
||||
List<String> strings = Arrays.stream(tabCompletes).filter(t -> t.startsWith(s)).collect(Collectors.toList());
|
||||
if (strings.isEmpty()) strings.add(s);
|
||||
return Optional.of(strings);
|
||||
} catch (NumberFormatException e) {
|
||||
return Optional.empty();
|
||||
} catch (Exception e) {
|
||||
throw new SecurityException(e);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -23,6 +23,8 @@ package de.steamwar.command;
|
||||
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
public class SWCommand {
|
||||
@ -59,4 +61,16 @@ public class SWCommand {
|
||||
return Optional.of(executor.execute(player, new ArgumentMap(objects)));
|
||||
}
|
||||
|
||||
public Optional<List<String>> tabComplete(String[] args) {
|
||||
if (args.length > arguments.length) {
|
||||
return Optional.empty();
|
||||
}
|
||||
for (int i = 0; i < args.length - 1; i++) {
|
||||
Optional<?> optional = arguments[i].valueSupplier(args[i]);
|
||||
if (!optional.isPresent()) return Optional.empty();
|
||||
}
|
||||
int index = args.length - 1;
|
||||
return arguments[index].tabCompleteSupplier(args[index]);
|
||||
}
|
||||
|
||||
}
|
||||
|
In neuem Issue referenzieren
Einen Benutzer sperren