All checks were successful
EpicKnarvik97/Stargate/pipeline/head This commit looks good
62 lines
2.2 KiB
Java
62 lines
2.2 KiB
Java
package net.knarcraft.stargate.command;
|
|
|
|
import net.knarcraft.stargate.config.Permission;
|
|
import net.knarcraft.stargate.utility.PermissionHelper;
|
|
import org.bukkit.command.Command;
|
|
import org.bukkit.command.CommandSender;
|
|
import org.bukkit.command.TabCompleter;
|
|
import org.bukkit.entity.Player;
|
|
import org.jetbrains.annotations.NotNull;
|
|
import org.jetbrains.annotations.Nullable;
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.Arrays;
|
|
import java.util.List;
|
|
|
|
/**
|
|
* This is the tab completer for the /stargate (/sg) command
|
|
*/
|
|
public class StarGateTabCompleter implements TabCompleter {
|
|
|
|
@Override
|
|
@Nullable
|
|
public List<String> onTabComplete(@NotNull CommandSender commandSender, @NotNull Command command, @NotNull String s,
|
|
@NotNull String[] args) {
|
|
if (args.length == 1) {
|
|
List<String> commands = getAvailableCommands(commandSender);
|
|
List<String> matchingCommands = new ArrayList<>();
|
|
for (String availableCommand : commands) {
|
|
if (availableCommand.startsWith(args[0])) {
|
|
matchingCommands.add(availableCommand);
|
|
}
|
|
}
|
|
return matchingCommands;
|
|
} else if (args.length > 1 && args[0].equalsIgnoreCase("config")) {
|
|
String[] subArgs = Arrays.copyOfRange(args, 1, args.length);
|
|
return new ConfigTabCompleter().onTabComplete(commandSender, command, s, subArgs);
|
|
} else {
|
|
return new ArrayList<>();
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Gets the available commands
|
|
*
|
|
* @param commandSender <p>The command sender to get available commands for</p>
|
|
* @return <p>The commands available to the command sender</p>
|
|
*/
|
|
@NotNull
|
|
private List<String> getAvailableCommands(@NotNull CommandSender commandSender) {
|
|
List<String> commands = new ArrayList<>();
|
|
commands.add("about");
|
|
if (!(commandSender instanceof Player player) || PermissionHelper.hasPermission(player, Permission.RELOAD)) {
|
|
commands.add("reload");
|
|
}
|
|
if (!(commandSender instanceof Player player) || PermissionHelper.hasPermission(player, Permission.CONFIG)) {
|
|
commands.add("config");
|
|
}
|
|
return commands;
|
|
}
|
|
|
|
}
|