Adds a tab completer for the list command

This commit is contained in:
Kristian Knarvik 2022-02-25 22:16:11 +01:00
parent 8a030276c5
commit db869c0c5b
4 changed files with 53 additions and 3 deletions

View File

@ -5,6 +5,7 @@ import net.knarcraft.paidsigns.command.AddConditionCommand;
import net.knarcraft.paidsigns.command.AddConditionTabCompleter;
import net.knarcraft.paidsigns.command.AddTabCompleter;
import net.knarcraft.paidsigns.command.ListCommand;
import net.knarcraft.paidsigns.command.ListTabCompleter;
import net.knarcraft.paidsigns.command.ReloadTabCommand;
import net.knarcraft.paidsigns.command.RemoveConditionCommand;
import net.knarcraft.paidsigns.command.RemoveConditionTabCompleter;
@ -113,7 +114,7 @@ public final class PaidSigns extends JavaPlugin {
PluginCommand listCommand = this.getCommand("listPaidSigns");
if (listCommand != null) {
listCommand.setExecutor(new ListCommand());
//TODO: Add tab completer
listCommand.setTabCompleter(new ListTabCompleter());
}
PluginCommand addConditionCommand = this.getCommand("addPaidSignCondition");

View File

@ -25,7 +25,6 @@ public class AddCommand extends TokenizedCommand {
if (args.length < 3) {
return false;
}
PaidSignManager manager = PaidSigns.getInstance().getSignManager();
String signName = arguments.get(0);
double cost;
@ -45,6 +44,23 @@ public class AddCommand extends TokenizedCommand {
ignoreColor = OptionState.fromString(arguments.get(4));
}
return createPaidSign(sender, signName, cost, permission, ignoreCase, ignoreColor);
}
/**
* Creates a new paid sign with the given user input
*
* @param sender <p>The command sender that called the add command</p>
* @param signName <p>The name of the new paid sign</p>
* @param cost <p>The cost of the new paid sign</p>
* @param permission <p>The permission required for creating the sign represented by the paid sign</p>
* @param ignoreCase <p>Whether to ignore case for the paid sign's conditions</p>
* @param ignoreColor <p>Whether to ignore color for the paid sign's conditions</p>
* @return <p>True if the paid sign was successfully created and registered</p>
*/
private boolean createPaidSign(CommandSender sender, String signName, double cost, String permission,
OptionState ignoreCase, OptionState ignoreColor) {
PaidSignManager manager = PaidSigns.getInstance().getSignManager();
try {
PaidSign sign = new PaidSign(signName, cost, permission, ignoreCase, ignoreColor);
if (manager.getPaidSign(signName) != null) {

View File

@ -0,0 +1,29 @@
package net.knarcraft.paidsigns.command;
import net.knarcraft.paidsigns.utility.TabCompleteHelper;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.ArrayList;
import java.util.List;
/**
* The tab completer for the list paid signs command
*/
public class ListTabCompleter extends TokenizedTabCompleter {
@Nullable
@Override
public List<String> onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String alias,
@NotNull String[] args) {
if (argumentSize < 1) {
return TabCompleteHelper.getPaidSignNames();
} else if (argumentSize < 2) {
return TabCompleteHelper.getSignLines();
}
return new ArrayList<>();
}
}

View File

@ -8,7 +8,11 @@ import java.util.List;
/**
* A helper class for providing common tab complete options
*/
public class TabCompleteHelper {
public final class TabCompleteHelper {
private TabCompleteHelper() {
}
/**
* Gets the available boolean values for tab completion