From 887cc72f0d5ceaa76ba4a7cd8ddb94e083b4ace9 Mon Sep 17 00:00:00 2001 From: EpicKnarvik97 Date: Wed, 20 Aug 2025 00:33:50 +0200 Subject: [PATCH] Replaces more static strings, and removes hard-coded lore separators in suggestions --- README.md | 2 +- .../BooksWithoutBorders.java | 2 +- .../command/CommandAddTitlePage.java | 7 +- .../command/CommandClear.java | 5 +- .../command/CommandCopy.java | 5 +- .../command/CommandDecrypt.java | 5 +- .../command/CommandEncrypt.java | 5 +- .../command/CommandSetAuthor.java | 5 +- .../command/CommandSetBookshelfData.java | 5 +- .../command/CommandSetGeneration.java | 19 +++-- .../command/CommandSetLore.java | 17 +++-- .../command/CommandSetTitle.java | 7 +- .../config/translation/Formatting.java | 30 -------- .../config/translation/Translatable.java | 70 +++++++++++++++++++ src/main/resources/strings.yml | 14 +++- 15 files changed, 128 insertions(+), 70 deletions(-) diff --git a/README.md b/README.md index a962ad3..9e2a13c 100644 --- a/README.md +++ b/README.md @@ -63,7 +63,7 @@ An in-game description of available commands is available through the /bwb comma | Command | Alias | Arguments | Permission | Description | |----------------------|---------------|----------------------------------------------------------------------------------|-----------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| /addBookTitlePage | bwbtitlepage | \[page index] \[title~description] | bookswithoutborders.addtitlepage | Adds a blank page, title page or chapter page depending on input and whether the book is signed | +| /addBookTitlePage | bwbtitlepage | \[page index] \[title~description] | bookswithoutborders.addtitlepage | Adds a blank page, title page or chapter page depending on input and whether the book is signed. The title author separator (default `~`) is used to separate the input into title,paragraph1,paragraph2,... | | /bookswithoutborders | bwb | None | | Displays information about commands (and permissions if the user has bookswithoutborders.admin) | | /clearbook | bwbclear | None | bookswithoutborders.clear | Removes all text from the held un-signed book | | /copybook | bwbcopy | \<# of copies> | bookswithoutborders.copy | Copies the book the player is holding | diff --git a/src/main/java/net/knarcraft/bookswithoutborders/BooksWithoutBorders.java b/src/main/java/net/knarcraft/bookswithoutborders/BooksWithoutBorders.java index 825ba77..fd5a707 100644 --- a/src/main/java/net/knarcraft/bookswithoutborders/BooksWithoutBorders.java +++ b/src/main/java/net/knarcraft/bookswithoutborders/BooksWithoutBorders.java @@ -214,7 +214,7 @@ public class BooksWithoutBorders extends JavaPlugin { translator.registerMessageCategory(Translatable.SUCCESS_COPY); translator.registerMessageCategory(GiveMessage.SUCCESS_GIVE_SENT); translator.registerMessageCategory(BookshelfMessage.SUCCESS_BOOKSHELF_TITLE_SET); - translator.registerMessageCategory(Formatting.ACTION_COPY); + translator.registerMessageCategory(Formatting.NEUTRAL_COMMANDS_HEADER); translator.registerMessageCategory(CostMessage.SUCCESS_COST_ITEM_SET); translator.registerMessageCategory(SaveMessage.SUCCESS_SAVED); diff --git a/src/main/java/net/knarcraft/bookswithoutborders/command/CommandAddTitlePage.java b/src/main/java/net/knarcraft/bookswithoutborders/command/CommandAddTitlePage.java index 03dd860..9f51ea3 100644 --- a/src/main/java/net/knarcraft/bookswithoutborders/command/CommandAddTitlePage.java +++ b/src/main/java/net/knarcraft/bookswithoutborders/command/CommandAddTitlePage.java @@ -45,9 +45,9 @@ public class CommandAddTitlePage implements TabExecutor { if (arguments.length < 1) { if (InventoryHelper.notHoldingOneWrittenBookCheck(player, stringFormatter.replacePlaceholder(Translatable.ERROR_NOT_HOLDING_WRITTEN_BOOK, "{action}", - stringFormatter.getUnFormattedColoredMessage(Formatting.ACTION_ADD_TITLE_AUTHOR_PAGE)), + stringFormatter.getUnFormattedColoredMessage(Translatable.ACTION_ADD_TITLE_AUTHOR_PAGE)), stringFormatter.replacePlaceholder(Translatable.ERROR_ONLY_ONE_BOOK, "{action}", - stringFormatter.getUnFormattedColoredMessage(Formatting.ACTION_ADD_TITLE_AUTHOR_PAGE)))) { + stringFormatter.getUnFormattedColoredMessage(Translatable.ACTION_ADD_TITLE_AUTHOR_PAGE)))) { return false; } @@ -163,7 +163,8 @@ public class CommandAddTitlePage implements TabExecutor { } } } else if (arguments.length == 2) { - return List.of("Title", "Chapter~Description"); + String separator = BooksWithoutBorders.getConfiguration().getTitleAuthorSeparator(); + return List.of("Title", "Chapter" + separator + "Description"); } return List.of(); } diff --git a/src/main/java/net/knarcraft/bookswithoutborders/command/CommandClear.java b/src/main/java/net/knarcraft/bookswithoutborders/command/CommandClear.java index c7962ef..557d1f7 100644 --- a/src/main/java/net/knarcraft/bookswithoutborders/command/CommandClear.java +++ b/src/main/java/net/knarcraft/bookswithoutborders/command/CommandClear.java @@ -1,7 +1,6 @@ package net.knarcraft.bookswithoutborders.command; import net.knarcraft.bookswithoutborders.BooksWithoutBorders; -import net.knarcraft.bookswithoutborders.config.translation.Formatting; import net.knarcraft.bookswithoutborders.config.translation.Translatable; import net.knarcraft.bookswithoutborders.utility.InventoryHelper; import net.knarcraft.knarlib.formatting.StringFormatter; @@ -35,9 +34,9 @@ public class CommandClear implements TabExecutor { if (InventoryHelper.notHoldingOneWritableBookCheck(player, stringFormatter.replacePlaceholder(Translatable.ERROR_NOT_HOLDING_WRITABLE_BOOK, "{action}", - stringFormatter.getUnFormattedColoredMessage(Formatting.ACTION_CLEAR)), + stringFormatter.getUnFormattedColoredMessage(Translatable.ACTION_CLEAR)), stringFormatter.replacePlaceholder(Translatable.ERROR_ONLY_ONE_BOOK, "{action}", - stringFormatter.getUnFormattedColoredMessage(Formatting.ACTION_CLEAR)))) { + stringFormatter.getUnFormattedColoredMessage(Translatable.ACTION_CLEAR)))) { return false; } diff --git a/src/main/java/net/knarcraft/bookswithoutborders/command/CommandCopy.java b/src/main/java/net/knarcraft/bookswithoutborders/command/CommandCopy.java index 3cfe745..48dc21e 100644 --- a/src/main/java/net/knarcraft/bookswithoutborders/command/CommandCopy.java +++ b/src/main/java/net/knarcraft/bookswithoutborders/command/CommandCopy.java @@ -3,7 +3,6 @@ package net.knarcraft.bookswithoutborders.command; import net.knarcraft.bookswithoutborders.BooksWithoutBorders; import net.knarcraft.bookswithoutborders.config.BwBConfig; import net.knarcraft.bookswithoutborders.config.Permission; -import net.knarcraft.bookswithoutborders.config.translation.Formatting; import net.knarcraft.bookswithoutborders.config.translation.Translatable; import net.knarcraft.bookswithoutborders.utility.BookHelper; import net.knarcraft.bookswithoutborders.utility.InventoryHelper; @@ -40,9 +39,9 @@ public class CommandCopy implements TabExecutor { if (InventoryHelper.notHoldingOneWrittenBookCheck(player, stringFormatter.replacePlaceholder(Translatable.ERROR_NOT_HOLDING_WRITTEN_BOOK, "{action}", - stringFormatter.getUnFormattedColoredMessage(Formatting.ACTION_COPY)), + stringFormatter.getUnFormattedColoredMessage(Translatable.ACTION_COPY)), stringFormatter.replacePlaceholder(Translatable.ERROR_ONLY_ONE_BOOK, "{action}", - stringFormatter.getUnFormattedColoredMessage(Formatting.ACTION_COPY)))) { + stringFormatter.getUnFormattedColoredMessage(Translatable.ACTION_COPY)))) { return false; } diff --git a/src/main/java/net/knarcraft/bookswithoutborders/command/CommandDecrypt.java b/src/main/java/net/knarcraft/bookswithoutborders/command/CommandDecrypt.java index 10b5c8b..d54ec49 100644 --- a/src/main/java/net/knarcraft/bookswithoutborders/command/CommandDecrypt.java +++ b/src/main/java/net/knarcraft/bookswithoutborders/command/CommandDecrypt.java @@ -2,7 +2,6 @@ package net.knarcraft.bookswithoutborders.command; import net.knarcraft.bookswithoutborders.BooksWithoutBorders; import net.knarcraft.bookswithoutborders.config.Permission; -import net.knarcraft.bookswithoutborders.config.translation.Formatting; import net.knarcraft.bookswithoutborders.config.translation.Translatable; import net.knarcraft.bookswithoutborders.utility.BookHelper; import net.knarcraft.bookswithoutborders.utility.EncryptionHelper; @@ -37,9 +36,9 @@ public class CommandDecrypt implements TabExecutor { if (InventoryHelper.notHoldingOneWrittenBookCheck(player, stringFormatter.replacePlaceholder(Translatable.ERROR_NOT_HOLDING_WRITTEN_BOOK, "{action}", - stringFormatter.getUnFormattedColoredMessage(Formatting.ACTION_DECRYPT)), + stringFormatter.getUnFormattedColoredMessage(Translatable.ACTION_DECRYPT)), stringFormatter.replacePlaceholder(Translatable.ERROR_ONLY_ONE_BOOK, "{action}", - stringFormatter.getUnFormattedColoredMessage(Formatting.ACTION_DECRYPT)))) { + stringFormatter.getUnFormattedColoredMessage(Translatable.ACTION_DECRYPT)))) { return false; } diff --git a/src/main/java/net/knarcraft/bookswithoutborders/command/CommandEncrypt.java b/src/main/java/net/knarcraft/bookswithoutborders/command/CommandEncrypt.java index 4739134..eb0a578 100644 --- a/src/main/java/net/knarcraft/bookswithoutborders/command/CommandEncrypt.java +++ b/src/main/java/net/knarcraft/bookswithoutborders/command/CommandEncrypt.java @@ -1,7 +1,6 @@ package net.knarcraft.bookswithoutborders.command; import net.knarcraft.bookswithoutborders.BooksWithoutBorders; -import net.knarcraft.bookswithoutborders.config.translation.Formatting; import net.knarcraft.bookswithoutborders.config.translation.Translatable; import net.knarcraft.bookswithoutborders.encryption.EncryptionStyle; import net.knarcraft.bookswithoutborders.state.ItemSlot; @@ -65,9 +64,9 @@ public class CommandEncrypt implements TabExecutor { if (InventoryHelper.notHoldingOneWrittenBookCheck(player, stringFormatter.replacePlaceholder(Translatable.ERROR_NOT_HOLDING_WRITTEN_BOOK, "{action}", - stringFormatter.getUnFormattedColoredMessage(Formatting.ACTION_ENCRYPT)), + stringFormatter.getUnFormattedColoredMessage(Translatable.ACTION_ENCRYPT)), stringFormatter.replacePlaceholder(Translatable.ERROR_ONLY_ONE_BOOK, "{action}", - stringFormatter.getUnFormattedColoredMessage(Formatting.ACTION_ENCRYPT)))) { + stringFormatter.getUnFormattedColoredMessage(Translatable.ACTION_ENCRYPT)))) { return null; } diff --git a/src/main/java/net/knarcraft/bookswithoutborders/command/CommandSetAuthor.java b/src/main/java/net/knarcraft/bookswithoutborders/command/CommandSetAuthor.java index 1988d38..d5f3cd1 100644 --- a/src/main/java/net/knarcraft/bookswithoutborders/command/CommandSetAuthor.java +++ b/src/main/java/net/knarcraft/bookswithoutborders/command/CommandSetAuthor.java @@ -1,7 +1,6 @@ package net.knarcraft.bookswithoutborders.command; import net.knarcraft.bookswithoutborders.BooksWithoutBorders; -import net.knarcraft.bookswithoutborders.config.translation.Formatting; import net.knarcraft.bookswithoutborders.config.translation.Translatable; import net.knarcraft.bookswithoutborders.state.ItemSlot; import net.knarcraft.bookswithoutborders.utility.InventoryHelper; @@ -41,9 +40,9 @@ public class CommandSetAuthor implements TabExecutor { if (InventoryHelper.notHoldingOneWrittenBookCheck(player, stringFormatter.replacePlaceholder(Translatable.ERROR_NOT_HOLDING_WRITTEN_BOOK, "{action}", - stringFormatter.getUnFormattedColoredMessage(Formatting.ACTION_SET_AUTHOR)), + stringFormatter.getUnFormattedColoredMessage(Translatable.ACTION_SET_AUTHOR)), stringFormatter.replacePlaceholder(Translatable.ERROR_ONLY_ONE_BOOK, "{action}", - stringFormatter.getUnFormattedColoredMessage(Formatting.ACTION_SET_AUTHOR)))) { + stringFormatter.getUnFormattedColoredMessage(Translatable.ACTION_SET_AUTHOR)))) { return false; } diff --git a/src/main/java/net/knarcraft/bookswithoutborders/command/CommandSetBookshelfData.java b/src/main/java/net/knarcraft/bookswithoutborders/command/CommandSetBookshelfData.java index 0c8b6b1..40e6e4e 100644 --- a/src/main/java/net/knarcraft/bookswithoutborders/command/CommandSetBookshelfData.java +++ b/src/main/java/net/knarcraft/bookswithoutborders/command/CommandSetBookshelfData.java @@ -94,6 +94,7 @@ public class CommandSetBookshelfData implements TabExecutor { @Override public List onTabComplete(@NotNull CommandSender commandSender, @NotNull Command command, @NotNull String s, @NotNull String[] arguments) { + String separator = BooksWithoutBorders.getConfiguration().getTitleAuthorSeparator(); if (arguments.length == 1) { return TabCompletionHelper.filterMatchingStartsWith(List.of("delete", "name", "lore"), arguments[0]); } else if (arguments.length == 2) { @@ -101,8 +102,8 @@ public class CommandSetBookshelfData implements TabExecutor { case "delete" -> new ArrayList<>(); case "name" -> TabCompletionHelper.filterMatchingStartsWith(List.of("Epic Title", "Lame Title"), arguments[1]); - case "lore" -> - TabCompletionHelper.filterMatchingStartsWith(List.of("Interesting lore", "Line1~Line2~Line3"), arguments[1]); + case "lore" -> TabCompletionHelper.filterMatchingStartsWith(List.of("Interesting lore", + "Line1" + separator + "Line2" + separator + "Line3"), arguments[1]); default -> null; }; } else { diff --git a/src/main/java/net/knarcraft/bookswithoutborders/command/CommandSetGeneration.java b/src/main/java/net/knarcraft/bookswithoutborders/command/CommandSetGeneration.java index 8fbffac..6255562 100644 --- a/src/main/java/net/knarcraft/bookswithoutborders/command/CommandSetGeneration.java +++ b/src/main/java/net/knarcraft/bookswithoutborders/command/CommandSetGeneration.java @@ -1,7 +1,9 @@ package net.knarcraft.bookswithoutborders.command; import net.knarcraft.bookswithoutborders.BooksWithoutBorders; +import net.knarcraft.bookswithoutborders.config.translation.Translatable; import net.knarcraft.bookswithoutborders.utility.InventoryHelper; +import net.knarcraft.knarlib.formatting.StringFormatter; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.command.TabExecutor; @@ -22,18 +24,22 @@ public class CommandSetGeneration implements TabExecutor { @Override public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] arguments) { + StringFormatter stringFormatter = BooksWithoutBorders.getStringFormatter(); if (!(sender instanceof Player player)) { - BooksWithoutBorders.sendErrorMessage(sender, "This command can only be used by a player!"); + stringFormatter.displayErrorMessage(sender, Translatable.ERROR_PLAYER_ONLY); return false; } - if (InventoryHelper.notHoldingOneWrittenBookCheck(player, "You must be holding a written book to" + - " change its generation!", "You cannot change the generation of two books at once!")) { + if (InventoryHelper.notHoldingOneWrittenBookCheck(player, + stringFormatter.replacePlaceholder(Translatable.ERROR_NOT_HOLDING_WRITTEN_BOOK, "{action}", + stringFormatter.getUnFormattedColoredMessage(Translatable.ACTION_CHANGE_GENERATION)), + stringFormatter.replacePlaceholder(Translatable.ERROR_ONLY_ONE_BOOK, "{action}", + stringFormatter.getUnFormattedColoredMessage(Translatable.ACTION_CHANGE_GENERATION)))) { return false; } if (arguments.length < 1) { - BooksWithoutBorders.sendErrorMessage(player, "You must specify the new generation for your book!"); + stringFormatter.displayErrorMessage(player, Translatable.ERROR_GENERATION_NOT_SPECIFIED); return false; } @@ -41,7 +47,7 @@ public class CommandSetGeneration implements TabExecutor { try { generation = BookMeta.Generation.valueOf(arguments[0]); } catch (IllegalArgumentException exception) { - BooksWithoutBorders.sendErrorMessage(player, "Invalid book generation specified!"); + stringFormatter.displayErrorMessage(player, Translatable.ERROR_GENERATION_INVALID); return false; } @@ -50,9 +56,10 @@ public class CommandSetGeneration implements TabExecutor { if (bookMeta != null) { bookMeta.setGeneration(generation); heldBook.setItemMeta(bookMeta); + stringFormatter.displayErrorMessage(player, Translatable.SUCCESS_GENERATION_CHANGED); return true; } else { - BooksWithoutBorders.sendErrorMessage(player, "Unable to get book metadata!"); + stringFormatter.displayErrorMessage(player, Translatable.ERROR_METADATA_MISSING); return false; } } diff --git a/src/main/java/net/knarcraft/bookswithoutborders/command/CommandSetLore.java b/src/main/java/net/knarcraft/bookswithoutborders/command/CommandSetLore.java index 4f94692..515f679 100644 --- a/src/main/java/net/knarcraft/bookswithoutborders/command/CommandSetLore.java +++ b/src/main/java/net/knarcraft/bookswithoutborders/command/CommandSetLore.java @@ -1,7 +1,9 @@ package net.knarcraft.bookswithoutborders.command; import net.knarcraft.bookswithoutborders.BooksWithoutBorders; +import net.knarcraft.bookswithoutborders.config.translation.Translatable; import net.knarcraft.bookswithoutborders.utility.InventoryHelper; +import net.knarcraft.knarlib.formatting.StringFormatter; import net.knarcraft.knarlib.property.ColorConversion; import net.knarcraft.knarlib.util.ColorHelper; import org.bukkit.Material; @@ -25,19 +27,20 @@ public class CommandSetLore implements TabExecutor { @Override public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] arguments) { + StringFormatter stringFormatter = BooksWithoutBorders.getStringFormatter(); if (!(sender instanceof Player player)) { - BooksWithoutBorders.sendErrorMessage(sender, "This command can only be used by a player!"); + stringFormatter.displayErrorMessage(sender, Translatable.ERROR_PLAYER_ONLY); return false; } if (arguments.length < 1) { - BooksWithoutBorders.sendErrorMessage(player, "Missing a command argument!"); + stringFormatter.displayErrorMessage(player, Translatable.ERROR_LORE_EMPTY); return false; } ItemStack heldItem = InventoryHelper.getHeldItem(player, true); if (heldItem.getType() == Material.AIR) { - BooksWithoutBorders.sendErrorMessage(player, "Must be holding an item to set lore!"); + stringFormatter.displayErrorMessage(player, Translatable.ERROR_LORE_NO_ITEM); return false; } @@ -51,21 +54,21 @@ public class CommandSetLore implements TabExecutor { //Update lore ItemMeta meta = heldItem.getItemMeta(); if (meta == null) { - BooksWithoutBorders.sendErrorMessage(player, "Could not get metadata from the held item!"); + stringFormatter.displayErrorMessage(player, Translatable.ERROR_METADATA_MISSING); return false; } meta.setLore(newLore); heldItem.setItemMeta(meta); - BooksWithoutBorders.sendSuccessMessage(player, "Added lore to item!"); + stringFormatter.displaySuccessMessage(player, Translatable.SUCCESS_LORE_SET); return true; } @Override public List onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String alias, @NotNull String[] arguments) { - //TODO: Figure out if there is a better way to display that an argument is required + String separator = BooksWithoutBorders.getConfiguration().getTitleAuthorSeparator(); List options = new ArrayList<>(); - options.add(""); + options.add("Line1" + separator + "Line2" + separator + "Line3"); return options; } diff --git a/src/main/java/net/knarcraft/bookswithoutborders/command/CommandSetTitle.java b/src/main/java/net/knarcraft/bookswithoutborders/command/CommandSetTitle.java index 291e453..23b5300 100644 --- a/src/main/java/net/knarcraft/bookswithoutborders/command/CommandSetTitle.java +++ b/src/main/java/net/knarcraft/bookswithoutborders/command/CommandSetTitle.java @@ -1,7 +1,9 @@ package net.knarcraft.bookswithoutborders.command; import net.knarcraft.bookswithoutborders.BooksWithoutBorders; +import net.knarcraft.bookswithoutborders.config.translation.Translatable; import net.knarcraft.bookswithoutborders.utility.InventoryHelper; +import net.knarcraft.knarlib.formatting.StringFormatter; import net.knarcraft.knarlib.property.ColorConversion; import net.knarcraft.knarlib.util.ColorHelper; import org.bukkit.Material; @@ -25,13 +27,14 @@ public class CommandSetTitle implements TabExecutor { @Override public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] arguments) { + StringFormatter stringFormatter = BooksWithoutBorders.getStringFormatter(); if (!(sender instanceof Player player)) { - BooksWithoutBorders.sendErrorMessage(sender, "This command can only be used by a player!"); + stringFormatter.displayErrorMessage(sender, Translatable.ERROR_PLAYER_ONLY); return false; } if (arguments.length < 1) { - BooksWithoutBorders.sendErrorMessage(player, "Too few command arguments!"); + stringFormatter.displayErrorMessage(player, Translatable.ERROR_TITLE_EMPTY); return false; } diff --git a/src/main/java/net/knarcraft/bookswithoutborders/config/translation/Formatting.java b/src/main/java/net/knarcraft/bookswithoutborders/config/translation/Formatting.java index 4759965..63c82c3 100644 --- a/src/main/java/net/knarcraft/bookswithoutborders/config/translation/Formatting.java +++ b/src/main/java/net/knarcraft/bookswithoutborders/config/translation/Formatting.java @@ -67,36 +67,6 @@ public enum Formatting implements TranslatableMessage { * The format used when formatting text on a title page */ NEUTRAL_TITLE_PAGE_TEXT_FORMAT, - - /** - * The translation of the copy action - */ - ACTION_COPY, - - /** - * The translation of the clear action - */ - ACTION_CLEAR, - - /** - * The translation of the decrypt action - */ - ACTION_DECRYPT, - - /** - * The translation of the encrypt action - */ - ACTION_ENCRYPT, - - /** - * The translation of the add title page action - */ - ACTION_ADD_TITLE_AUTHOR_PAGE, - - /** - * The translation of the set author action - */ - ACTION_SET_AUTHOR, ; @Override diff --git a/src/main/java/net/knarcraft/bookswithoutborders/config/translation/Translatable.java b/src/main/java/net/knarcraft/bookswithoutborders/config/translation/Translatable.java index 406d49b..34300a2 100644 --- a/src/main/java/net/knarcraft/bookswithoutborders/config/translation/Translatable.java +++ b/src/main/java/net/knarcraft/bookswithoutborders/config/translation/Translatable.java @@ -68,6 +68,16 @@ public enum Translatable implements TranslatableMessage { */ SUCCESS_SET_AUTHOR, + /** + * The success message displayed when a book's generation is successfully changed + */ + SUCCESS_GENERATION_CHANGED, + + /** + * The success message displayed when an item's lore is successfully set + */ + SUCCESS_LORE_SET, + /** * The error to display when the console attempts to run a player-only command */ @@ -83,6 +93,41 @@ public enum Translatable implements TranslatableMessage { */ ERROR_NOT_HOLDING_WRITABLE_BOOK, + /** + * The translation of the copy action + */ + ACTION_COPY, + + /** + * The translation of the clear action + */ + ACTION_CLEAR, + + /** + * The translation of the decrypt action + */ + ACTION_DECRYPT, + + /** + * The translation of the encrypt action + */ + ACTION_ENCRYPT, + + /** + * The translation of the add title page action + */ + ACTION_ADD_TITLE_AUTHOR_PAGE, + + /** + * The translation of the set author action + */ + ACTION_SET_AUTHOR, + + /** + * The translation of the change generation action + */ + ACTION_CHANGE_GENERATION, + /** * The error displayed when running a relevant command while holding one book in each hand */ @@ -227,6 +272,31 @@ public enum Translatable implements TranslatableMessage { * The error displayed when changing a book's author without providing the new author */ ERROR_AUTHOR_BLANK, + + /** + * The error displayed when attempting to change a book's generation without specifying the new generation + */ + ERROR_GENERATION_NOT_SPECIFIED, + + /** + * The error displayed when attempting to change a book's generation, but giving an invalid generation + */ + ERROR_GENERATION_INVALID, + + /** + * The error displayed when attempting to change an item's lore without specifying the new lore + */ + ERROR_LORE_EMPTY, + + /** + * The error displayed when attempting to change the lore of an item without holding an item + */ + ERROR_LORE_NO_ITEM, + + /** + * The error displayed when attempting to change an item's title/display name without specifying the new title/display name + */ + ERROR_TITLE_EMPTY, ; @Override diff --git a/src/main/resources/strings.yml b/src/main/resources/strings.yml index 5cd504c..ac4cf1d 100644 --- a/src/main/resources/strings.yml +++ b/src/main/resources/strings.yml @@ -18,15 +18,18 @@ en: SUCCESS_COST_REMOVED: "Price to create books removed!" SUCCESS_COST_ITEM_SET: "Book creation price set to {quantity} {price}(s)!" SUCCESS_COST_ECONOMY_SET: "Book creation price set to {cost}!" - SUCCESS_BOOKSHELF_DATA_DELETED: "Bookshelf successfully deleted" - SUCCESS_BOOKSHELF_TITLE_SET: "Title successfully saved" - SUCCESS_BOOKSHELF_LORE_SET: "Lore successfully saved" + SUCCESS_BOOKSHELF_DATA_DELETED: "Bookshelf successfully deleted!" + SUCCESS_BOOKSHELF_TITLE_SET: "Title successfully saved!" + SUCCESS_BOOKSHELF_LORE_SET: "Lore successfully saved!" + SUCCESS_GENERATION_CHANGED: "Book generation successfully changed!" + SUCCESS_LORE_SET: "Added lore to item!" ACTION_COPY: "copy" ACTION_CLEAR: "clear" ACTION_DECRYPT: "decrypt" ACTION_ENCRYPT: "encrypt" ACTION_ADD_TITLE_AUTHOR_PAGE: "add an author title page to" ACTION_SET_AUTHOR: "set author" + ACTION_CHANGE_GENERATION: "change generation" ERROR_PLAYER_ONLY: "This command can only be used by a player!" ERROR_NOT_HOLDING_WRITTEN_BOOK: "You must be holding a written book to {action} it!" ERROR_NOT_HOLDING_WRITABLE_BOOK: "You must be holding a writable book to {action} it!" @@ -80,6 +83,11 @@ en: ERROR_BOOKSHELF_NOT_FOUND: "You are not looking at a bookshelf!" ERROR_BOOKSHELF_NOT_REGISTERED: "The block you are looking at is not a registered bookshelf" ERROR_BOOKSHELF_NAME_REQUIRED: "You must name the bookshelf before assigning lore!" + ERROR_GENERATION_NOT_SPECIFIED: "You must specify the new generation for your book!" + ERROR_GENERATION_INVALID: "Invalid book generation specified!" + ERROR_LORE_EMPTY: "You must specify the new lore to set!" + ERROR_LORE_NO_ITEM: "Must be holding an item to set lore!" + ERROR_TITLE_EMPTY: "You must specify the new title/display name to set!" NEUTRAL_COMMANDS_HEADER: | &nBooks without Borders help page&r &e[] = optional, <> = required (see each description for exceptions)