SteamWar/SpigotCore
Archiviert
13
0

Add Basic TabCompleting

Dieser Commit ist enthalten in:
jojo 2020-12-28 11:25:41 +01:00
Ursprung 54a472e33e
Commit b6e4147af4
2 geänderte Dateien mit 31 neuen und 0 gelöschten Zeilen

Datei anzeigen

@ -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);
}
}
}

Datei anzeigen

@ -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]);
}
}