Added tab completing to party command

This commit is contained in:
Teriuihi 2021-08-08 12:34:45 +02:00
parent 67eccd389d
commit 7a4bc0eeb4

View File

@ -14,12 +14,19 @@ import org.bukkit.OfflinePlayer;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.command.TabCompleter;
import org.bukkit.entity.Player;
import org.bukkit.scheduler.BukkitRunnable;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
public class PartyCommand implements CommandExecutor {
public class PartyCommand implements CommandExecutor, TabCompleter {
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
@ -189,6 +196,42 @@ public class PartyCommand implements CommandExecutor {
sender.sendMessage(MiniMessage.get().parse(stringBuilder.toString()));
}
@Override
public @Nullable List<String> onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) {
List<String> possibleValues = new ArrayList<>();
String current = args.length > 0 ? args[args.length - 1].toLowerCase() : "";
if (args.length <= 1) {
possibleValues.add("create");
possibleValues.add("invite");
possibleValues.add("join");
possibleValues.add("leave");
possibleValues.add("remove");
possibleValues.add("info");
return finalizeSuggest(possibleValues, current);
}
switch (args[0].toLowerCase()) {
case "invite","remove" -> {
Bukkit.getOnlinePlayers().stream().filter(p -> !p.getName().equals(sender.getName())).forEach(p -> possibleValues.add(p.getName()));
}
}
return finalizeSuggest(possibleValues, current.toLowerCase());
}
public List<String> finalizeSuggest(List<String> possibleValues, String remaining) {
List<String> finalValues = new ArrayList<>();
for (String str : possibleValues) {
if (str.toLowerCase().startsWith(remaining)) {
finalValues.add(str);
}
}
return finalValues;
}
private enum CommandUsage {
CREATE("<gold>/party create <#FFE800><hover:show_text:'<gold>A party name must be 3-16 characters</gold>'><name></hover> " +
"<hover:show_text:'<gold>A party password must be 3-16 characters\n</gold>" +