diff --git a/src/main/java/net/knarcraft/bookswithoutborders/command/CommandDelete.java b/src/main/java/net/knarcraft/bookswithoutborders/command/CommandDelete.java index bc891f6..b8f0065 100644 --- a/src/main/java/net/knarcraft/bookswithoutborders/command/CommandDelete.java +++ b/src/main/java/net/knarcraft/bookswithoutborders/command/CommandDelete.java @@ -5,6 +5,7 @@ import net.knarcraft.bookswithoutborders.gui.PagedBookIndex; import net.knarcraft.bookswithoutborders.state.BookDirectory; import net.knarcraft.bookswithoutborders.utility.BookFileHelper; import net.knarcraft.bookswithoutborders.utility.BookHelper; +import net.knarcraft.bookswithoutborders.utility.InputCleaningHelper; import net.knarcraft.knarlib.util.TabCompletionHelper; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; @@ -46,23 +47,22 @@ public class CommandDelete implements TabExecutor { return true; } - //TODO: Add parsing of books containing spaces + if (arguments.length < 1) { + BooksWithoutBorders.sendErrorMessage(sender, "Incorrect number of arguments for this command!"); + return false; + } //Delete the file - if (arguments.length == 1) { - List availableBooks = BooksWithoutBorders.getAvailableBooks(sender, deletePublic); - if (!availableBooks.isEmpty()) { - performBookDeletion(sender, arguments[0], deletePublic); - //Update the book list - BooksWithoutBorders.updateBooks(sender, deletePublic); - return true; - } else { - BooksWithoutBorders.sendErrorMessage(sender, "No files available to delete!"); - return false; - } + List availableBooks = BooksWithoutBorders.getAvailableBooks(sender, deletePublic); + if (availableBooks.isEmpty()) { + BooksWithoutBorders.sendErrorMessage(sender, "No files available to delete!"); + return false; } - BooksWithoutBorders.sendErrorMessage(sender, "Incorrect number of arguments for this command!"); - return false; + + performBookDeletion(sender, InputCleaningHelper.mergeArguments(arguments, 0), deletePublic); + //Update the book list + BooksWithoutBorders.updateBooks(sender, deletePublic); + return true; } /** @@ -116,18 +116,24 @@ public class CommandDelete implements TabExecutor { * Performs tab completion * * @param sender

The sender of the command

- * @param args

The arguments given

+ * @param arguments

The arguments given

* @param deletePublic

Whether to delete a public book

* @return

A list of available arguments

*/ @NotNull - protected List doTabCompletion(@NotNull CommandSender sender, @NotNull String[] args, boolean deletePublic) { - int argumentCount = args.length; - if (argumentCount == 1) { - return TabCompletionHelper.filterMatchingContains(BooksWithoutBorders.getAvailableBooks(sender, deletePublic), - args[0]); + protected List doTabCompletion(@NotNull CommandSender sender, @NotNull String[] arguments, boolean deletePublic) { + List filtered = TabCompletionHelper.filterMatchingContains( + BooksWithoutBorders.getAvailableBooks(sender, deletePublic), + InputCleaningHelper.mergeArguments(arguments, 0)); + if (arguments.length > 1) { + List cleaned = new ArrayList<>(); + for (String name : filtered) { + String[] parts = name.split(" "); + cleaned.add(parts[parts.length - 1]); + } + return cleaned; } - return new ArrayList<>(); + return filtered; } }