Added tab completing to party command
This commit is contained in:
parent
67eccd389d
commit
7a4bc0eeb4
|
|
@ -14,12 +14,19 @@ import org.bukkit.OfflinePlayer;
|
||||||
import org.bukkit.command.Command;
|
import org.bukkit.command.Command;
|
||||||
import org.bukkit.command.CommandExecutor;
|
import org.bukkit.command.CommandExecutor;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.command.TabCompleter;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.scheduler.BukkitRunnable;
|
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.Objects;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
public class PartyCommand implements CommandExecutor {
|
public class PartyCommand implements CommandExecutor, TabCompleter {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
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()));
|
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 {
|
private enum CommandUsage {
|
||||||
CREATE("<gold>/party create <#FFE800><hover:show_text:'<gold>A party name must be 3-16 characters</gold>'><name></hover> " +
|
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>" +
|
"<hover:show_text:'<gold>A party password must be 3-16 characters\n</gold>" +
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user