diff --git a/src/main/java/net/knarcraft/bookswithoutborders/BooksWithoutBorders.java b/src/main/java/net/knarcraft/bookswithoutborders/BooksWithoutBorders.java index e264209..8584bc8 100644 --- a/src/main/java/net/knarcraft/bookswithoutborders/BooksWithoutBorders.java +++ b/src/main/java/net/knarcraft/bookswithoutborders/BooksWithoutBorders.java @@ -44,7 +44,6 @@ import org.jetbrains.annotations.Nullable; import java.io.File; import java.util.ArrayList; -import java.util.Comparator; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -124,9 +123,8 @@ public class BooksWithoutBorders extends JavaPlugin { * @param sender

The sender to update books for

* @param updatePublic

Whether to update public books

*/ - public static void updateBooks(CommandSender sender, boolean updatePublic) { + public static void updateBooks(@NotNull CommandSender sender, boolean updatePublic) { List newFiles = BookFileHelper.listFiles(sender, updatePublic); - newFiles.sort(Comparator.naturalOrder()); if (updatePublic) { publicBooksList = newFiles; publicLetterIndex = BookFileHelper.populateLetterIndices(newFiles); @@ -136,6 +134,7 @@ public class BooksWithoutBorders extends JavaPlugin { } } + @Override public void onEnable() { FileConfiguration config = this.getConfig(); diff --git a/src/main/java/net/knarcraft/bookswithoutborders/listener/SignEventListener.java b/src/main/java/net/knarcraft/bookswithoutborders/listener/SignEventListener.java index 5029a15..2777f49 100644 --- a/src/main/java/net/knarcraft/bookswithoutborders/listener/SignEventListener.java +++ b/src/main/java/net/knarcraft/bookswithoutborders/listener/SignEventListener.java @@ -4,6 +4,7 @@ import net.knarcraft.bookswithoutborders.BooksWithoutBorders; import net.knarcraft.bookswithoutborders.config.BooksWithoutBordersConfig; import net.knarcraft.bookswithoutborders.state.EncryptionStyle; import net.knarcraft.bookswithoutborders.utility.BookFileHelper; +import net.knarcraft.bookswithoutborders.utility.BookFormatter; import net.knarcraft.bookswithoutborders.utility.BookLoader; import net.knarcraft.bookswithoutborders.utility.EncryptionHelper; import net.knarcraft.bookswithoutborders.utility.InputCleaningHelper; @@ -144,7 +145,7 @@ public class SignEventListener implements Listener { player.closeInventory(); //Converts user supplied key into integer form - String lineText = ChatColor.stripColor(sign.getSide(Side.FRONT).getLine(2)); + String lineText = BookFormatter.stripColor(sign.getSide(Side.FRONT).getLine(2)); String key = EncryptionHelper.getNumberKeyFromStringKey(lineText); ItemStack book = EncryptionHelper.loadEncryptedBook(player, key, false); @@ -163,7 +164,7 @@ public class SignEventListener implements Listener { */ private ChatColor getSignLine2Color(Sign sign) { String line = sign.getSide(Side.FRONT).getLine(2); - if (!ChatColor.stripColor(line).equals(line)) { + if (!BookFormatter.stripColor(line).equals(line)) { return ChatColor.getByChar(sign.getSide(Side.FRONT).getLine(2).substring(1, 2).charAt(0)); } else { return null; @@ -291,8 +292,8 @@ public class SignEventListener implements Listener { boolean mainHand = hand == EquipmentSlot.HAND; if (heldItemType == Material.WRITTEN_BOOK) { player.closeInventory(); - eBook = EncryptionHelper.encryptBook(player, mainHand, ChatColor.stripColor(lines[2]), - EncryptionStyle.getFromString(ChatColor.stripColor(lines[3]))); + eBook = EncryptionHelper.encryptBook(player, mainHand, BookFormatter.stripColor(lines[2]), + EncryptionStyle.getFromString(BookFormatter.stripColor(lines[3]))); if (eBook != null) { player.getInventory().setItem(hand, eBook); } @@ -306,7 +307,7 @@ public class SignEventListener implements Listener { * @param player

The player which clicked the sign

*/ private void giveBook(Sign sign, Player player) { - String fileName = ChatColor.stripColor(sign.getSide(Side.FRONT).getLine(2)); + String fileName = BookFormatter.stripColor(sign.getSide(Side.FRONT).getLine(2)); boolean isLoadListNumber = false; try { @@ -318,7 +319,7 @@ public class SignEventListener implements Listener { //Add the third line to the second line for the full filename String thirdLine = sign.getSide(Side.FRONT).getLine(3); if (!isLoadListNumber && thirdLine.length() >= 2) { - fileName += ChatColor.stripColor(thirdLine); + fileName += BookFormatter.stripColor(thirdLine); } ItemStack newBook = BookLoader.loadBook(player, fileName, "true", "public"); diff --git a/src/main/java/net/knarcraft/bookswithoutborders/utility/BookFileHelper.java b/src/main/java/net/knarcraft/bookswithoutborders/utility/BookFileHelper.java index 5add978..c83614f 100644 --- a/src/main/java/net/knarcraft/bookswithoutborders/utility/BookFileHelper.java +++ b/src/main/java/net/knarcraft/bookswithoutborders/utility/BookFileHelper.java @@ -15,10 +15,12 @@ import org.jetbrains.annotations.NotNull; import java.io.File; import java.util.ArrayList; import java.util.Collections; +import java.util.Comparator; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Objects; +import java.util.logging.Level; import java.util.regex.Pattern; import static net.knarcraft.bookswithoutborders.config.BooksWithoutBordersConfig.getBookFolder; @@ -154,7 +156,6 @@ public final class BookFileHelper { int totalPages, @NotNull List availableBooks, @NotNull Map firstInstances) { ComponentBuilder headerComponent = new ComponentBuilder(); - headerComponent.append("Books page " + page + " of " + totalPages).color(ChatColor.GREEN).append(" "); // Display links to first page where a letter can be found for (int characterIndex = 0; characterIndex <= 25; characterIndex++) { @@ -212,6 +213,7 @@ public final class BookFileHelper { } else { nextComponent.append("Next [>]").color(ChatColor.GRAY); } + nextComponent.append(" Page " + page + " of " + totalPages).color(ChatColor.GREEN); nextComponent.append(" ", ComponentBuilder.FormatRetention.NONE).append( "[Page Command]", ComponentBuilder.FormatRetention.NONE).event(new HoverEvent( HoverEvent.Action.SHOW_TEXT, new Text("/" + command + " page" + page))).event( @@ -227,10 +229,9 @@ public final class BookFileHelper { */ @NotNull private static String getNiceName(@NotNull String bookPath) { - bookPath = ChatColor.translateAlternateColorCodes('&', bookPath.substring(0, bookPath.length() - 4)) - .replace("_", " "); + bookPath = ChatColor.translateAlternateColorCodes('&', bookPath.substring(0, bookPath.length() - 4)); String[] parts = bookPath.split(","); - return parts[0] + ChatColor.RESET + " by " + parts[1] + ChatColor.RESET; + return parts[0].replace("_", " ") + ChatColor.RESET + " by " + parts[1] + ChatColor.RESET; } /** @@ -243,7 +244,7 @@ public final class BookFileHelper { public static Map populateLetterIndices(@NotNull List books) { List firstCharacter = new ArrayList<>(books.size()); for (String bookIdentifier : books) { - firstCharacter.add(bookIdentifier.toLowerCase().charAt(0)); + firstCharacter.add(BookFormatter.stripColor(bookIdentifier).toLowerCase().charAt(0)); } Map firstEncounter = new HashMap<>(); @@ -291,6 +292,12 @@ public final class BookFileHelper { } } + // Sort the book list + Comparator bookComparator = Comparator.naturalOrder(); + for (String name : fileList) { + BooksWithoutBorders.getInstance().getLogger().log(Level.INFO, BookFormatter.stripColor(name)); + } + fileList.sort((a, b) -> bookComparator.compare(BookFormatter.stripColor(a), BookFormatter.stripColor(b))); return fileList; } diff --git a/src/main/java/net/knarcraft/bookswithoutborders/utility/BookFormatter.java b/src/main/java/net/knarcraft/bookswithoutborders/utility/BookFormatter.java index 686cb21..87f3bb9 100644 --- a/src/main/java/net/knarcraft/bookswithoutborders/utility/BookFormatter.java +++ b/src/main/java/net/knarcraft/bookswithoutborders/utility/BookFormatter.java @@ -3,6 +3,7 @@ package net.knarcraft.bookswithoutborders.utility; import net.knarcraft.knarlib.property.ColorConversion; import net.knarcraft.knarlib.util.ColorHelper; import org.bukkit.inventory.meta.BookMeta; +import org.jetbrains.annotations.NotNull; import java.util.ArrayList; import java.util.List; @@ -114,4 +115,15 @@ public final class BookFormatter { return bookMeta; } + /** + * Strips the color from the given input + * + * @param input

The input to strip

+ * @return

The color stripped input

+ */ + @NotNull + public static String stripColor(@NotNull String input) { + return ColorHelper.stripColorCodes(input, ColorConversion.RGB); + } + }