Makes deletebook support filenames with spaces
All checks were successful
EpicKnarvik97/Books-Without-Borders/pipeline/head This commit looks good

This commit is contained in:
2025-08-08 15:23:07 +02:00
parent b5bff2400b
commit fef38b894f

View File

@@ -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<String> 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<String> 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 <p>The sender of the command</p>
* @param args <p>The arguments given</p>
* @param arguments <p>The arguments given</p>
* @param deletePublic <p>Whether to delete a public book</p>
* @return <p>A list of available arguments</p>
*/
@NotNull
protected List<String> 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<String> doTabCompletion(@NotNull CommandSender sender, @NotNull String[] arguments, boolean deletePublic) {
List<String> filtered = TabCompletionHelper.filterMatchingContains(
BooksWithoutBorders.getAvailableBooks(sender, deletePublic),
InputCleaningHelper.mergeArguments(arguments, 0));
if (arguments.length > 1) {
List<String> cleaned = new ArrayList<>();
for (String name : filtered) {
String[] parts = name.split(" ");
cleaned.add(parts[parts.length - 1]);
}
return cleaned;
}
return new ArrayList<>();
return filtered;
}
}