From 57855b22f166470f96145a87683b7bd68fd0a73e Mon Sep 17 00:00:00 2001 From: EpicKnarvik97 Date: Tue, 9 Dec 2025 02:52:23 +0100 Subject: [PATCH] Replaces some local class usage with KnarLib methods --- pom.xml | 2 +- .../command/CommandCreateBwBSign.java | 8 +- .../command/CommandDelete.java | 8 +- .../command/CommandEditConfig.java | 36 +++---- .../command/CommandGive.java | 18 ++-- .../command/CommandLoad.java | 16 ++-- .../command/CommandSetTitle.java | 3 +- .../listener/BookshelfListener.java | 6 +- .../utility/InputParsingUtil.java | 41 -------- .../utility/IntegerToRomanUtil.java | 94 ------------------- .../utility/TabCompletionTypeUtil.java | 47 +--------- .../util/IntegerToRomanUtilTest.java | 40 -------- 12 files changed, 53 insertions(+), 266 deletions(-) delete mode 100644 src/main/java/net/knarcraft/bookswithoutborders/utility/IntegerToRomanUtil.java delete mode 100644 src/test/java/net/knarcraft/bookswithoutborders/util/IntegerToRomanUtilTest.java diff --git a/pom.xml b/pom.xml index 8c4f2bd..b3bf766 100644 --- a/pom.xml +++ b/pom.xml @@ -125,7 +125,7 @@ net.knarcraft knarlib - 1.2.18 + 1.2.19 compile diff --git a/src/main/java/net/knarcraft/bookswithoutborders/command/CommandCreateBwBSign.java b/src/main/java/net/knarcraft/bookswithoutborders/command/CommandCreateBwBSign.java index 794354e..0f61738 100644 --- a/src/main/java/net/knarcraft/bookswithoutborders/command/CommandCreateBwBSign.java +++ b/src/main/java/net/knarcraft/bookswithoutborders/command/CommandCreateBwBSign.java @@ -8,8 +8,6 @@ import net.knarcraft.bookswithoutborders.gui.PagedBookIndex; import net.knarcraft.bookswithoutborders.state.BookDirectory; import net.knarcraft.bookswithoutborders.utility.BookFileUtil; import net.knarcraft.bookswithoutborders.utility.InputCleaningUtil; -import net.knarcraft.bookswithoutborders.utility.InputParsingUtil; -import net.knarcraft.bookswithoutborders.utility.TabCompletionTypeUtil; import net.knarcraft.knarlib.formatting.FormatBuilder; import net.knarcraft.knarlib.util.SignHelper; import net.knarcraft.knarlib.util.TabCompletionHelper; @@ -88,9 +86,9 @@ public class CommandCreateBwBSign implements TabExecutor { return TabCompletionHelper.filterMatchingContains(BooksWithoutBorders.getAvailableBooks(sender, true), arguments[1]); } else { List books = BooksWithoutBorders.getAvailableBooks(sender, true); - String merged = InputParsingUtil.mergeArguments(1, arguments); + String merged = TabCompletionHelper.mergeArguments(1, arguments); List filtered = TabCompletionHelper.filterMatchingContains(books, merged); - return TabCompletionTypeUtil.getCleanedTabCompletions(arguments, filtered, 1, ""); + return TabCompletionHelper.getCleanedTabCompletions(arguments, filtered, 1, ""); } } @@ -172,7 +170,7 @@ public class CommandCreateBwBSign implements TabExecutor { */ private boolean createGiveSign(@NotNull String[] arguments, @NotNull SignSide side, @NotNull Player player) { File bookFile = BookFileUtil.getFile(BookDirectory.PUBLIC, null, - InputParsingUtil.mergeArguments(1, arguments)); + TabCompletionHelper.mergeArguments(1, arguments)); if (bookFile == null) { new FormatBuilder(Translatable.ERROR_LOAD_FAILED).error(player); return false; diff --git a/src/main/java/net/knarcraft/bookswithoutborders/command/CommandDelete.java b/src/main/java/net/knarcraft/bookswithoutborders/command/CommandDelete.java index 22debe0..22afae4 100644 --- a/src/main/java/net/knarcraft/bookswithoutborders/command/CommandDelete.java +++ b/src/main/java/net/knarcraft/bookswithoutborders/command/CommandDelete.java @@ -6,8 +6,6 @@ import net.knarcraft.bookswithoutborders.config.translation.Translatable; import net.knarcraft.bookswithoutborders.gui.PagedBookIndex; import net.knarcraft.bookswithoutborders.state.BookDirectory; import net.knarcraft.bookswithoutborders.utility.BookFileUtil; -import net.knarcraft.bookswithoutborders.utility.InputParsingUtil; -import net.knarcraft.bookswithoutborders.utility.TabCompletionTypeUtil; import net.knarcraft.knarlib.formatting.FormatBuilder; import net.knarcraft.knarlib.util.TabCompletionHelper; import org.bukkit.command.Command; @@ -57,7 +55,7 @@ public class CommandDelete implements TabExecutor { return; } - performBookDeletion(sender, InputParsingUtil.mergeArguments(arguments, 0), deletePublic); + performBookDeletion(sender, TabCompletionHelper.mergeArguments(arguments, 0), deletePublic); //Update the book list BooksWithoutBorders.updateBooks(sender, deletePublic); } @@ -119,9 +117,9 @@ public class CommandDelete implements TabExecutor { protected List doTabCompletion(@NotNull CommandSender sender, @NotNull String[] arguments, boolean deletePublic) { List filtered = TabCompletionHelper.filterMatchingContains( BooksWithoutBorders.getAvailableBooks(sender, deletePublic), - InputParsingUtil.mergeArguments(arguments, 0)); + TabCompletionHelper.mergeArguments(arguments, 0)); if (arguments.length > 1) { - return TabCompletionTypeUtil.getCleanedTabCompletions(arguments, filtered, 0, ""); + return TabCompletionHelper.getCleanedTabCompletions(arguments, filtered, 0, ""); } else { return filtered; } diff --git a/src/main/java/net/knarcraft/bookswithoutborders/command/CommandEditConfig.java b/src/main/java/net/knarcraft/bookswithoutborders/command/CommandEditConfig.java index 2864f06..52ad6a3 100644 --- a/src/main/java/net/knarcraft/bookswithoutborders/command/CommandEditConfig.java +++ b/src/main/java/net/knarcraft/bookswithoutborders/command/CommandEditConfig.java @@ -10,11 +10,8 @@ import net.knarcraft.bookswithoutborders.manager.EconomyManager; import net.knarcraft.bookswithoutborders.state.BookDirectory; import net.knarcraft.bookswithoutborders.state.ItemSlot; import net.knarcraft.bookswithoutborders.utility.BookFileUtil; -import net.knarcraft.bookswithoutborders.utility.InputParsingUtil; import net.knarcraft.bookswithoutborders.utility.InventoryUtil; -import net.knarcraft.bookswithoutborders.utility.TabCompletionTypeUtil; import net.knarcraft.knarlib.formatting.FormatBuilder; -import net.knarcraft.knarlib.util.TabCompletionHelper; import org.bukkit.Material; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; @@ -32,6 +29,11 @@ import java.util.List; import java.util.logging.Level; import java.util.regex.Pattern; +import static net.knarcraft.knarlib.util.TabCompletionHelper.filterMatchingContains; +import static net.knarcraft.knarlib.util.TabCompletionHelper.filterMatchingStartsWith; +import static net.knarcraft.knarlib.util.TabCompletionHelper.getCleanedTabCompletions; +import static net.knarcraft.knarlib.util.TabCompletionHelper.mergeArguments; + /** * The command for altering configuration values */ @@ -64,9 +66,9 @@ public class CommandEditConfig implements TabExecutor { } case TITLE_AUTHOR_SEPARATOR, LORE_LINE_SEPARATOR -> setSeparator(option, arguments[1], sender); case LANGUAGE -> setString(option, arguments[1]); - case MESSAGE_FOR_NEW_PLAYERS -> setString(option, InputParsingUtil.mergeArguments(0, arguments)); + case MESSAGE_FOR_NEW_PLAYERS -> setString(option, mergeArguments(0, arguments)); case MAX_DUPLICATES -> setMaxDuplicates(arguments[1], sender); - case BOOKS_FOR_NEW_PLAYERS -> setBooks(InputParsingUtil.mergeArguments(1, arguments), sender); + case BOOKS_FOR_NEW_PLAYERS -> setBooks(mergeArguments(1, arguments), sender); case PRICE_ITEM_TYPE, PRICE_QUANTITY -> setCost(arguments, sender); }; @@ -86,7 +88,7 @@ public class CommandEditConfig implements TabExecutor { for (ConfigOption option : ConfigOption.values()) { configOptions.add(option.getOptionName()); } - return TabCompletionHelper.filterMatchingContains(configOptions, arguments[0]); + return filterMatchingContains(configOptions, arguments[0]); } ConfigOption option = ConfigOption.getByString(arguments[0]); @@ -103,24 +105,24 @@ public class CommandEditConfig implements TabExecutor { case FORMAT_AFTER_SIGNING, ENABLE_BOOKSHELF_PEEKING, AUTHOR_ONLY_COPY, AUTHOR_ONLY_SAVE, AUTHOR_ONLY_UNSIGN, ADMIN_AUTO_DECRYPT, USE_REAL_ENCRYPTION, ALLOW_PREVENT_ADMIN_DECRYPTION, CHANGE_GENERATION_ON_COPY: - return TabCompletionHelper.filterMatchingContains(List.of("true", "false"), arguments[1]); + return filterMatchingContains(List.of("true", "false"), arguments[1]); case PRICE_QUANTITY, PRICE_ITEM_TYPE: - return TabCompletionHelper.filterMatchingContains(List.of( + return filterMatchingContains(List.of( StaticMessage.COST_ECONOMY.toString().toLowerCase(), StaticMessage.COST_ITEM.toString(), CLEAR), arguments[1]); case LORE_LINE_SEPARATOR, LANGUAGE: - return TabCompletionHelper.filterMatchingStartsWith(List.of(String.valueOf(option.getDefaultValue())), arguments[1]); + return filterMatchingStartsWith(List.of(String.valueOf(option.getDefaultValue())), arguments[1]); case MAX_DUPLICATES: - return TabCompletionHelper.filterMatchingStartsWith(List.of("1", "2", "3", "4", "5"), arguments[1]); + return filterMatchingStartsWith(List.of("1", "2", "3", "4", "5"), arguments[1]); case MESSAGE_FOR_NEW_PLAYERS: return List.of("Text text text", CLEAR); case TITLE_AUTHOR_SEPARATOR: - return TabCompletionHelper.filterMatchingStartsWith(List.of(",", "¤"), arguments[1]); + return filterMatchingStartsWith(List.of(",", "¤"), arguments[1]); } } if (arguments.length == 3 && (option == ConfigOption.PRICE_QUANTITY || option == ConfigOption.PRICE_ITEM_TYPE)) { - return TabCompletionHelper.filterMatchingStartsWith(List.of("0", "1", "5", "10"), arguments[2]); + return filterMatchingStartsWith(List.of("0", "1", "5", "10"), arguments[2]); } return List.of(); @@ -136,7 +138,7 @@ public class CommandEditConfig implements TabExecutor { @NotNull private List getBookTabCompletions(@NotNull String[] arguments, @NotNull CommandSender commandSender) { List availableBooks = BooksWithoutBorders.getAvailableBooks(commandSender, true); - String booksString = InputParsingUtil.mergeArguments(1, arguments); + String booksString = mergeArguments(1, arguments); String prefix = ""; if (booksString.contains(BOOK_SEPARATOR)) { String[] parts = booksString.split(Pattern.quote(BOOK_SEPARATOR), -1); @@ -147,14 +149,14 @@ public class CommandEditConfig implements TabExecutor { } booksString = parts[parts.length - 1]; - List filtered = TabCompletionHelper.filterMatchingContains(availableBooks, booksString); - return TabCompletionTypeUtil.getCleanedTabCompletions(newArguments, filtered, 0, prefix); + List filtered = filterMatchingContains(availableBooks, booksString); + return getCleanedTabCompletions(newArguments, filtered, 0, prefix); } else { if (arguments.length == 2) { availableBooks.add(CLEAR); } - List filtered = TabCompletionHelper.filterMatchingContains(availableBooks, booksString); - return TabCompletionTypeUtil.getCleanedTabCompletions(arguments, filtered, 1, prefix); + List filtered = filterMatchingContains(availableBooks, booksString); + return getCleanedTabCompletions(arguments, filtered, 1, prefix); } } diff --git a/src/main/java/net/knarcraft/bookswithoutborders/command/CommandGive.java b/src/main/java/net/knarcraft/bookswithoutborders/command/CommandGive.java index b42221a..3958bd5 100644 --- a/src/main/java/net/knarcraft/bookswithoutborders/command/CommandGive.java +++ b/src/main/java/net/knarcraft/bookswithoutborders/command/CommandGive.java @@ -9,7 +9,6 @@ import net.knarcraft.bookswithoutborders.utility.BookLoaderUtil; import net.knarcraft.bookswithoutborders.utility.InputCleaningUtil; import net.knarcraft.bookswithoutborders.utility.TabCompletionTypeUtil; import net.knarcraft.knarlib.formatting.FormatBuilder; -import net.knarcraft.knarlib.util.TabCompletionHelper; import org.bukkit.Bukkit; import org.bukkit.Server; import org.bukkit.command.Command; @@ -26,7 +25,10 @@ import java.util.List; import static java.lang.Boolean.parseBoolean; import static net.knarcraft.bookswithoutborders.utility.InputParsingUtil.isBoolean; import static net.knarcraft.bookswithoutborders.utility.InputParsingUtil.isInt; -import static net.knarcraft.bookswithoutborders.utility.InputParsingUtil.mergeArguments; +import static net.knarcraft.knarlib.util.TabCompletionHelper.filterMatchingContains; +import static net.knarcraft.knarlib.util.TabCompletionHelper.filterMatchingStartsWith; +import static net.knarcraft.knarlib.util.TabCompletionHelper.getCleanedTabCompletions; +import static net.knarcraft.knarlib.util.TabCompletionHelper.mergeArguments; /** * Command executor for the give command @@ -89,15 +91,15 @@ public class CommandGive implements TabExecutor { Server server = booksWithoutBorders.getServer(); int argumentCount = arguments.length; if (argumentCount == 1) { - return TabCompletionHelper.filterMatchingContains(BooksWithoutBorders.getAvailableBooks(sender, listPublic), arguments[0]); + return filterMatchingContains(BooksWithoutBorders.getAvailableBooks(sender, listPublic), arguments[0]); } List output = new ArrayList<>(); List books = BooksWithoutBorders.getAvailableBooks(sender, listPublic); - List filtered = TabCompletionHelper.filterMatchingContains(books, mergeArguments(arguments, 0)); + List filtered = filterMatchingContains(books, mergeArguments(arguments, 0)); if (!filtered.isEmpty()) { - List cleaned = TabCompletionTypeUtil.getCleanedTabCompletions(arguments, filtered, 0, ""); + List cleaned = getCleanedTabCompletions(arguments, filtered, 0, ""); if (!books.contains(mergeArguments(arguments, 1))) { return cleaned; } else { @@ -109,17 +111,17 @@ public class CommandGive implements TabExecutor { return output; } else if (argumentCount > 2 && server.getPlayerExact(arguments[argumentCount - 3]) != null && isInt(arguments[argumentCount - 2])) { - output.addAll(TabCompletionHelper.filterMatchingStartsWith( + output.addAll(filterMatchingStartsWith( TabCompletionTypeUtil.getBooleans(), arguments[argumentCount - 1])); } else if (argumentCount > 2 && server.getPlayerExact(arguments[argumentCount - 2]) != null) { - output.addAll(TabCompletionHelper.filterMatchingStartsWith( + output.addAll(filterMatchingStartsWith( TabCompletionTypeUtil.getBooleansAndNumbers(1, 3), arguments[argumentCount - 1])); } else { List players = new ArrayList<>(); for (Player player : Bukkit.getOnlinePlayers()) { players.add(player.getName()); } - output.addAll(TabCompletionHelper.filterMatchingStartsWith(players, arguments[argumentCount - 1])); + output.addAll(filterMatchingStartsWith(players, arguments[argumentCount - 1])); } return output; } diff --git a/src/main/java/net/knarcraft/bookswithoutborders/command/CommandLoad.java b/src/main/java/net/knarcraft/bookswithoutborders/command/CommandLoad.java index 3329edb..fc22abf 100644 --- a/src/main/java/net/knarcraft/bookswithoutborders/command/CommandLoad.java +++ b/src/main/java/net/knarcraft/bookswithoutborders/command/CommandLoad.java @@ -8,7 +8,6 @@ import net.knarcraft.bookswithoutborders.utility.BookLoaderUtil; import net.knarcraft.bookswithoutborders.utility.InputCleaningUtil; import net.knarcraft.bookswithoutborders.utility.TabCompletionTypeUtil; import net.knarcraft.knarlib.formatting.FormatBuilder; -import net.knarcraft.knarlib.util.TabCompletionHelper; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.command.TabExecutor; @@ -22,7 +21,10 @@ import java.util.List; import static java.lang.Integer.parseInt; import static net.knarcraft.bookswithoutborders.utility.InputParsingUtil.isBoolean; import static net.knarcraft.bookswithoutborders.utility.InputParsingUtil.isInt; -import static net.knarcraft.bookswithoutborders.utility.InputParsingUtil.mergeArguments; +import static net.knarcraft.knarlib.util.TabCompletionHelper.filterMatchingContains; +import static net.knarcraft.knarlib.util.TabCompletionHelper.filterMatchingStartsWith; +import static net.knarcraft.knarlib.util.TabCompletionHelper.getCleanedTabCompletions; +import static net.knarcraft.knarlib.util.TabCompletionHelper.mergeArguments; /** * Command executor for the load command @@ -83,16 +85,16 @@ public class CommandLoad implements TabExecutor { protected List doTabCompletion(@NotNull CommandSender sender, @NotNull String[] arguments, boolean loadPublic) { int argumentCount = arguments.length; if (argumentCount == 1) { - return TabCompletionHelper.filterMatchingContains(BooksWithoutBorders.getAvailableBooks(sender, loadPublic), arguments[0]); + return filterMatchingContains(BooksWithoutBorders.getAvailableBooks(sender, loadPublic), arguments[0]); } List output = new ArrayList<>(); List books = BooksWithoutBorders.getAvailableBooks(sender, loadPublic); - List filtered = TabCompletionHelper.filterMatchingContains(books, + List filtered = filterMatchingContains(books, mergeArguments(arguments, 0)); if (!filtered.isEmpty()) { - List cleaned = TabCompletionTypeUtil.getCleanedTabCompletions(arguments, filtered, 0, ""); + List cleaned = getCleanedTabCompletions(arguments, filtered, 0, ""); if (!books.contains(mergeArguments(arguments, 1))) { return cleaned; } else { @@ -103,9 +105,9 @@ public class CommandLoad implements TabExecutor { if (isBoolean(arguments[argumentCount - 2])) { return output; } else if (isInt(arguments[argumentCount - 2])) { - output.addAll(TabCompletionHelper.filterMatchingStartsWith(TabCompletionTypeUtil.getBooleans(), arguments[argumentCount - 1])); + output.addAll(filterMatchingStartsWith(TabCompletionTypeUtil.getBooleans(), arguments[argumentCount - 1])); } else { - output.addAll(TabCompletionHelper.filterMatchingStartsWith(TabCompletionTypeUtil.getBooleansAndNumbers(1, 3), arguments[argumentCount - 1])); + output.addAll(filterMatchingStartsWith(TabCompletionTypeUtil.getBooleansAndNumbers(1, 3), arguments[argumentCount - 1])); } return output; } diff --git a/src/main/java/net/knarcraft/bookswithoutborders/command/CommandSetTitle.java b/src/main/java/net/knarcraft/bookswithoutborders/command/CommandSetTitle.java index eba5ef3..d1ff3a1 100644 --- a/src/main/java/net/knarcraft/bookswithoutborders/command/CommandSetTitle.java +++ b/src/main/java/net/knarcraft/bookswithoutborders/command/CommandSetTitle.java @@ -6,6 +6,7 @@ import net.knarcraft.bookswithoutborders.state.ItemSlot; import net.knarcraft.bookswithoutborders.utility.InputParsingUtil; import net.knarcraft.bookswithoutborders.utility.InventoryUtil; import net.knarcraft.knarlib.formatting.FormatBuilder; +import net.knarcraft.knarlib.util.TabCompletionHelper; import org.bukkit.Material; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; @@ -47,7 +48,7 @@ public class CommandSetTitle implements TabExecutor { String title; if (InputParsingUtil.isBoolean(arguments[arguments.length - 1])) { setDisplayName = Boolean.parseBoolean(arguments[arguments.length - 1]); - title = InputParsingUtil.mergeArguments(arguments, 1); + title = TabCompletionHelper.mergeArguments(arguments, 1); } else { title = String.join(" ", arguments); } diff --git a/src/main/java/net/knarcraft/bookswithoutborders/listener/BookshelfListener.java b/src/main/java/net/knarcraft/bookswithoutborders/listener/BookshelfListener.java index 4c9ca5d..b52817c 100644 --- a/src/main/java/net/knarcraft/bookswithoutborders/listener/BookshelfListener.java +++ b/src/main/java/net/knarcraft/bookswithoutborders/listener/BookshelfListener.java @@ -7,8 +7,8 @@ import net.knarcraft.bookswithoutborders.config.translation.Placeholder; import net.knarcraft.bookswithoutborders.container.Bookshelf; import net.knarcraft.bookswithoutborders.handler.BookshelfHandler; import net.knarcraft.bookswithoutborders.utility.BookMetaUtil; -import net.knarcraft.bookswithoutborders.utility.IntegerToRomanUtil; import net.knarcraft.knarlib.formatting.FormatBuilder; +import net.knarcraft.knarlib.util.IntegerToRomanUtil; import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.block.Block; @@ -202,7 +202,7 @@ public class BookshelfListener implements Listener { @NotNull private String getEnchantmentName(@NotNull Enchantment enchantment) { // Note: While depreciated, changing this is incompatible with Paper - return uppercaseFirst(enchantment.getKey().getKey().replace("_", " ")); + return uppercaseFirstEachWord(enchantment.getKey().getKey().replace("_", " ")); } /** @@ -212,7 +212,7 @@ public class BookshelfListener implements Listener { * @return

The input string with more uppercase

*/ @NotNull - private String uppercaseFirst(@NotNull String input) { + private String uppercaseFirstEachWord(@NotNull String input) { String[] parts = input.split(" "); for (int i = 0; i < parts.length; i++) { parts[i] = parts[i].substring(0, 1).toUpperCase() + parts[i].substring(1); diff --git a/src/main/java/net/knarcraft/bookswithoutborders/utility/InputParsingUtil.java b/src/main/java/net/knarcraft/bookswithoutborders/utility/InputParsingUtil.java index 662cf21..dd7a4e2 100644 --- a/src/main/java/net/knarcraft/bookswithoutborders/utility/InputParsingUtil.java +++ b/src/main/java/net/knarcraft/bookswithoutborders/utility/InputParsingUtil.java @@ -32,47 +32,6 @@ public final class InputParsingUtil { return input.matches("[0-9]+"); } - /** - * Merges all arguments to a string with spaces - * - * @param arguments

The arguments to merge

- * @param stripLastN

How many of the last arguments to ignore

- * @return

The merged arguments

- */ - @NotNull - public static String mergeArguments(@NotNull String[] arguments, int stripLastN) { - return mergeArguments(0, arguments, stripLastN); - } - - /** - * Merges all arguments to a string with spaces - * - * @param stripFirstN

How many of the first arguments to ignore

- * @param arguments

The arguments to merge

- * @return

The merged arguments

- */ - @NotNull - public static String mergeArguments(int stripFirstN, @NotNull String[] arguments) { - return mergeArguments(stripFirstN, arguments, 0); - } - - /** - * Merges all arguments to a string with spaces - * - * @param stripFirstN

How many of the first arguments to ignore

- * @param arguments

The arguments to merge

- * @param stripLastN

How many of the last arguments to ignore

- * @return

The merged arguments

- */ - @NotNull - public static String mergeArguments(int stripFirstN, @NotNull String[] arguments, int stripLastN) { - StringBuilder builder = new StringBuilder(arguments[stripFirstN]); - for (int i = stripFirstN + 1; i < arguments.length - stripLastN; i++) { - builder.append(" ").append(arguments[i]); - } - return builder.toString(); - } - /** * Parses a page number for a string like "page1" * diff --git a/src/main/java/net/knarcraft/bookswithoutborders/utility/IntegerToRomanUtil.java b/src/main/java/net/knarcraft/bookswithoutborders/utility/IntegerToRomanUtil.java deleted file mode 100644 index 50a9715..0000000 --- a/src/main/java/net/knarcraft/bookswithoutborders/utility/IntegerToRomanUtil.java +++ /dev/null @@ -1,94 +0,0 @@ -package net.knarcraft.bookswithoutborders.utility; - -import org.jetbrains.annotations.NotNull; - -import java.util.ArrayList; -import java.util.List; - -/** - * A utility for converting from an integer to a roman numeral - */ -public final class IntegerToRomanUtil { - - private final static List romanValues = new ArrayList<>(); - private final static List romanCharacters = new ArrayList<>(); - - static { - // Initialize the roman numbers - romanValues.add(1000); - romanValues.add(500); - romanValues.add(100); - romanValues.add(50); - romanValues.add(10); - romanValues.add(5); - romanValues.add(1); - - romanCharacters.add('M'); - romanCharacters.add('D'); - romanCharacters.add('C'); - romanCharacters.add('L'); - romanCharacters.add('X'); - romanCharacters.add('V'); - romanCharacters.add('I'); - } - - private IntegerToRomanUtil() { - - } - - /** - * Gets the given number as a roman number string - * - * @param number

The number to convert

- * @return

The roman representation of the number

- */ - @NotNull - public static String getRomanNumber(int number) { - StringBuilder output = new StringBuilder(); - int remainder = number; - for (int i = 0; i < romanCharacters.size(); i++) { - int romanValue = romanValues.get(i); - char romanCharacter = romanCharacters.get(i); - - // Repeat the roman character, and calculate the new remainder - if (remainder >= romanValue) { - output.append(repeat(romanCharacter, remainder / romanValue)); - remainder = remainder % romanValue; - } - - // Exit early to prevent unexpected trailing characters - if (remainder == 0) { - return output.toString(); - } - - // Generate the special case IV and similar - for (int j = i; j < romanCharacters.size(); j++) { - int value = romanValues.get(j); - int difference = Math.max(romanValue - value, 0); - - /* If the remainder is "one" less than the current roman value, we hit the IV/IX/XL case. - Note that 5 triggers the special case when 10 is tested, as 5 = 10 - 5, which requires a test, so it - can be filtered out. */ - if (remainder == difference && value != romanValue / 2) { - output.append(romanCharacters.get(j)).append(romanCharacter); - remainder = 0; - } - } - } - - return output.toString(); - } - - /** - * Repeats the given character - * - * @param character

The character to repeat

- * @param times

The number of times to repeat the character

- * @return

The repeated string

- */ - @NotNull - private static String repeat(char character, int times) { - return String.valueOf(character).repeat(Math.max(0, times)); - } - -} diff --git a/src/main/java/net/knarcraft/bookswithoutborders/utility/TabCompletionTypeUtil.java b/src/main/java/net/knarcraft/bookswithoutborders/utility/TabCompletionTypeUtil.java index 58b2f1e..5565e91 100644 --- a/src/main/java/net/knarcraft/bookswithoutborders/utility/TabCompletionTypeUtil.java +++ b/src/main/java/net/knarcraft/bookswithoutborders/utility/TabCompletionTypeUtil.java @@ -20,10 +20,7 @@ public final class TabCompletionTypeUtil { */ @NotNull public static List getBooleans() { - List booleans = new ArrayList<>(); - booleans.add("true"); - booleans.add("false"); - return booleans; + return List.of("true", "false"); } /** @@ -52,47 +49,9 @@ public final class TabCompletionTypeUtil { @NotNull public static List getBooleansAndNumbers(int start, int end) { List booleansAndNumbers = new ArrayList<>(); - List booleans = getBooleans(); - List numbers = getNumbers(start, end); - booleansAndNumbers.addAll(booleans); - booleansAndNumbers.addAll(numbers); + booleansAndNumbers.addAll(getBooleans()); + booleansAndNumbers.addAll(getNumbers(start, end)); return booleansAndNumbers; } - /** - * Gets tab-completions with only remaining text, from a list of full strings - * - * @param arguments

The arguments given by the user

- * @param filtered

Tab-completions filtered by user input

- * @param offset

The offset to use, if other arguments are preceding the book specification

- * @param prefix

The prefix to use before each tab-completion

- * @return

The cleaned tab-completions

- */ - @NotNull - public static List getCleanedTabCompletions(@NotNull String[] arguments, @NotNull List filtered, - int offset, @NotNull String prefix) { - List cleaned = new ArrayList<>(); - int offsetCount = arguments.length - offset; - for (String name : filtered) { - int startIndex = arguments.length == 0 ? 0 : (offsetCount > 1 ? offsetCount - 1 : 0); - String[] parts = name.split(" ", -1); - // Skip non-matching entries - if ((offsetCount > 1 && !parts[offsetCount - 2].equalsIgnoreCase(arguments[offsetCount - 2 + offset])) || - startIndex >= parts.length) { - continue; - } - - if (startIndex == 0) { - cleaned.add(prefix + name); - } else { - StringBuilder builder = new StringBuilder(prefix).append(parts[startIndex]); - for (int i = startIndex + 1; i < parts.length; i++) { - builder.append(" ").append(parts[i]); - } - cleaned.add(builder.toString()); - } - } - return cleaned; - } - } diff --git a/src/test/java/net/knarcraft/bookswithoutborders/util/IntegerToRomanUtilTest.java b/src/test/java/net/knarcraft/bookswithoutborders/util/IntegerToRomanUtilTest.java deleted file mode 100644 index 87121ce..0000000 --- a/src/test/java/net/knarcraft/bookswithoutborders/util/IntegerToRomanUtilTest.java +++ /dev/null @@ -1,40 +0,0 @@ -package net.knarcraft.bookswithoutborders.util; - -import org.junit.Test; - -import static net.knarcraft.bookswithoutborders.utility.IntegerToRomanUtil.getRomanNumber; -import static org.junit.Assert.assertEquals; - -/** - * A test class for IntegerToRomanConverter - */ -public class IntegerToRomanUtilTest { - - @Test - public void basicNumbersTest() { - assertEquals("I", getRomanNumber(1)); - assertEquals("II", getRomanNumber(2)); - assertEquals("III", getRomanNumber(3)); - assertEquals("IV", getRomanNumber(4)); - assertEquals("V", getRomanNumber(5)); - assertEquals("X", getRomanNumber(10)); - assertEquals("XV", getRomanNumber(15)); - assertEquals("XX", getRomanNumber(20)); - assertEquals("L", getRomanNumber(50)); - assertEquals("C", getRomanNumber(100)); - assertEquals("D", getRomanNumber(500)); - assertEquals("M", getRomanNumber(1000)); - } - - @Test - public void nineFourTest() { - assertEquals("IV", getRomanNumber(4)); - assertEquals("IX", getRomanNumber(9)); - assertEquals("XIV", getRomanNumber(14)); - assertEquals("XIX", getRomanNumber(19)); - assertEquals("XXIV", getRomanNumber(24)); - assertEquals("XL", getRomanNumber(40)); - assertEquals("IL", getRomanNumber(49)); - } - -}