From 3e45cad29a923138a731e6c8b41b193654846419 Mon Sep 17 00:00:00 2001 From: EpicKnarvik97 Date: Mon, 1 Sep 2025 16:06:52 +0200 Subject: [PATCH] Removes the use of string values for book directories --- .../command/CommandGive.java | 9 ++++--- .../command/CommandGivePublic.java | 3 ++- .../command/CommandLoad.java | 9 ++++--- .../command/CommandLoadPublic.java | 3 ++- .../listener/PlayerEventListener.java | 3 ++- .../listener/SignEventListener.java | 2 +- .../state/BookDirectory.java | 22 ---------------- .../utility/BookLoaderUtil.java | 25 ++----------------- 8 files changed, 19 insertions(+), 57 deletions(-) diff --git a/src/main/java/net/knarcraft/bookswithoutborders/command/CommandGive.java b/src/main/java/net/knarcraft/bookswithoutborders/command/CommandGive.java index 388f591..f1f6e56 100644 --- a/src/main/java/net/knarcraft/bookswithoutborders/command/CommandGive.java +++ b/src/main/java/net/knarcraft/bookswithoutborders/command/CommandGive.java @@ -4,6 +4,7 @@ import net.knarcraft.bookswithoutborders.BooksWithoutBorders; import net.knarcraft.bookswithoutborders.config.translation.GiveMessage; import net.knarcraft.bookswithoutborders.config.translation.Translatable; import net.knarcraft.bookswithoutborders.gui.PagedBookIndex; +import net.knarcraft.bookswithoutborders.state.BookDirectory; import net.knarcraft.bookswithoutborders.utility.BookLoaderUtil; import net.knarcraft.bookswithoutborders.utility.InputCleaningUtil; import net.knarcraft.bookswithoutborders.utility.TabCompletionTypeUtil; @@ -42,7 +43,7 @@ public class CommandGive implements TabExecutor { return false; } - return giveBook(sender, arguments, false, "player", label); + return giveBook(sender, arguments, false, BookDirectory.PLAYER, label); } /** @@ -56,7 +57,7 @@ public class CommandGive implements TabExecutor { * @return

True if the book was given successfully

*/ boolean giveBook(@NotNull CommandSender sender, @NotNull String[] arguments, boolean givePublic, - @NotNull String folder, @NotNull String commandName) { + @NotNull BookDirectory folder, @NotNull String commandName) { if (PagedBookIndex.displayPage(arguments, sender, givePublic, commandName)) { return true; } @@ -135,7 +136,7 @@ public class CommandGive implements TabExecutor { * @throws NumberFormatException

If the number of copies given is not a number

*/ private boolean parseArgumentsAndContinue(@NotNull String[] arguments, @NotNull CommandSender sender, - @NotNull String directory, boolean givePublic) { + @NotNull BookDirectory directory, boolean givePublic) { int argumentCount = arguments.length; //Organize and parse input String bookIdentifier; @@ -192,7 +193,7 @@ public class CommandGive implements TabExecutor { * @return

True if the book was successfully given

*/ private boolean loadAndGiveBook(@NotNull String bookIdentifier, @NotNull CommandSender sender, - @NotNull Player receivingPlayer, boolean isSigned, @NotNull String folder, + @NotNull Player receivingPlayer, boolean isSigned, @NotNull BookDirectory folder, @NotNull String copies) throws NumberFormatException { String bookToLoad = InputCleaningUtil.cleanString(bookIdentifier); ItemStack newBook = BookLoaderUtil.loadBook(sender, bookToLoad, isSigned, folder, Integer.parseInt(copies)); diff --git a/src/main/java/net/knarcraft/bookswithoutborders/command/CommandGivePublic.java b/src/main/java/net/knarcraft/bookswithoutborders/command/CommandGivePublic.java index 43629cd..1aa56e5 100644 --- a/src/main/java/net/knarcraft/bookswithoutborders/command/CommandGivePublic.java +++ b/src/main/java/net/knarcraft/bookswithoutborders/command/CommandGivePublic.java @@ -1,5 +1,6 @@ package net.knarcraft.bookswithoutborders.command; +import net.knarcraft.bookswithoutborders.state.BookDirectory; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.command.TabExecutor; @@ -16,7 +17,7 @@ public class CommandGivePublic extends CommandGive implements TabExecutor { @Override public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] arguments) { - return giveBook(sender, arguments, true, "public", label); + return giveBook(sender, arguments, true, BookDirectory.PUBLIC, label); } @Override diff --git a/src/main/java/net/knarcraft/bookswithoutborders/command/CommandLoad.java b/src/main/java/net/knarcraft/bookswithoutborders/command/CommandLoad.java index cf70414..340252f 100644 --- a/src/main/java/net/knarcraft/bookswithoutborders/command/CommandLoad.java +++ b/src/main/java/net/knarcraft/bookswithoutborders/command/CommandLoad.java @@ -3,6 +3,7 @@ package net.knarcraft.bookswithoutborders.command; import net.knarcraft.bookswithoutborders.BooksWithoutBorders; import net.knarcraft.bookswithoutborders.config.translation.Translatable; import net.knarcraft.bookswithoutborders.gui.PagedBookIndex; +import net.knarcraft.bookswithoutborders.state.BookDirectory; import net.knarcraft.bookswithoutborders.utility.BookLoaderUtil; import net.knarcraft.bookswithoutborders.utility.InputCleaningUtil; import net.knarcraft.bookswithoutborders.utility.TabCompletionTypeUtil; @@ -31,7 +32,7 @@ public class CommandLoad implements TabExecutor { @Override public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] arguments) { - return loadBook(sender, arguments, "player", false, label); + return loadBook(sender, arguments, BookDirectory.PLAYER, false, label); } /** @@ -44,7 +45,7 @@ public class CommandLoad implements TabExecutor { * @param commandName

The name of the command calling this method

* @return

True if the book was loaded successfully

*/ - public boolean loadBook(@NotNull CommandSender sender, @NotNull String[] arguments, @NotNull String directory, + public boolean loadBook(@NotNull CommandSender sender, @NotNull String[] arguments, @NotNull BookDirectory directory, boolean loadPublic, @NotNull String commandName) { if (!(sender instanceof Player player)) { new FormatBuilder(Translatable.ERROR_PLAYER_ONLY).error(sender); @@ -120,7 +121,7 @@ public class CommandLoad implements TabExecutor { * @throws NumberFormatException

If the number of copies given is not a number

*/ private boolean parseArgumentsAndContinue(@NotNull String[] arguments, @NotNull Player player, - @NotNull String directory, boolean loadPublic) { + @NotNull BookDirectory directory, boolean loadPublic) { int argumentCount = arguments.length; String bookIdentifier = arguments[0]; int copies = 1; @@ -158,7 +159,7 @@ public class CommandLoad implements TabExecutor { * @return

The loaded book(s)

*/ private boolean loadBook(@NotNull Player player, boolean loadPublic, @NotNull String bookIdentifier, - boolean isSigned, @NotNull String directory, int copies) { + boolean isSigned, @NotNull BookDirectory directory, int copies) { BooksWithoutBorders.updateBooks(player, loadPublic); String bookToLoad = InputCleaningUtil.cleanString(bookIdentifier); diff --git a/src/main/java/net/knarcraft/bookswithoutborders/command/CommandLoadPublic.java b/src/main/java/net/knarcraft/bookswithoutborders/command/CommandLoadPublic.java index 1d27b57..3fd329f 100644 --- a/src/main/java/net/knarcraft/bookswithoutborders/command/CommandLoadPublic.java +++ b/src/main/java/net/knarcraft/bookswithoutborders/command/CommandLoadPublic.java @@ -1,5 +1,6 @@ package net.knarcraft.bookswithoutborders.command; +import net.knarcraft.bookswithoutborders.state.BookDirectory; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; @@ -15,7 +16,7 @@ public class CommandLoadPublic extends CommandLoad implements CommandExecutor { @Override public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] arguments) { - return loadBook(sender, arguments, "public", true, label); + return loadBook(sender, arguments, BookDirectory.PUBLIC, true, label); } @Override diff --git a/src/main/java/net/knarcraft/bookswithoutborders/listener/PlayerEventListener.java b/src/main/java/net/knarcraft/bookswithoutborders/listener/PlayerEventListener.java index cbb709d..813e55e 100644 --- a/src/main/java/net/knarcraft/bookswithoutborders/listener/PlayerEventListener.java +++ b/src/main/java/net/knarcraft/bookswithoutborders/listener/PlayerEventListener.java @@ -3,6 +3,7 @@ package net.knarcraft.bookswithoutborders.listener; import net.knarcraft.bookswithoutborders.BooksWithoutBorders; import net.knarcraft.bookswithoutborders.config.BwBConfig; import net.knarcraft.bookswithoutborders.config.StaticMessage; +import net.knarcraft.bookswithoutborders.state.BookDirectory; import net.knarcraft.bookswithoutborders.utility.BookLoaderUtil; import net.knarcraft.bookswithoutborders.utility.InputCleaningUtil; import net.knarcraft.knarlib.formatting.FormatBuilder; @@ -60,7 +61,7 @@ public class PlayerEventListener implements Listener { if (!bookName.trim().isEmpty()) { //Give the book to the player if it exists - ItemStack newBook = BookLoaderUtil.loadBook(player, bookName, true, "public"); + ItemStack newBook = BookLoaderUtil.loadBook(player, bookName, true, BookDirectory.PUBLIC); if (newBook != null) { player.getInventory().addItem(newBook); } diff --git a/src/main/java/net/knarcraft/bookswithoutborders/listener/SignEventListener.java b/src/main/java/net/knarcraft/bookswithoutborders/listener/SignEventListener.java index a87e883..13d65f0 100644 --- a/src/main/java/net/knarcraft/bookswithoutborders/listener/SignEventListener.java +++ b/src/main/java/net/knarcraft/bookswithoutborders/listener/SignEventListener.java @@ -270,7 +270,7 @@ public class SignEventListener implements Listener { fileName += InputCleaningUtil.stripColor(thirdLine); } - ItemStack newBook = BookLoaderUtil.loadBook(player, fileName, true, "public"); + ItemStack newBook = BookLoaderUtil.loadBook(player, fileName, true, BookDirectory.PUBLIC); if (newBook != null) { player.getInventory().addItem(newBook); diff --git a/src/main/java/net/knarcraft/bookswithoutborders/state/BookDirectory.java b/src/main/java/net/knarcraft/bookswithoutborders/state/BookDirectory.java index 1d3d9ec..33fd18b 100644 --- a/src/main/java/net/knarcraft/bookswithoutborders/state/BookDirectory.java +++ b/src/main/java/net/knarcraft/bookswithoutborders/state/BookDirectory.java @@ -1,8 +1,5 @@ package net.knarcraft.bookswithoutborders.state; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - /** * This enum represents the different directories books can be saved in */ @@ -23,25 +20,6 @@ public enum BookDirectory { */ ENCRYPTED; - /** - * Gets the relevant book directory given a directory name - * - * @param directory

The directory to transform

- * @return

A book directory, or null if the given directory is empty

- */ - @Nullable - public static BookDirectory getFromString(@NotNull String directory) { - if (directory.equalsIgnoreCase("public")) { - return BookDirectory.PUBLIC; - } else if (directory.equalsIgnoreCase("player")) { - return BookDirectory.PLAYER; - } else if (!directory.trim().isEmpty()) { - return BookDirectory.ENCRYPTED; - } else { - return null; - } - } - /** * Gets the common public/player directory based on the input * diff --git a/src/main/java/net/knarcraft/bookswithoutborders/utility/BookLoaderUtil.java b/src/main/java/net/knarcraft/bookswithoutborders/utility/BookLoaderUtil.java index 9ca51e9..c84340d 100644 --- a/src/main/java/net/knarcraft/bookswithoutborders/utility/BookLoaderUtil.java +++ b/src/main/java/net/knarcraft/bookswithoutborders/utility/BookLoaderUtil.java @@ -19,7 +19,7 @@ import java.util.ArrayList; import java.util.List; /** - * A utility class for loading books, and taking required cost + * A utility class for loading books, and taking the required cost from players */ public final class BookLoaderUtil { @@ -37,31 +37,10 @@ public final class BookLoaderUtil { */ @Nullable public static ItemStack loadBook(@NotNull CommandSender sender, @NotNull String fileName, boolean isSigned, - @NotNull String directory) { + @NotNull BookDirectory directory) { return loadBook(sender, fileName, isSigned, directory, 1); } - /** - * Loads the given book - * - * @param sender

The command sender trying to load the book

- * @param fileName

The index or file name of the book to load

- * @param isSigned

Whether to load the book as signed, and not unsigned

- * @param directory

The directory to save the book in

- * @param numCopies

The number of copies to load

- * @return

The loaded book

- */ - @Nullable - public static ItemStack loadBook(@NotNull CommandSender sender, @NotNull String fileName, boolean isSigned, - @NotNull String directory, int numCopies) { - BookDirectory bookDirectory = BookDirectory.getFromString(directory); - if (bookDirectory == null) { - new FormatBuilder(Translatable.ERROR_BOOK_DIRECTORY_UNKNOWN).error(sender); - return null; - } - return loadBook(sender, fileName, isSigned, bookDirectory, numCopies); - } - /** * Loads the given book *