Changes formatting method for all commands
All checks were successful
EpicKnarvik97/Books-Without-Borders/pipeline/head This commit looks good

This commit is contained in:
2025-08-23 13:38:06 +02:00
parent 850e2b3af2
commit dcf6310d16
22 changed files with 176 additions and 235 deletions

View File

@@ -9,7 +9,7 @@ import net.knarcraft.bookswithoutborders.config.translation.CostMessage;
import net.knarcraft.bookswithoutborders.config.translation.Formatting; import net.knarcraft.bookswithoutborders.config.translation.Formatting;
import net.knarcraft.bookswithoutborders.config.translation.Translatable; import net.knarcraft.bookswithoutborders.config.translation.Translatable;
import net.knarcraft.bookswithoutborders.manager.EconomyManager; import net.knarcraft.bookswithoutborders.manager.EconomyManager;
import net.knarcraft.knarlib.formatting.StringFormatter; import net.knarcraft.knarlib.formatting.FormatBuilder;
import net.knarcraft.knarlib.util.TabCompletionHelper; import net.knarcraft.knarlib.util.TabCompletionHelper;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.command.Command; import org.bukkit.command.Command;
@@ -33,8 +33,6 @@ public class CommandBooksWithoutBorders implements TabExecutor {
@Override @Override
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label,
@NotNull String[] arguments) { @NotNull String[] arguments) {
StringFormatter stringFormatter = BooksWithoutBorders.getStringFormatter();
String commands; String commands;
String commandExplanation; String commandExplanation;
@@ -44,16 +42,16 @@ public class CommandBooksWithoutBorders implements TabExecutor {
commands = getCommandInfo(bwbCommand, sender, false); commands = getCommandInfo(bwbCommand, sender, false);
commandExplanation = getCommandExplanation(false); commandExplanation = getCommandExplanation(false);
} else { } else {
stringFormatter.displayErrorMessage(sender, Translatable.ERROR_UNKNOWN_COMMAND); new FormatBuilder(Translatable.ERROR_UNKNOWN_COMMAND).error(sender);
return false; return false;
} }
} else { } else {
commands = getCommands(sender); commands = getCommands(sender);
commandExplanation = getCommandExplanation(true); commandExplanation = getCommandExplanation(true);
} }
stringFormatter.displaySuccessMessage(sender, stringFormatter.replacePlaceholders( new FormatBuilder(Formatting.NEUTRAL_COMMANDS_HEADER).replace("{bookPrice}", getBookPrice()).
Formatting.NEUTRAL_COMMANDS_HEADER, List.of("{bookPrice}", "{commands}", "{commandExplanation}"), replace("{commands}", commands).replace("{commandExplanation}", commandExplanation).
List.of(getBookPrice(), commands, commandExplanation))); success(sender);
return true; return true;
} }
@@ -85,20 +83,18 @@ public class CommandBooksWithoutBorders implements TabExecutor {
return ""; return "";
} }
StringFormatter stringFormatter = BooksWithoutBorders.getStringFormatter();
Material bookPriceType = config.getBookPriceType(); Material bookPriceType = config.getBookPriceType();
double bookPriceQuantity = config.getBookPriceQuantity(); double bookPriceQuantity = config.getBookPriceQuantity();
if (bookPriceType != Material.AIR) { if (bookPriceType != Material.AIR) {
return stringFormatter.replacePlaceholders(Formatting.NEUTRAL_COMMANDS_BOOK_PRICE_ITEM, return new FormatBuilder(Formatting.NEUTRAL_COMMANDS_BOOK_PRICE_ITEM).replace("{quantity}",
List.of("{quantity}", "{type}"), String.valueOf((int) bookPriceQuantity)).replace("{type}", bookPriceType.toString()).build();
List.of(String.valueOf((int) bookPriceQuantity), bookPriceType.toString()));
} else { } else {
EconomyManager economyManager = BooksWithoutBorders.getConfiguration().getEconomyManager(); EconomyManager economyManager = BooksWithoutBorders.getConfiguration().getEconomyManager();
if (economyManager.getEconomy() == null) { if (economyManager.getEconomy() == null) {
return BooksWithoutBorders.getStringFormatter().getUnFormattedColoredMessage(CostMessage.ERROR_VAULT_COST_BUT_UNAVAILABLE) + "\n"; return new FormatBuilder(CostMessage.ERROR_VAULT_COST_BUT_UNAVAILABLE).build() + "\n";
} else { } else {
return stringFormatter.replacePlaceholder(Formatting.NEUTRAL_COMMANDS_BOOK_PRICE_ECO, return new FormatBuilder(Formatting.NEUTRAL_COMMANDS_BOOK_PRICE_ECO).replace("{price}",
"{price}", economyManager.getEconomy().format(bookPriceQuantity)); economyManager.getEconomy().format(bookPriceQuantity)).build();
} }
} }
} }
@@ -144,8 +140,8 @@ public class CommandBooksWithoutBorders implements TabExecutor {
private String getCommandInfo(@NotNull BwBCommand bwBCommand, @NotNull CommandSender sender, boolean summary) { private String getCommandInfo(@NotNull BwBCommand bwBCommand, @NotNull CommandSender sender, boolean summary) {
PluginCommand pluginCommand = BooksWithoutBorders.getInstance().getCommand(bwBCommand.toString()); PluginCommand pluginCommand = BooksWithoutBorders.getInstance().getCommand(bwBCommand.toString());
if (pluginCommand == null) { if (pluginCommand == null) {
BooksWithoutBorders.log(Level.SEVERE, StringFormatter.replacePlaceholder( BooksWithoutBorders.log(Level.SEVERE, new FormatBuilder(StaticMessage.EXCEPTION_COMMAND_NOT_REGISTERED.toString()).
StaticMessage.EXCEPTION_COMMAND_NOT_REGISTERED.toString(), "{command}", bwBCommand.toString())); replace("{command}", bwBCommand.toString()).build());
return ""; return "";
} }
@@ -155,7 +151,6 @@ public class CommandBooksWithoutBorders implements TabExecutor {
return ""; return "";
} }
StringFormatter stringFormatter = BooksWithoutBorders.getStringFormatter();
String description; String description;
String aliases = ""; String aliases = "";
String commandUsage; String commandUsage;
@@ -166,18 +161,18 @@ public class CommandBooksWithoutBorders implements TabExecutor {
} else { } else {
commandUsage = pluginCommand.getUsage().replace("<command>", pluginCommand.getName()); commandUsage = pluginCommand.getUsage().replace("<command>", pluginCommand.getName());
description = pluginCommand.getDescription(); description = pluginCommand.getDescription();
aliases = stringFormatter.replacePlaceholder(Formatting.NEUTRAL_COMMANDS_ALIASES, "{aliases}", aliases = new FormatBuilder(Formatting.NEUTRAL_COMMANDS_ALIASES).replace("{aliases}",
String.join(",", pluginCommand.getAliases())); String.join(",", pluginCommand.getAliases())).build();
} }
String commandDescription = stringFormatter.replacePlaceholders(Formatting.NEUTRAL_COMMANDS_COMMAND, String commandDescription = new FormatBuilder(Formatting.NEUTRAL_COMMANDS_COMMAND).replace("{usage}",
List.of("{usage}", "{description}", "{aliases}"), List.of(commandUsage, description, aliases)); commandUsage).replace("{description}", description).replace("{aliases}", aliases).build();
if (!summary && sender.hasPermission(Permission.ADMIN.toString())) { if (!summary && sender.hasPermission(Permission.ADMIN.toString())) {
if (permission == null) { if (permission == null) {
permission = stringFormatter.getUnFormattedColoredMessage(Formatting.NEUTRAL_COMMANDS_COMMAND_NO_PERMISSION_REQUIRED); permission = new FormatBuilder(Formatting.NEUTRAL_COMMANDS_COMMAND_NO_PERMISSION_REQUIRED).build();
} }
commandDescription += stringFormatter.replacePlaceholder(Formatting.NEUTRAL_COMMANDS_COMMAND_PERMISSION, "{permission}", permission); commandDescription += new FormatBuilder(Formatting.NEUTRAL_COMMANDS_COMMAND_PERMISSION).replace("{permission}", permission).build();
} }
return commandDescription; return commandDescription;
} }
@@ -190,15 +185,10 @@ public class CommandBooksWithoutBorders implements TabExecutor {
*/ */
@NotNull @NotNull
private String getCommandExplanation(boolean summary) { private String getCommandExplanation(boolean summary) {
StringFormatter stringFormatter = BooksWithoutBorders.getStringFormatter();
if (summary) { if (summary) {
return stringFormatter.replacePlaceholders(Formatting.NEUTRAL_COMMANDS_COMMAND, return new FormatBuilder(Formatting.NEUTRAL_COMMANDS_SUMMARY).build();
List.of("{usage}", "{description}", "{aliases}"), List.of("Command", "Usage summary", ""));
} else { } else {
return stringFormatter.replacePlaceholders(Formatting.NEUTRAL_COMMANDS_COMMAND, return new FormatBuilder(Formatting.NEUTRAL_COMMANDS_DESCRIPTION).build();
List.of("{usage}", "{description}", "{aliases}"), List.of("Command and arguments", "Full description",
stringFormatter.replacePlaceholder(Formatting.NEUTRAL_COMMANDS_ALIASES, "{aliases}", "Alias list"))) +
stringFormatter.replacePlaceholder(Formatting.NEUTRAL_COMMANDS_COMMAND_PERMISSION, "{permission}", "Required permission");
} }
} }

View File

@@ -3,7 +3,7 @@ package net.knarcraft.bookswithoutborders.command;
import net.knarcraft.bookswithoutborders.BooksWithoutBorders; import net.knarcraft.bookswithoutborders.BooksWithoutBorders;
import net.knarcraft.bookswithoutborders.config.translation.Translatable; import net.knarcraft.bookswithoutborders.config.translation.Translatable;
import net.knarcraft.bookswithoutborders.utility.InventoryHelper; import net.knarcraft.bookswithoutborders.utility.InventoryHelper;
import net.knarcraft.knarlib.formatting.StringFormatter; import net.knarcraft.knarlib.formatting.FormatBuilder;
import org.bukkit.command.Command; import org.bukkit.command.Command;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.command.TabExecutor; import org.bukkit.command.TabExecutor;
@@ -25,18 +25,14 @@ public class CommandClear implements TabExecutor {
@Override @Override
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label,
@NotNull String[] args) { @NotNull String[] args) {
StringFormatter stringFormatter = BooksWithoutBorders.getStringFormatter();
if (!(sender instanceof Player player)) { if (!(sender instanceof Player player)) {
BooksWithoutBorders.getStringFormatter().displayErrorMessage(sender, Translatable.ERROR_PLAYER_ONLY); new FormatBuilder(Translatable.ERROR_PLAYER_ONLY).error(sender);
return false; return false;
} }
if (InventoryHelper.notHoldingOneWritableBookCheck(player, if (InventoryHelper.notHoldingOneWritableBookCheck(player,
stringFormatter.replacePlaceholder(Translatable.ERROR_NOT_HOLDING_WRITABLE_BOOK, "{action}", new FormatBuilder(Translatable.ERROR_NOT_HOLDING_WRITABLE_BOOK).replace("{action}", Translatable.ACTION_CLEAR).build(),
stringFormatter.getUnFormattedColoredMessage(Translatable.ACTION_CLEAR)), new FormatBuilder(Translatable.ERROR_ONLY_ONE_BOOK).replace("{action}", Translatable.ACTION_CLEAR).build())) {
stringFormatter.replacePlaceholder(Translatable.ERROR_ONLY_ONE_BOOK, "{action}",
stringFormatter.getUnFormattedColoredMessage(Translatable.ACTION_CLEAR)))) {
return false; return false;
} }
@@ -51,7 +47,7 @@ public class CommandClear implements TabExecutor {
// Fallback to cleaning existing metadata // Fallback to cleaning existing metadata
BookMeta bookMeta = (BookMeta) heldBook.getItemMeta(); BookMeta bookMeta = (BookMeta) heldBook.getItemMeta();
if (bookMeta == null) { if (bookMeta == null) {
stringFormatter.displayErrorMessage(sender, Translatable.ERROR_METADATA_MISSING); new FormatBuilder(Translatable.ERROR_METADATA_MISSING).error(sender);
return false; return false;
} }
bookMeta.setPages(""); bookMeta.setPages("");
@@ -60,7 +56,7 @@ public class CommandClear implements TabExecutor {
bookMeta.setTitle(null); bookMeta.setTitle(null);
heldBook.setItemMeta(bookMeta); heldBook.setItemMeta(bookMeta);
} }
stringFormatter.displaySuccessMessage(sender, Translatable.SUCCESS_CLEARED); new FormatBuilder(Translatable.SUCCESS_CLEARED).success(sender);
return true; return true;
} }

View File

@@ -7,7 +7,7 @@ import net.knarcraft.bookswithoutborders.config.translation.Translatable;
import net.knarcraft.bookswithoutborders.utility.BookHelper; import net.knarcraft.bookswithoutborders.utility.BookHelper;
import net.knarcraft.bookswithoutborders.utility.InventoryHelper; import net.knarcraft.bookswithoutborders.utility.InventoryHelper;
import net.knarcraft.bookswithoutborders.utility.TabCompletionTypeHelper; import net.knarcraft.bookswithoutborders.utility.TabCompletionTypeHelper;
import net.knarcraft.knarlib.formatting.StringFormatter; import net.knarcraft.knarlib.formatting.FormatBuilder;
import net.knarcraft.knarlib.util.TabCompletionHelper; import net.knarcraft.knarlib.util.TabCompletionHelper;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.command.Command; import org.bukkit.command.Command;
@@ -30,23 +30,19 @@ public class CommandCopy implements TabExecutor {
@Override @Override
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label,
@NotNull String[] arguments) { @NotNull String[] arguments) {
StringFormatter stringFormatter = BooksWithoutBorders.getStringFormatter();
if (!(sender instanceof Player player)) { if (!(sender instanceof Player player)) {
stringFormatter.displayErrorMessage(sender, Translatable.ERROR_PLAYER_ONLY); new FormatBuilder(Translatable.ERROR_PLAYER_ONLY).error(sender);
return false; return false;
} }
if (InventoryHelper.notHoldingOneWrittenBookCheck(player, if (InventoryHelper.notHoldingOneWrittenBookCheck(player,
stringFormatter.replacePlaceholder(Translatable.ERROR_NOT_HOLDING_WRITTEN_BOOK, "{action}", new FormatBuilder(Translatable.ERROR_NOT_HOLDING_WRITTEN_BOOK).replace("{action}", Translatable.ACTION_COPY).build(),
stringFormatter.getUnFormattedColoredMessage(Translatable.ACTION_COPY)), new FormatBuilder(Translatable.ERROR_ONLY_ONE_BOOK).replace("{action}", Translatable.ACTION_COPY).build())) {
stringFormatter.replacePlaceholder(Translatable.ERROR_ONLY_ONE_BOOK, "{action}",
stringFormatter.getUnFormattedColoredMessage(Translatable.ACTION_COPY)))) {
return false; return false;
} }
if (arguments.length < 1) { if (arguments.length < 1) {
stringFormatter.displayErrorMessage(player, Translatable.ERROR_COPY_COUNT_NOT_SPECIFIED); new FormatBuilder(Translatable.ERROR_COPY_COUNT_NOT_SPECIFIED).error(player);
return false; return false;
} }
@@ -54,12 +50,12 @@ public class CommandCopy implements TabExecutor {
ItemStack heldBook = InventoryHelper.getHeldBook(player, true); ItemStack heldBook = InventoryHelper.getHeldBook(player, true);
int copies = Integer.parseInt(arguments[0]); int copies = Integer.parseInt(arguments[0]);
if (copies <= 0) { if (copies <= 0) {
stringFormatter.displayErrorMessage(player, Translatable.ERROR_COPY_NEGATIVE_AMOUNT); new FormatBuilder(Translatable.ERROR_COPY_NEGATIVE_AMOUNT).error(player);
return false; return false;
} }
return performCopy(copies, player, heldBook); return performCopy(copies, player, heldBook);
} catch (NumberFormatException ignored) { } catch (NumberFormatException ignored) {
stringFormatter.displayErrorMessage(player, Translatable.ERROR_COPY_INVALID_AMOUNT); new FormatBuilder(Translatable.ERROR_COPY_INVALID_AMOUNT).error(player);
return false; return false;
} }
} }
@@ -93,7 +89,7 @@ public class CommandCopy implements TabExecutor {
} }
heldBook.setAmount(heldBook.getAmount() + copies); heldBook.setAmount(heldBook.getAmount() + copies);
BooksWithoutBorders.getStringFormatter().displaySuccessMessage(player, Translatable.SUCCESS_COPY); new FormatBuilder(Translatable.SUCCESS_COPY).success(player);
return true; return true;
} }
} }
@@ -124,13 +120,13 @@ public class CommandCopy implements TabExecutor {
//Copy the vanilla behavior of refusing copying any further //Copy the vanilla behavior of refusing copying any further
if (bookMeta.getGeneration() == BookMeta.Generation.COPY_OF_COPY || if (bookMeta.getGeneration() == BookMeta.Generation.COPY_OF_COPY ||
bookMeta.getGeneration() == BookMeta.Generation.TATTERED) { bookMeta.getGeneration() == BookMeta.Generation.TATTERED) {
BooksWithoutBorders.getStringFormatter().displayErrorMessage(player, Translatable.ERROR_BOOK_COPIED_TOO_FAR); new FormatBuilder(Translatable.ERROR_BOOK_COPIED_TOO_FAR).error(player);
return false; return false;
} }
//Make sure the player can fit the book in their inventory //Make sure the player can fit the book in their inventory
int nextAvailableSlot = player.getInventory().firstEmpty(); int nextAvailableSlot = player.getInventory().firstEmpty();
if (nextAvailableSlot == -1) { if (nextAvailableSlot == -1) {
BooksWithoutBorders.getStringFormatter().displayErrorMessage(player, Translatable.ERROR_INVENTORY_FULL); new FormatBuilder(Translatable.ERROR_INVENTORY_FULL).error(player);
return false; return false;
} }
//Make sure the player can pay for the copying //Make sure the player can pay for the copying

View File

@@ -6,7 +6,7 @@ import net.knarcraft.bookswithoutborders.config.translation.Translatable;
import net.knarcraft.bookswithoutborders.utility.BookHelper; import net.knarcraft.bookswithoutborders.utility.BookHelper;
import net.knarcraft.bookswithoutborders.utility.EncryptionHelper; import net.knarcraft.bookswithoutborders.utility.EncryptionHelper;
import net.knarcraft.bookswithoutborders.utility.InventoryHelper; import net.knarcraft.bookswithoutborders.utility.InventoryHelper;
import net.knarcraft.knarlib.formatting.StringFormatter; import net.knarcraft.knarlib.formatting.FormatBuilder;
import org.bukkit.command.Command; import org.bukkit.command.Command;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.command.TabExecutor; import org.bukkit.command.TabExecutor;
@@ -27,25 +27,21 @@ public class CommandDecrypt implements TabExecutor {
@Override @Override
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label,
@NotNull String[] arguments) { @NotNull String[] arguments) {
StringFormatter stringFormatter = BooksWithoutBorders.getStringFormatter();
if (!(sender instanceof Player player)) { if (!(sender instanceof Player player)) {
stringFormatter.displayErrorMessage(sender, Translatable.ERROR_PLAYER_ONLY); new FormatBuilder(Translatable.ERROR_PLAYER_ONLY).error(sender);
return false; return false;
} }
if (InventoryHelper.notHoldingOneWrittenBookCheck(player, if (InventoryHelper.notHoldingOneWrittenBookCheck(player,
stringFormatter.replacePlaceholder(Translatable.ERROR_NOT_HOLDING_WRITTEN_BOOK, "{action}", new FormatBuilder(Translatable.ERROR_NOT_HOLDING_WRITTEN_BOOK).replace("{action}", Translatable.ACTION_DECRYPT).build(),
stringFormatter.getUnFormattedColoredMessage(Translatable.ACTION_DECRYPT)), new FormatBuilder(Translatable.ERROR_ONLY_ONE_BOOK).replace("{action}", Translatable.ACTION_DECRYPT).build())) {
stringFormatter.replacePlaceholder(Translatable.ERROR_ONLY_ONE_BOOK, "{action}",
stringFormatter.getUnFormattedColoredMessage(Translatable.ACTION_DECRYPT)))) {
return false; return false;
} }
ItemStack heldItem = InventoryHelper.getHeldBook(player, true); ItemStack heldItem = InventoryHelper.getHeldBook(player, true);
BookMeta bookMetadata = (BookMeta) heldItem.getItemMeta(); BookMeta bookMetadata = (BookMeta) heldItem.getItemMeta();
if (bookMetadata == null) { if (bookMetadata == null) {
stringFormatter.displayErrorMessage(sender, Translatable.ERROR_METADATA_MISSING); new FormatBuilder(Translatable.ERROR_METADATA_MISSING).error(sender);
return false; return false;
} }
@@ -54,7 +50,7 @@ public class CommandDecrypt implements TabExecutor {
player.hasPermission(Permission.ADMIN.toString())) { player.hasPermission(Permission.ADMIN.toString())) {
return adminDecrypt(player, bookMetadata); return adminDecrypt(player, bookMetadata);
} else if (arguments.length == 0) { } else if (arguments.length == 0) {
stringFormatter.displayErrorMessage(player, Translatable.ERROR_DECRYPT_MISSING_KEY); new FormatBuilder(Translatable.ERROR_DECRYPT_MISSING_KEY).error(player);
return false; return false;
} }
@@ -66,10 +62,10 @@ public class CommandDecrypt implements TabExecutor {
if (book != null) { if (book != null) {
InventoryHelper.setHeldWrittenBook(player, book); InventoryHelper.setHeldWrittenBook(player, book);
stringFormatter.displaySuccessMessage(player, Translatable.SUCCESS_DECRYPTED); new FormatBuilder(Translatable.SUCCESS_DECRYPTED).success(player);
return true; return true;
} else { } else {
stringFormatter.displayErrorMessage(player, Translatable.ERROR_DECRYPT_FAILED); new FormatBuilder(Translatable.ERROR_DECRYPT_FAILED).error(player);
return false; return false;
} }
} }
@@ -82,11 +78,10 @@ public class CommandDecrypt implements TabExecutor {
* @return <p>True if successful</p> * @return <p>True if successful</p>
*/ */
private boolean adminDecrypt(@NotNull Player player, @NotNull BookMeta bookMetadata) { private boolean adminDecrypt(@NotNull Player player, @NotNull BookMeta bookMetadata) {
StringFormatter stringFormatter = BooksWithoutBorders.getStringFormatter();
ItemStack decrypted = EncryptionHelper.loadEncryptedBook(player, "", false, true); ItemStack decrypted = EncryptionHelper.loadEncryptedBook(player, "", false, true);
if (decrypted != null) { if (decrypted != null) {
InventoryHelper.setHeldWrittenBook(player, decrypted); InventoryHelper.setHeldWrittenBook(player, decrypted);
stringFormatter.displaySuccessMessage(player, Translatable.SUCCESS_AUTO_DECRYPTED); new FormatBuilder(Translatable.SUCCESS_AUTO_DECRYPTED).success(player);
return true; return true;
} else { } else {
return adminDecryptLegacy(player, bookMetadata); return adminDecryptLegacy(player, bookMetadata);
@@ -101,11 +96,10 @@ public class CommandDecrypt implements TabExecutor {
* @return <p>True if successfully decrypted</p> * @return <p>True if successfully decrypted</p>
*/ */
private boolean adminDecryptLegacy(@NotNull Player player, @NotNull BookMeta bookMetadata) { private boolean adminDecryptLegacy(@NotNull Player player, @NotNull BookMeta bookMetadata) {
StringFormatter stringFormatter = BooksWithoutBorders.getStringFormatter();
File encryptedDirectory = new File(BooksWithoutBorders.getConfiguration().getEncryptedBookPath()); File encryptedDirectory = new File(BooksWithoutBorders.getConfiguration().getEncryptedBookPath());
String[] encryptedFiles = encryptedDirectory.list(); String[] encryptedFiles = encryptedDirectory.list();
if (encryptedFiles == null) { if (encryptedFiles == null) {
stringFormatter.displayErrorMessage(player, Translatable.ERROR_ENCRYPTED_DIRECTORY_EMPTY_OR_MISSING); new FormatBuilder(Translatable.ERROR_ENCRYPTED_DIRECTORY_EMPTY_OR_MISSING).error(player);
return false; return false;
} }
@@ -125,13 +119,13 @@ public class CommandDecrypt implements TabExecutor {
ItemStack book = EncryptionHelper.loadEncryptedBookLegacy(player, key, false); ItemStack book = EncryptionHelper.loadEncryptedBookLegacy(player, key, false);
if (book != null) { if (book != null) {
InventoryHelper.setHeldWrittenBook(player, book); InventoryHelper.setHeldWrittenBook(player, book);
stringFormatter.displaySuccessMessage(player, Translatable.SUCCESS_AUTO_DECRYPTED); new FormatBuilder(Translatable.SUCCESS_AUTO_DECRYPTED).success(player);
return true; return true;
} else { } else {
return false; return false;
} }
} else { } else {
stringFormatter.displayErrorMessage(player, Translatable.ERROR_ENCRYPTED_BOOK_UNKNOWN); new FormatBuilder(Translatable.ERROR_ENCRYPTED_BOOK_UNKNOWN).success(player);
return false; return false;
} }
} }

View File

@@ -8,7 +8,7 @@ import net.knarcraft.bookswithoutborders.utility.BookFileHelper;
import net.knarcraft.bookswithoutborders.utility.BookHelper; import net.knarcraft.bookswithoutborders.utility.BookHelper;
import net.knarcraft.bookswithoutborders.utility.InputCleaningHelper; import net.knarcraft.bookswithoutborders.utility.InputCleaningHelper;
import net.knarcraft.bookswithoutborders.utility.TabCompletionTypeHelper; import net.knarcraft.bookswithoutborders.utility.TabCompletionTypeHelper;
import net.knarcraft.knarlib.formatting.StringFormatter; import net.knarcraft.knarlib.formatting.FormatBuilder;
import net.knarcraft.knarlib.util.TabCompletionHelper; import net.knarcraft.knarlib.util.TabCompletionHelper;
import org.bukkit.command.Command; import org.bukkit.command.Command;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
@@ -28,7 +28,7 @@ public class CommandDelete implements TabExecutor {
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label,
@NotNull String[] arguments) { @NotNull String[] arguments) {
if (!(sender instanceof Player)) { if (!(sender instanceof Player)) {
BooksWithoutBorders.getStringFormatter().displayErrorMessage(sender, Translatable.ERROR_PLAYER_ONLY); new FormatBuilder(Translatable.ERROR_PLAYER_ONLY).error(sender);
return false; return false;
} }
@@ -53,7 +53,7 @@ public class CommandDelete implements TabExecutor {
//Delete the file //Delete the file
List<String> availableBooks = BooksWithoutBorders.getAvailableBooks(sender, deletePublic); List<String> availableBooks = BooksWithoutBorders.getAvailableBooks(sender, deletePublic);
if (availableBooks.isEmpty()) { if (availableBooks.isEmpty()) {
BooksWithoutBorders.getStringFormatter().displayErrorMessage(sender, Translatable.ERROR_DELETE_EMPTY); new FormatBuilder(Translatable.ERROR_DELETE_EMPTY).error(sender);
return false; return false;
} }
@@ -71,7 +71,6 @@ public class CommandDelete implements TabExecutor {
* @param isPublic <p>Whether the book to delete is public or not</p> * @param isPublic <p>Whether the book to delete is public or not</p>
*/ */
public void performBookDeletion(@NotNull CommandSender sender, @NotNull String fileName, @NotNull Boolean isPublic) { public void performBookDeletion(@NotNull CommandSender sender, @NotNull String fileName, @NotNull Boolean isPublic) {
StringFormatter stringFormatter = BooksWithoutBorders.getStringFormatter();
//If the file name is an index of the load list, load the book //If the file name is an index of the load list, load the book
try { try {
int loadListIndex = Integer.parseInt(fileName); int loadListIndex = Integer.parseInt(fileName);
@@ -89,20 +88,19 @@ public class CommandDelete implements TabExecutor {
//Send message if no such file could be found //Send message if no such file could be found
if (file == null) { if (file == null) {
stringFormatter.displayErrorMessage(sender, Translatable.ERROR_INCORRECT_FILE_NAME); new FormatBuilder(Translatable.ERROR_INCORRECT_FILE_NAME).error(sender);
return; return;
} }
//Try to delete the file //Try to delete the file
try { try {
if (file.delete()) { if (file.delete()) {
stringFormatter.displaySuccessMessage(sender, new FormatBuilder(Translatable.SUCCESS_DELETED).replace("{file}", fileName).success(sender);
stringFormatter.replacePlaceholder(Translatable.SUCCESS_DELETED, "{file}", fileName));
} else { } else {
stringFormatter.displayErrorMessage(sender, Translatable.ERROR_DELETE_FAILED_SILENT); new FormatBuilder(Translatable.ERROR_DELETE_FAILED_SILENT).error(sender);
} }
} catch (Exception exception) { } catch (Exception exception) {
stringFormatter.displayErrorMessage(sender, Translatable.ERROR_DELETE_FAILED_EXCEPTION); new FormatBuilder(Translatable.ERROR_DELETE_FAILED_EXCEPTION).error(sender);
} }
} }

View File

@@ -1,9 +1,8 @@
package net.knarcraft.bookswithoutborders.command; package net.knarcraft.bookswithoutborders.command;
import net.knarcraft.bookswithoutborders.BooksWithoutBorders;
import net.knarcraft.bookswithoutborders.config.translation.Translatable; import net.knarcraft.bookswithoutborders.config.translation.Translatable;
import net.knarcraft.bookswithoutborders.utility.InventoryHelper; import net.knarcraft.bookswithoutborders.utility.InventoryHelper;
import net.knarcraft.knarlib.formatting.StringFormatter; import net.knarcraft.knarlib.formatting.FormatBuilder;
import org.bukkit.command.Command; import org.bukkit.command.Command;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.command.TabExecutor; import org.bukkit.command.TabExecutor;
@@ -24,20 +23,19 @@ public class CommandDeletePage implements TabExecutor {
@Override @Override
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String s, public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String s,
@NotNull String[] arguments) { @NotNull String[] arguments) {
StringFormatter stringFormatter = BooksWithoutBorders.getStringFormatter();
if (!(sender instanceof Player player)) { if (!(sender instanceof Player player)) {
stringFormatter.displayErrorMessage(sender, Translatable.ERROR_PLAYER_ONLY); new FormatBuilder(Translatable.ERROR_PLAYER_ONLY).error(sender);
return false; return false;
} }
if (arguments.length == 0) { if (arguments.length == 0) {
stringFormatter.displayErrorMessage(sender, Translatable.ERROR_NO_BOOK_PAGE); new FormatBuilder(Translatable.ERROR_NO_BOOK_PAGE).error(sender);
return false; return false;
} }
ItemStack heldBook = InventoryHelper.getHeldBook(player); ItemStack heldBook = InventoryHelper.getHeldBook(player);
if (heldBook == null) { if (heldBook == null) {
stringFormatter.displayErrorMessage(sender, Translatable.ERROR_NOT_HOLDING_ANY_BOOK); new FormatBuilder(Translatable.ERROR_NOT_HOLDING_ANY_BOOK).error(sender);
return false; return false;
} }
@@ -45,19 +43,19 @@ public class CommandDeletePage implements TabExecutor {
try { try {
index = Integer.parseInt(arguments[0]) - 1; index = Integer.parseInt(arguments[0]) - 1;
} catch (NumberFormatException exception) { } catch (NumberFormatException exception) {
stringFormatter.displayErrorMessage(sender, Translatable.ERROR_INVALID_BOOK_PAGE); new FormatBuilder(Translatable.ERROR_INVALID_BOOK_PAGE).error(sender);
return false; return false;
} }
BookMeta bookMeta = (BookMeta) heldBook.getItemMeta(); BookMeta bookMeta = (BookMeta) heldBook.getItemMeta();
if (bookMeta == null) { if (bookMeta == null) {
stringFormatter.displayErrorMessage(sender, Translatable.ERROR_METADATA_MISSING); new FormatBuilder(Translatable.ERROR_METADATA_MISSING).error(sender);
return false; return false;
} }
List<String> pages = new ArrayList<>(bookMeta.getPages()); List<String> pages = new ArrayList<>(bookMeta.getPages());
if (index < 0 || index >= pages.size()) { if (index < 0 || index >= pages.size()) {
stringFormatter.displayErrorMessage(sender, Translatable.ERROR_OUT_OF_RANGE_BOOK_PAGE); new FormatBuilder(Translatable.ERROR_OUT_OF_RANGE_BOOK_PAGE).error(sender);
return false; return false;
} }
@@ -65,7 +63,7 @@ public class CommandDeletePage implements TabExecutor {
bookMeta.setPages(pages); bookMeta.setPages(pages);
heldBook.setItemMeta(bookMeta); heldBook.setItemMeta(bookMeta);
stringFormatter.displaySuccessMessage(sender, Translatable.SUCCESS_PAGE_DELETED); new FormatBuilder(Translatable.SUCCESS_PAGE_DELETED).success(sender);
return true; return true;
} }

View File

@@ -8,7 +8,7 @@ import net.knarcraft.bookswithoutborders.encryption.EncryptionStyle;
import net.knarcraft.bookswithoutborders.state.ItemSlot; import net.knarcraft.bookswithoutborders.state.ItemSlot;
import net.knarcraft.bookswithoutborders.utility.EncryptionHelper; import net.knarcraft.bookswithoutborders.utility.EncryptionHelper;
import net.knarcraft.bookswithoutborders.utility.InventoryHelper; import net.knarcraft.bookswithoutborders.utility.InventoryHelper;
import net.knarcraft.knarlib.formatting.StringFormatter; import net.knarcraft.knarlib.formatting.FormatBuilder;
import net.knarcraft.knarlib.util.TabCompletionHelper; import net.knarcraft.knarlib.util.TabCompletionHelper;
import org.bukkit.command.Command; import org.bukkit.command.Command;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
@@ -30,9 +30,8 @@ public class CommandEncrypt implements TabExecutor {
@Override @Override
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label,
@NotNull String[] arguments) { @NotNull String[] arguments) {
StringFormatter stringFormatter = BooksWithoutBorders.getStringFormatter();
if (performPreChecks(sender, arguments, 1, 2, if (performPreChecks(sender, arguments, 1, 2,
stringFormatter.getUnFormattedColoredMessage(Translatable.ERROR_ENCRYPT_NO_KEY)) == null) { new FormatBuilder(Translatable.ERROR_ENCRYPT_NO_KEY).build()) == null) {
return false; return false;
} }
@@ -63,38 +62,35 @@ public class CommandEncrypt implements TabExecutor {
@Nullable @Nullable
protected BookMeta performPreChecks(@NotNull CommandSender sender, @NotNull String[] arguments, protected BookMeta performPreChecks(@NotNull CommandSender sender, @NotNull String[] arguments,
int necessaryArguments, int optionalArguments, @NotNull String missingArgumentsError) { int necessaryArguments, int optionalArguments, @NotNull String missingArgumentsError) {
StringFormatter stringFormatter = BooksWithoutBorders.getStringFormatter();
if (!(sender instanceof Player player)) { if (!(sender instanceof Player player)) {
stringFormatter.displayErrorMessage(sender, Translatable.ERROR_PLAYER_ONLY); new FormatBuilder(Translatable.ERROR_PLAYER_ONLY).error(sender);
return null; return null;
} }
if (InventoryHelper.notHoldingOneWrittenBookCheck(player, if (InventoryHelper.notHoldingOneWrittenBookCheck(player,
stringFormatter.replacePlaceholder(Translatable.ERROR_NOT_HOLDING_WRITTEN_BOOK, "{action}", new FormatBuilder(Translatable.ERROR_NOT_HOLDING_WRITTEN_BOOK).replace("{action}", Translatable.ACTION_ENCRYPT).build(),
stringFormatter.getUnFormattedColoredMessage(Translatable.ACTION_ENCRYPT)), new FormatBuilder(Translatable.ERROR_ONLY_ONE_BOOK).replace("{action}", Translatable.ACTION_ENCRYPT).build())) {
stringFormatter.replacePlaceholder(Translatable.ERROR_ONLY_ONE_BOOK, "{action}",
stringFormatter.getUnFormattedColoredMessage(Translatable.ACTION_ENCRYPT)))) {
return null; return null;
} }
int argumentCount = arguments.length; int argumentCount = arguments.length;
if (argumentCount < necessaryArguments) { if (argumentCount < necessaryArguments) {
stringFormatter.displayErrorMessage(player, missingArgumentsError); new FormatBuilder(missingArgumentsError).error(player);
return null; return null;
} }
if (argumentCount > necessaryArguments + optionalArguments) { if (argumentCount > necessaryArguments + optionalArguments) {
stringFormatter.displayErrorMessage(player, Translatable.ERROR_TOO_MANY_ARGUMENTS_COMMAND); new FormatBuilder(Translatable.ERROR_TOO_MANY_ARGUMENTS_COMMAND).error(player);
return null; return null;
} }
ItemStack heldBook = InventoryHelper.getHeldBook(player, true); ItemStack heldBook = InventoryHelper.getHeldBook(player, true);
BookMeta bookMetadata = (BookMeta) heldBook.getItemMeta(); BookMeta bookMetadata = (BookMeta) heldBook.getItemMeta();
if (bookMetadata == null) { if (bookMetadata == null) {
stringFormatter.displayErrorMessage(player, Translatable.ERROR_METADATA_MISSING); new FormatBuilder(Translatable.ERROR_METADATA_MISSING).error(player);
return null; return null;
} }
if (!bookMetadata.hasPages()) { if (!bookMetadata.hasPages()) {
stringFormatter.displayErrorMessage(player, Translatable.ERROR_ENCRYPT_EMPTY); new FormatBuilder(Translatable.ERROR_ENCRYPT_EMPTY).error(player);
return null; return null;
} }
return bookMetadata; return bookMetadata;

View File

@@ -1,10 +1,9 @@
package net.knarcraft.bookswithoutborders.command; package net.knarcraft.bookswithoutborders.command;
import net.knarcraft.bookswithoutborders.BooksWithoutBorders;
import net.knarcraft.bookswithoutborders.config.translation.Translatable; import net.knarcraft.bookswithoutborders.config.translation.Translatable;
import net.knarcraft.bookswithoutborders.utility.BookFormatter; import net.knarcraft.bookswithoutborders.utility.BookFormatter;
import net.knarcraft.bookswithoutborders.utility.InventoryHelper; import net.knarcraft.bookswithoutborders.utility.InventoryHelper;
import net.knarcraft.knarlib.formatting.StringFormatter; import net.knarcraft.knarlib.formatting.FormatBuilder;
import org.bukkit.command.Command; import org.bukkit.command.Command;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.command.TabExecutor; import org.bukkit.command.TabExecutor;
@@ -24,29 +23,27 @@ public class CommandFormat implements TabExecutor {
@Override @Override
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label,
@NotNull String[] arguments) { @NotNull String[] arguments) {
StringFormatter stringFormatter = BooksWithoutBorders.getStringFormatter();
if (!(sender instanceof Player player)) { if (!(sender instanceof Player player)) {
stringFormatter.displayErrorMessage(sender, Translatable.ERROR_PLAYER_ONLY); new FormatBuilder(Translatable.ERROR_PLAYER_ONLY).error(sender);
return false; return false;
} }
ItemStack heldBook = InventoryHelper.getHeldBook(player); ItemStack heldBook = InventoryHelper.getHeldBook(player);
if (heldBook == null) { if (heldBook == null) {
stringFormatter.displayErrorMessage(sender, Translatable.ERROR_NOT_HOLDING_ANY_BOOK); new FormatBuilder(Translatable.ERROR_NOT_HOLDING_ANY_BOOK).error(sender);
return false; return false;
} }
BookMeta meta = (BookMeta) heldBook.getItemMeta(); BookMeta meta = (BookMeta) heldBook.getItemMeta();
if (meta == null) { if (meta == null) {
stringFormatter.displayErrorMessage(player, Translatable.ERROR_METADATA_MISSING); new FormatBuilder(Translatable.ERROR_METADATA_MISSING).error(player);
return false; return false;
} }
heldBook.setItemMeta(BookFormatter.formatPages(meta)); heldBook.setItemMeta(BookFormatter.formatPages(meta));
stringFormatter.displaySuccessMessage(sender, Translatable.SUCCESS_FORMATTED); new FormatBuilder(Translatable.SUCCESS_FORMATTED).success(sender);
return true; return true;
} }

View File

@@ -7,7 +7,7 @@ import net.knarcraft.bookswithoutborders.gui.PagedBookIndex;
import net.knarcraft.bookswithoutborders.utility.BookLoader; import net.knarcraft.bookswithoutborders.utility.BookLoader;
import net.knarcraft.bookswithoutborders.utility.InputCleaningHelper; import net.knarcraft.bookswithoutborders.utility.InputCleaningHelper;
import net.knarcraft.bookswithoutborders.utility.TabCompletionTypeHelper; import net.knarcraft.bookswithoutborders.utility.TabCompletionTypeHelper;
import net.knarcraft.knarlib.formatting.StringFormatter; import net.knarcraft.knarlib.formatting.FormatBuilder;
import net.knarcraft.knarlib.util.TabCompletionHelper; import net.knarcraft.knarlib.util.TabCompletionHelper;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.Server; import org.bukkit.Server;
@@ -33,7 +33,7 @@ public class CommandGive implements TabExecutor {
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label,
@NotNull String[] arguments) { @NotNull String[] arguments) {
if (!(sender instanceof Player)) { if (!(sender instanceof Player)) {
BooksWithoutBorders.getStringFormatter().displayErrorMessage(sender, Translatable.ERROR_PLAYER_ONLY); new FormatBuilder(Translatable.ERROR_PLAYER_ONLY).error(sender);
return false; return false;
} }
@@ -56,9 +56,8 @@ public class CommandGive implements TabExecutor {
return true; return true;
} }
StringFormatter stringFormatter = BooksWithoutBorders.getStringFormatter();
if (arguments.length == 1) { if (arguments.length == 1) {
stringFormatter.displayErrorMessage(sender, GiveMessage.ERROR_GIVE_NO_RECIPIENT); new FormatBuilder(GiveMessage.ERROR_GIVE_NO_RECIPIENT).error(sender);
return false; return false;
} }
@@ -132,7 +131,6 @@ public class CommandGive implements TabExecutor {
*/ */
private boolean parseArgumentsAndContinue(@NotNull String[] arguments, @NotNull CommandSender sender, private boolean parseArgumentsAndContinue(@NotNull String[] arguments, @NotNull CommandSender sender,
@NotNull String directory, boolean givePublic) { @NotNull String directory, boolean givePublic) {
StringFormatter stringFormatter = BooksWithoutBorders.getStringFormatter();
int argumentCount = arguments.length; int argumentCount = arguments.length;
//Organize and parse input //Organize and parse input
String bookIdentifier; String bookIdentifier;
@@ -163,13 +161,13 @@ public class CommandGive implements TabExecutor {
//Try and find the target player //Try and find the target player
Player receivingPlayer = booksWithoutBorders.getServer().getPlayerExact(receivingPlayerName); Player receivingPlayer = booksWithoutBorders.getServer().getPlayerExact(receivingPlayerName);
if (receivingPlayer == null) { if (receivingPlayer == null) {
stringFormatter.displayErrorMessage(sender, GiveMessage.ERROR_GIVE_RECIPIENT_UNKNOWN); new FormatBuilder(GiveMessage.ERROR_GIVE_RECIPIENT_UNKNOWN).error(sender);
return false; return false;
} }
//Make sure the receiver is able to fit the book //Make sure the receiver is able to fit the book
if (receivingPlayer.getInventory().firstEmpty() == -1) { if (receivingPlayer.getInventory().firstEmpty() == -1) {
stringFormatter.displayErrorMessage(sender, GiveMessage.ERROR_GIVE_RECIPIENT_FULL); new FormatBuilder(GiveMessage.ERROR_GIVE_RECIPIENT_FULL).error(sender);
return false; return false;
} }
@@ -192,17 +190,16 @@ public class CommandGive implements TabExecutor {
private boolean loadAndGiveBook(@NotNull String bookIdentifier, @NotNull CommandSender sender, private boolean loadAndGiveBook(@NotNull String bookIdentifier, @NotNull CommandSender sender,
@NotNull Player receivingPlayer, boolean isSigned, @NotNull String folder, @NotNull Player receivingPlayer, boolean isSigned, @NotNull String folder,
@NotNull String copies) throws NumberFormatException { @NotNull String copies) throws NumberFormatException {
StringFormatter stringFormatter = BooksWithoutBorders.getStringFormatter();
String bookToLoad = InputCleaningHelper.cleanString(bookIdentifier); String bookToLoad = InputCleaningHelper.cleanString(bookIdentifier);
ItemStack newBook = BookLoader.loadBook(sender, bookToLoad, isSigned, folder, Integer.parseInt(copies)); ItemStack newBook = BookLoader.loadBook(sender, bookToLoad, isSigned, folder, Integer.parseInt(copies));
if (newBook != null) { if (newBook != null) {
//NOTE: As this method bypasses cost, it should also bypass the generation change //NOTE: As this method bypasses cost, it should also bypass the generation change
receivingPlayer.getInventory().addItem(newBook); receivingPlayer.getInventory().addItem(newBook);
stringFormatter.displaySuccessMessage(sender, GiveMessage.SUCCESS_GIVE_SENT); new FormatBuilder(GiveMessage.SUCCESS_GIVE_SENT).success(sender);
stringFormatter.displaySuccessMessage(receivingPlayer, GiveMessage.SUCCESS_GIVE_RECEIVED); new FormatBuilder(GiveMessage.SUCCESS_GIVE_RECEIVED).success(receivingPlayer);
return true; return true;
} else { } else {
stringFormatter.displayErrorMessage(sender, GiveMessage.ERROR_GIVE_LOAD_FAILED); new FormatBuilder(GiveMessage.ERROR_GIVE_LOAD_FAILED).error(sender);
return false; return false;
} }
} }

View File

@@ -1,9 +1,8 @@
package net.knarcraft.bookswithoutborders.command; package net.knarcraft.bookswithoutborders.command;
import net.knarcraft.bookswithoutborders.BooksWithoutBorders;
import net.knarcraft.bookswithoutborders.config.translation.Translatable; import net.knarcraft.bookswithoutborders.config.translation.Translatable;
import net.knarcraft.bookswithoutborders.encryption.EncryptionStyle; import net.knarcraft.bookswithoutborders.encryption.EncryptionStyle;
import net.knarcraft.knarlib.formatting.StringFormatter; import net.knarcraft.knarlib.formatting.FormatBuilder;
import org.bukkit.command.Command; import org.bukkit.command.Command;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.command.TabExecutor; import org.bukkit.command.TabExecutor;
@@ -21,14 +20,13 @@ public class CommandGroupEncrypt extends CommandEncrypt implements TabExecutor {
@Override @Override
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label,
@NotNull String[] arguments) { @NotNull String[] arguments) {
StringFormatter stringFormatter = BooksWithoutBorders.getStringFormatter();
if (!(sender instanceof Player player)) { if (!(sender instanceof Player player)) {
stringFormatter.displayErrorMessage(sender, Translatable.ERROR_PLAYER_ONLY); new FormatBuilder(Translatable.ERROR_PLAYER_ONLY).error(sender);
return false; return false;
} }
BookMeta bookMetadata = performPreChecks(sender, arguments, 2, 1, BookMeta bookMetadata = performPreChecks(sender, arguments, 2, 1,
stringFormatter.getUnFormattedColoredMessage(Translatable.ERROR_GROUP_ENCRYPT_ARGUMENTS_MISSING)); new FormatBuilder(Translatable.ERROR_GROUP_ENCRYPT_ARGUMENTS_MISSING).build());
if (bookMetadata == null) { if (bookMetadata == null) {
return false; return false;
@@ -37,7 +35,7 @@ public class CommandGroupEncrypt extends CommandEncrypt implements TabExecutor {
//Check if book is already group encrypted //Check if book is already group encrypted
List<String> lore = bookMetadata.getLore(); List<String> lore = bookMetadata.getLore();
if (bookMetadata.hasLore() && lore != null && lore.get(0).contains(" encrypted]")) { if (bookMetadata.hasLore() && lore != null && lore.get(0).contains(" encrypted]")) {
stringFormatter.displayErrorMessage(sender, Translatable.ERROR_GROUP_ENCRYPTED_ALREADY); new FormatBuilder(Translatable.ERROR_GROUP_ENCRYPTED_ALREADY).error(sender);
return false; return false;
} }

View File

@@ -6,7 +6,7 @@ import net.knarcraft.bookswithoutborders.gui.PagedBookIndex;
import net.knarcraft.bookswithoutborders.utility.BookLoader; import net.knarcraft.bookswithoutborders.utility.BookLoader;
import net.knarcraft.bookswithoutborders.utility.InputCleaningHelper; import net.knarcraft.bookswithoutborders.utility.InputCleaningHelper;
import net.knarcraft.bookswithoutborders.utility.TabCompletionTypeHelper; import net.knarcraft.bookswithoutborders.utility.TabCompletionTypeHelper;
import net.knarcraft.knarlib.formatting.StringFormatter; import net.knarcraft.knarlib.formatting.FormatBuilder;
import net.knarcraft.knarlib.util.TabCompletionHelper; import net.knarcraft.knarlib.util.TabCompletionHelper;
import org.bukkit.command.Command; import org.bukkit.command.Command;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
@@ -41,14 +41,13 @@ public class CommandLoad implements TabExecutor {
*/ */
public boolean loadBook(@NotNull CommandSender sender, @NotNull String[] arguments, @NotNull String directory, public boolean loadBook(@NotNull CommandSender sender, @NotNull String[] arguments, @NotNull String directory,
boolean loadPublic, @NotNull String commandName) { boolean loadPublic, @NotNull String commandName) {
StringFormatter stringFormatter = BooksWithoutBorders.getStringFormatter();
if (!(sender instanceof Player player)) { if (!(sender instanceof Player player)) {
stringFormatter.displayErrorMessage(sender, Translatable.ERROR_PLAYER_ONLY); new FormatBuilder(Translatable.ERROR_PLAYER_ONLY).error(sender);
return false; return false;
} }
if (player.getInventory().firstEmpty() == -1) { if (player.getInventory().firstEmpty() == -1) {
stringFormatter.displayErrorMessage(player, Translatable.ERROR_INVENTORY_FULL); new FormatBuilder(Translatable.ERROR_INVENTORY_FULL).error(player);
return false; return false;
} }
@@ -156,7 +155,6 @@ public class CommandLoad implements TabExecutor {
*/ */
private boolean loadBook(@NotNull Player player, boolean loadPublic, @NotNull String bookIdentifier, private boolean loadBook(@NotNull Player player, boolean loadPublic, @NotNull String bookIdentifier,
boolean isSigned, @NotNull String directory, int copies) { boolean isSigned, @NotNull String directory, int copies) {
StringFormatter stringFormatter = BooksWithoutBorders.getStringFormatter();
BooksWithoutBorders.updateBooks(player, loadPublic); BooksWithoutBorders.updateBooks(player, loadPublic);
String bookToLoad = InputCleaningHelper.cleanString(bookIdentifier); String bookToLoad = InputCleaningHelper.cleanString(bookIdentifier);
@@ -165,10 +163,10 @@ public class CommandLoad implements TabExecutor {
ItemStack newBook = BookLoader.loadBook(player, bookToLoad, isSigned, directory, copies); ItemStack newBook = BookLoader.loadBook(player, bookToLoad, isSigned, directory, copies);
if (newBook != null) { if (newBook != null) {
player.getInventory().addItem(newBook); player.getInventory().addItem(newBook);
stringFormatter.displaySuccessMessage(player, Translatable.SUCCESS_BOOK_LOADED); new FormatBuilder(Translatable.SUCCESS_BOOK_LOADED).success(player);
return true; return true;
} else { } else {
stringFormatter.displayErrorMessage(player, Translatable.ERROR_LOAD_FAILED); new FormatBuilder(Translatable.ERROR_LOAD_FAILED).error(player);
return false; return false;
} }
} }

View File

@@ -5,7 +5,7 @@ import net.knarcraft.bookswithoutborders.config.StaticMessage;
import net.knarcraft.bookswithoutborders.config.translation.Translatable; import net.knarcraft.bookswithoutborders.config.translation.Translatable;
import net.knarcraft.bookswithoutborders.container.MigrationRequest; import net.knarcraft.bookswithoutborders.container.MigrationRequest;
import net.knarcraft.bookswithoutborders.thread.MigrationQueueThread; import net.knarcraft.bookswithoutborders.thread.MigrationQueueThread;
import net.knarcraft.knarlib.formatting.StringFormatter; import net.knarcraft.knarlib.formatting.FormatBuilder;
import org.bukkit.command.Command; import org.bukkit.command.Command;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.command.TabExecutor; import org.bukkit.command.TabExecutor;
@@ -27,13 +27,12 @@ public class CommandMigrate implements TabExecutor {
@Override @Override
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String s, public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String s,
@NotNull String[] arguments) { @NotNull String[] arguments) {
StringFormatter stringFormatter = BooksWithoutBorders.getStringFormatter();
if (!(sender instanceof Player player)) { if (!(sender instanceof Player player)) {
BooksWithoutBorders.getStringFormatter().displayErrorMessage(sender, Translatable.ERROR_PLAYER_ONLY); new FormatBuilder(Translatable.ERROR_PLAYER_ONLY).error(sender);
return false; return false;
} }
File bookDirectory = new File(BooksWithoutBorders.getConfiguration().getBookFolder()); File bookDirectory = new File(BooksWithoutBorders.getConfiguration().getBookFolder());
stringFormatter.displaySuccessMessage(player, Translatable.SUCCESS_MIGRATION_STARTED); new FormatBuilder(Translatable.SUCCESS_MIGRATION_STARTED).neutral(player);
Queue<MigrationRequest> filesToMigrate = new LinkedList<>(); Queue<MigrationRequest> filesToMigrate = new LinkedList<>();
findFilesToMigrate(bookDirectory, filesToMigrate, player); findFilesToMigrate(bookDirectory, filesToMigrate, player);
BooksWithoutBorders.getMigrationQueue().addAll(filesToMigrate); BooksWithoutBorders.getMigrationQueue().addAll(filesToMigrate);
@@ -62,8 +61,8 @@ public class CommandMigrate implements TabExecutor {
private void findFilesToMigrate(@NotNull File folder, @NotNull Queue<MigrationRequest> queue, @NotNull Player player) { private void findFilesToMigrate(@NotNull File folder, @NotNull Queue<MigrationRequest> queue, @NotNull Player player) {
File[] files = folder.listFiles(); File[] files = folder.listFiles();
if (files == null) { if (files == null) {
BooksWithoutBorders.log(Level.WARNING, StringFormatter.replacePlaceholder( BooksWithoutBorders.log(Level.WARNING, new FormatBuilder(StaticMessage.EXCEPTION_DIRECTORY_UNAVAILABLE.toString()).
StaticMessage.EXCEPTION_DIRECTORY_UNAVAILABLE.toString(), "{folder}", folder.getName())); replace("{folder}", folder.getName()).build());
return; return;
} }
for (File file : files) { for (File file : files) {

View File

@@ -2,7 +2,7 @@ package net.knarcraft.bookswithoutborders.command;
import net.knarcraft.bookswithoutborders.BooksWithoutBorders; import net.knarcraft.bookswithoutborders.BooksWithoutBorders;
import net.knarcraft.bookswithoutborders.config.translation.Translatable; import net.knarcraft.bookswithoutborders.config.translation.Translatable;
import net.knarcraft.knarlib.formatting.StringFormatter; import net.knarcraft.knarlib.formatting.FormatBuilder;
import org.bukkit.command.Command; import org.bukkit.command.Command;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.command.TabExecutor; import org.bukkit.command.TabExecutor;
@@ -19,15 +19,14 @@ public class CommandReload implements TabExecutor {
@Override @Override
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label,
@NotNull String[] arguments) { @NotNull String[] arguments) {
StringFormatter stringFormatter = BooksWithoutBorders.getStringFormatter();
// Reload books // Reload books
BooksWithoutBorders.clearBookData(); BooksWithoutBorders.clearBookData();
BooksWithoutBorders.updateBooks(sender, true); BooksWithoutBorders.updateBooks(sender, true);
if (BooksWithoutBorders.getConfiguration().loadConfig()) { if (BooksWithoutBorders.getConfiguration().loadConfig()) {
stringFormatter.displaySuccessMessage(sender, Translatable.SUCCESS_RELOADED); new FormatBuilder(Translatable.SUCCESS_RELOADED).success(sender);
} else { } else {
stringFormatter.displayErrorMessage(sender, Translatable.ERROR_RELOAD_FAILED); new FormatBuilder(Translatable.ERROR_RELOAD_FAILED).error(sender);
} }
return true; return true;
} }

View File

@@ -12,7 +12,7 @@ import net.knarcraft.bookswithoutborders.utility.BookFileHelper;
import net.knarcraft.bookswithoutborders.utility.BookHelper; import net.knarcraft.bookswithoutborders.utility.BookHelper;
import net.knarcraft.bookswithoutborders.utility.BookToFromTextHelper; import net.knarcraft.bookswithoutborders.utility.BookToFromTextHelper;
import net.knarcraft.bookswithoutborders.utility.InventoryHelper; import net.knarcraft.bookswithoutborders.utility.InventoryHelper;
import net.knarcraft.knarlib.formatting.StringFormatter; import net.knarcraft.knarlib.formatting.FormatBuilder;
import org.bukkit.command.Command; import org.bukkit.command.Command;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.command.TabExecutor; import org.bukkit.command.TabExecutor;
@@ -49,9 +49,8 @@ public class CommandSave implements TabExecutor {
*/ */
protected boolean saveHeldBook(@NotNull CommandSender sender, @NotNull String[] arguments, boolean savePublic, protected boolean saveHeldBook(@NotNull CommandSender sender, @NotNull String[] arguments, boolean savePublic,
@NotNull String command) { @NotNull String command) {
StringFormatter stringFormatter = BooksWithoutBorders.getStringFormatter();
if (!(sender instanceof Player player)) { if (!(sender instanceof Player player)) {
stringFormatter.displayErrorMessage(sender, Translatable.ERROR_PLAYER_ONLY); new FormatBuilder(Translatable.ERROR_PLAYER_ONLY).error(sender);
return false; return false;
} }
@@ -61,7 +60,7 @@ public class CommandSave implements TabExecutor {
saveBook(player, heldBook, duplicate, savePublic, command); saveBook(player, heldBook, duplicate, savePublic, command);
return true; return true;
} else { } else {
stringFormatter.displayErrorMessage(sender, Translatable.ERROR_NOT_HOLDING_ANY_BOOK); new FormatBuilder(Translatable.ERROR_NOT_HOLDING_ANY_BOOK).error(sender);
return false; return false;
} }
} }
@@ -77,10 +76,9 @@ public class CommandSave implements TabExecutor {
*/ */
public void saveBook(@NotNull Player player, @NotNull ItemStack heldBook, boolean overwrite, public void saveBook(@NotNull Player player, @NotNull ItemStack heldBook, boolean overwrite,
boolean saveToPublicFolder, @NotNull String command) { boolean saveToPublicFolder, @NotNull String command) {
StringFormatter stringFormatter = BooksWithoutBorders.getStringFormatter();
BookMeta book = (BookMeta) heldBook.getItemMeta(); BookMeta book = (BookMeta) heldBook.getItemMeta();
if (book == null) { if (book == null) {
stringFormatter.displayErrorMessage(player, Translatable.ERROR_METADATA_MISSING); new FormatBuilder(Translatable.ERROR_METADATA_MISSING).error(player);
return; return;
} }
@@ -96,7 +94,7 @@ public class CommandSave implements TabExecutor {
String savePath = BookHelper.getBookDirectoryPathString(saveToPublicFolder ? String savePath = BookHelper.getBookDirectoryPathString(saveToPublicFolder ?
BookDirectory.PUBLIC : BookDirectory.PLAYER, player); BookDirectory.PUBLIC : BookDirectory.PLAYER, player);
if (savePath == null) { if (savePath == null) {
stringFormatter.displayErrorMessage(player, SaveMessage.ERROR_SAVE_INVALID_PATH); new FormatBuilder(SaveMessage.ERROR_SAVE_INVALID_PATH).error(player);
return; return;
} }
@@ -105,14 +103,14 @@ public class CommandSave implements TabExecutor {
try { try {
fileName = BookHelper.getBookFile(book, player, saveToPublicFolder); fileName = BookHelper.getBookFile(book, player, saveToPublicFolder);
} catch (IllegalArgumentException exception) { } catch (IllegalArgumentException exception) {
stringFormatter.displayErrorMessage(player, exception.getMessage()); new FormatBuilder(exception.getMessage()).error(player);
return; return;
} }
//Make sure the used folders exist //Make sure the used folders exist
File file = new File(savePath); File file = new File(savePath);
if (!file.exists() && !file.mkdir()) { if (!file.exists() && !file.mkdir()) {
stringFormatter.displayErrorMessage(player, SaveMessage.ERROR_SAVE_FILE_SYSTEM_ERROR); new FormatBuilder(SaveMessage.ERROR_SAVE_FILE_SYSTEM_ERROR).error(player);
return; return;
} }
@@ -128,8 +126,7 @@ public class CommandSave implements TabExecutor {
//Update the relevant book list //Update the relevant book list
BooksWithoutBorders.updateBooks(player, saveToPublicFolder); BooksWithoutBorders.updateBooks(player, saveToPublicFolder);
stringFormatter.displaySuccessMessage(player, new FormatBuilder(SaveMessage.SUCCESS_SAVED).replace("{fileName}", newName).success(player);
stringFormatter.replacePlaceholder(SaveMessage.SUCCESS_SAVED, "{fileName}", newName));
} catch (IOException exception) { } catch (IOException exception) {
BooksWithoutBorders.log(Level.SEVERE, StaticMessage.EXCEPTION_SAVE_BOOK_FAILED.toString()); BooksWithoutBorders.log(Level.SEVERE, StaticMessage.EXCEPTION_SAVE_BOOK_FAILED.toString());
} }
@@ -161,10 +158,9 @@ public class CommandSave implements TabExecutor {
private String checkDuplicates(@NotNull Player player, @NotNull File directory, @NotNull String fileName, private String checkDuplicates(@NotNull Player player, @NotNull File directory, @NotNull String fileName,
@NotNull String command, @NotNull String separator, int duplicateLimit, @NotNull String command, @NotNull String separator, int duplicateLimit,
boolean overwrite) { boolean overwrite) {
StringFormatter stringFormatter = BooksWithoutBorders.getStringFormatter();
File[] foundFiles = directory.listFiles(); File[] foundFiles = directory.listFiles();
if (foundFiles == null) { if (foundFiles == null) {
stringFormatter.displayErrorMessage(player, SaveMessage.ERROR_SAVE_FILE_SYSTEM_ERROR); new FormatBuilder(SaveMessage.ERROR_SAVE_FILE_SYSTEM_ERROR).error(player);
return null; return null;
} }
@@ -178,23 +174,19 @@ public class CommandSave implements TabExecutor {
String fullCommand = "/" + command + " true"; String fullCommand = "/" + command + " true";
boolean isUnnamed = fileName.contains(stringFormatter.getUnFormattedColoredMessage( boolean isUnnamed = fileName.contains(new FormatBuilder(Formatting.NEUTRAL_UNKNOWN_TITLE).build() + separator);
Formatting.NEUTRAL_UNKNOWN_TITLE) + separator);
// Skip duplicate unnamed book saving // Skip duplicate unnamed book saving
if (!isUnnamed && !overwrite) { if (!isUnnamed && !overwrite) {
stringFormatter.displayErrorMessage(player, SaveMessage.ERROR_SAVE_DUPLICATE_NAMED); new FormatBuilder(SaveMessage.ERROR_SAVE_DUPLICATE_NAMED).error(player);
stringFormatter.displayErrorMessage(player, stringFormatter.replacePlaceholder( new FormatBuilder(SaveMessage.ERROR_SAVE_OVERWRITE_REQUIRED).replace("{command}", fullCommand).error(player);
SaveMessage.ERROR_SAVE_OVERWRITE_REQUIRED, "{command}", fullCommand));
return null; return null;
} }
// Skip if duplicate limit is reached // Skip if duplicate limit is reached
if (foundDuplicates > duplicateLimit) { if (foundDuplicates > duplicateLimit) {
stringFormatter.displayErrorMessage(player, stringFormatter.replacePlaceholder( new FormatBuilder(SaveMessage.ERROR_SAVE_DUPLICATE_UNNAMED).replace("{fileName}", fileName).error(player);
SaveMessage.ERROR_SAVE_DUPLICATE_UNNAMED, "{fileName}", fileName)); new FormatBuilder(SaveMessage.ERROR_SAVE_OVERWRITE_REQUIRED).replace("{command}", fullCommand).error(player);
stringFormatter.displayErrorMessage(player, stringFormatter.replacePlaceholder(
SaveMessage.ERROR_SAVE_OVERWRITE_REQUIRED, "{command}", fullCommand));
return null; return null;
} }

View File

@@ -1,10 +1,9 @@
package net.knarcraft.bookswithoutborders.command; package net.knarcraft.bookswithoutborders.command;
import net.knarcraft.bookswithoutborders.BooksWithoutBorders;
import net.knarcraft.bookswithoutborders.config.translation.Translatable; import net.knarcraft.bookswithoutborders.config.translation.Translatable;
import net.knarcraft.bookswithoutborders.state.ItemSlot; import net.knarcraft.bookswithoutborders.state.ItemSlot;
import net.knarcraft.bookswithoutborders.utility.InventoryHelper; import net.knarcraft.bookswithoutborders.utility.InventoryHelper;
import net.knarcraft.knarlib.formatting.StringFormatter; import net.knarcraft.knarlib.formatting.FormatBuilder;
import net.knarcraft.knarlib.property.ColorConversion; import net.knarcraft.knarlib.property.ColorConversion;
import net.knarcraft.knarlib.util.ColorHelper; import net.knarcraft.knarlib.util.ColorHelper;
import org.bukkit.command.Command; import org.bukkit.command.Command;
@@ -27,22 +26,19 @@ public class CommandSetAuthor implements TabExecutor {
@Override @Override
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label,
@NotNull String[] arguments) { @NotNull String[] arguments) {
StringFormatter stringFormatter = BooksWithoutBorders.getStringFormatter();
if (!(sender instanceof Player player)) { if (!(sender instanceof Player player)) {
stringFormatter.displayErrorMessage(sender, Translatable.ERROR_PLAYER_ONLY); new FormatBuilder(Translatable.ERROR_PLAYER_ONLY).error(sender);
return false; return false;
} }
if (arguments.length < 1) { if (arguments.length < 1) {
stringFormatter.displayErrorMessage(player, Translatable.ERROR_AUTHOR_BLANK); new FormatBuilder(Translatable.ERROR_AUTHOR_BLANK).error(player);
return false; return false;
} }
if (InventoryHelper.notHoldingOneWrittenBookCheck(player, if (InventoryHelper.notHoldingOneWrittenBookCheck(player,
stringFormatter.replacePlaceholder(Translatable.ERROR_NOT_HOLDING_WRITTEN_BOOK, "{action}", new FormatBuilder(Translatable.ERROR_NOT_HOLDING_WRITTEN_BOOK).replace("{action}", Translatable.ACTION_SET_AUTHOR).build(),
stringFormatter.getUnFormattedColoredMessage(Translatable.ACTION_SET_AUTHOR)), new FormatBuilder(Translatable.ERROR_ONLY_ONE_BOOK).replace("{action}", Translatable.ACTION_SET_AUTHOR).build())) {
stringFormatter.replacePlaceholder(Translatable.ERROR_ONLY_ONE_BOOK, "{action}",
stringFormatter.getUnFormattedColoredMessage(Translatable.ACTION_SET_AUTHOR)))) {
return false; return false;
} }
@@ -51,15 +47,14 @@ public class CommandSetAuthor implements TabExecutor {
ItemStack heldBook = InventoryHelper.getHeldItem(player, mainHand); ItemStack heldBook = InventoryHelper.getHeldItem(player, mainHand);
BookMeta bookMetaData = InventoryHelper.getHeldBookMetadata(player, mainHand); BookMeta bookMetaData = InventoryHelper.getHeldBookMetadata(player, mainHand);
if (bookMetaData == null) { if (bookMetaData == null) {
stringFormatter.displayErrorMessage(sender, Translatable.ERROR_METADATA_MISSING); new FormatBuilder(Translatable.ERROR_METADATA_MISSING).error(player);
return false; return false;
} }
String author = ColorHelper.translateColorCodes(String.join(" ", arguments), ColorConversion.RGB); String author = ColorHelper.translateColorCodes(String.join(" ", arguments), ColorConversion.RGB);
bookMetaData.setAuthor(author); bookMetaData.setAuthor(author);
heldBook.setItemMeta(bookMetaData); heldBook.setItemMeta(bookMetaData);
stringFormatter.displaySuccessMessage(player, stringFormatter.replacePlaceholder(Translatable.SUCCESS_SET_AUTHOR, new FormatBuilder(Translatable.SUCCESS_SET_AUTHOR).replace("{author}", author).success(player);
"{author}", author));
return true; return true;
} }

View File

@@ -9,7 +9,7 @@ import net.knarcraft.bookswithoutborders.config.translation.Translatable;
import net.knarcraft.bookswithoutborders.manager.EconomyManager; import net.knarcraft.bookswithoutborders.manager.EconomyManager;
import net.knarcraft.bookswithoutborders.utility.InventoryHelper; import net.knarcraft.bookswithoutborders.utility.InventoryHelper;
import net.knarcraft.bookswithoutborders.utility.TabCompletionTypeHelper; import net.knarcraft.bookswithoutborders.utility.TabCompletionTypeHelper;
import net.knarcraft.knarlib.formatting.StringFormatter; import net.knarcraft.knarlib.formatting.FormatBuilder;
import net.knarcraft.knarlib.util.TabCompletionHelper; import net.knarcraft.knarlib.util.TabCompletionHelper;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.command.Command; import org.bukkit.command.Command;
@@ -33,7 +33,6 @@ public class CommandSetBookPrice implements TabExecutor {
@Override @Override
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label,
@NotNull String[] arguments) { @NotNull String[] arguments) {
StringFormatter stringFormatter = BooksWithoutBorders.getStringFormatter();
//Clear the current price //Clear the current price
if (arguments.length == 0) { if (arguments.length == 0) {
clearItemPrice(sender); clearItemPrice(sender);
@@ -42,7 +41,7 @@ public class CommandSetBookPrice implements TabExecutor {
//Warn about missing arguments //Warn about missing arguments
if (arguments.length < 2) { if (arguments.length < 2) {
stringFormatter.displayErrorMessage(sender, CostMessage.ERROR_COST_NOT_SPECIFIED); new FormatBuilder(CostMessage.ERROR_COST_NOT_SPECIFIED).error(sender);
return false; return false;
} }
@@ -50,11 +49,11 @@ public class CommandSetBookPrice implements TabExecutor {
try { try {
price = Double.parseDouble(arguments[1]); price = Double.parseDouble(arguments[1]);
if (price <= 0) { if (price <= 0) {
stringFormatter.displayErrorMessage(sender, CostMessage.ERROR_COST_INVALID_QUANTITY); new FormatBuilder(CostMessage.ERROR_COST_INVALID_QUANTITY).error(sender);
return false; return false;
} }
} catch (NumberFormatException exception) { } catch (NumberFormatException exception) {
stringFormatter.displayErrorMessage(sender, CostMessage.ERROR_COST_INVALID_QUANTITY); new FormatBuilder(CostMessage.ERROR_COST_INVALID_QUANTITY).error(sender);
return false; return false;
} }
@@ -62,7 +61,7 @@ public class CommandSetBookPrice implements TabExecutor {
case "item" -> setItemPrice(sender, price); case "item" -> setItemPrice(sender, price);
case "economy" -> setEconomyPrice(sender, price); case "economy" -> setEconomyPrice(sender, price);
default -> { default -> {
stringFormatter.displayErrorMessage(sender, CostMessage.ERROR_COST_INVALID_TYPE); new FormatBuilder(CostMessage.ERROR_COST_INVALID_TYPE).error(sender);
yield false; yield false;
} }
}; };
@@ -92,15 +91,14 @@ public class CommandSetBookPrice implements TabExecutor {
* @return <p>True if the price was changed successfully</p> * @return <p>True if the price was changed successfully</p>
*/ */
private boolean setItemPrice(@NotNull CommandSender sender, double price) { private boolean setItemPrice(@NotNull CommandSender sender, double price) {
StringFormatter stringFormatter = BooksWithoutBorders.getStringFormatter();
if (!(sender instanceof Player player)) { if (!(sender instanceof Player player)) {
stringFormatter.displayErrorMessage(sender, Translatable.ERROR_PLAYER_ONLY); new FormatBuilder(Translatable.ERROR_PLAYER_ONLY).error(sender);
return false; return false;
} }
ItemStack heldItem = InventoryHelper.getHeldItem(player, true); ItemStack heldItem = InventoryHelper.getHeldItem(player, true);
if (heldItem.getType() == Material.AIR) { if (heldItem.getType() == Material.AIR) {
stringFormatter.displayErrorMessage(sender, CostMessage.ERROR_COST_ITEM_MISSING); new FormatBuilder(CostMessage.ERROR_COST_ITEM_MISSING).error(sender);
return false; return false;
} }
@@ -113,9 +111,8 @@ public class CommandSetBookPrice implements TabExecutor {
booksWithoutBorders.getConfig().set(ConfigOption.PRICE_QUANTITY.getConfigNode(), newPriceQuantity); booksWithoutBorders.getConfig().set(ConfigOption.PRICE_QUANTITY.getConfigNode(), newPriceQuantity);
booksWithoutBorders.saveConfig(); booksWithoutBorders.saveConfig();
stringFormatter.displaySuccessMessage(sender, stringFormatter.replacePlaceholders( new FormatBuilder(CostMessage.SUCCESS_COST_ITEM_SET).replace("{quantity}",
CostMessage.SUCCESS_COST_ITEM_SET, List.of("{quantity}", "{price}"), String.valueOf((int) newPriceQuantity)).replace("{price}", newPriceType).success(sender);
List.of(String.valueOf((int) newPriceQuantity), newPriceType)));
return true; return true;
} }
@@ -127,7 +124,6 @@ public class CommandSetBookPrice implements TabExecutor {
* @return <p>True if the price was changed successfully</p> * @return <p>True if the price was changed successfully</p>
*/ */
private boolean setEconomyPrice(@NotNull CommandSender sender, double price) { private boolean setEconomyPrice(@NotNull CommandSender sender, double price) {
StringFormatter stringFormatter = BooksWithoutBorders.getStringFormatter();
EconomyManager economyManager = BooksWithoutBorders.getConfiguration().getEconomyManager(); EconomyManager economyManager = BooksWithoutBorders.getConfiguration().getEconomyManager();
if (economyManager.getEconomy() != null) { if (economyManager.getEconomy() != null) {
BwBConfig config = BooksWithoutBorders.getConfiguration(); BwBConfig config = BooksWithoutBorders.getConfiguration();
@@ -138,12 +134,11 @@ public class CommandSetBookPrice implements TabExecutor {
booksWithoutBorders.getConfig().set(ConfigOption.PRICE_QUANTITY.getConfigNode(), newPriceQuantity); booksWithoutBorders.getConfig().set(ConfigOption.PRICE_QUANTITY.getConfigNode(), newPriceQuantity);
booksWithoutBorders.saveConfig(); booksWithoutBorders.saveConfig();
stringFormatter.displaySuccessMessage(sender, stringFormatter.replacePlaceholder( new FormatBuilder(CostMessage.SUCCESS_COST_ECONOMY_SET).replace("{cost}",
CostMessage.SUCCESS_COST_ECONOMY_SET, "{cost}", economyManager.getEconomy().format(newPriceQuantity))); economyManager.getEconomy().format(newPriceQuantity)).success(sender);
return true; return true;
} else { } else {
BooksWithoutBorders.getStringFormatter().displayErrorMessage(sender, new FormatBuilder(StaticMessage.EXCEPTION_VAULT_PRICE_NOT_CHANGED.toString()).error(sender);
StaticMessage.EXCEPTION_VAULT_PRICE_NOT_CHANGED.toString());
return false; return false;
} }
} }

View File

@@ -5,7 +5,7 @@ import net.knarcraft.bookswithoutborders.config.translation.BookshelfMessage;
import net.knarcraft.bookswithoutborders.config.translation.Translatable; import net.knarcraft.bookswithoutborders.config.translation.Translatable;
import net.knarcraft.bookswithoutborders.container.Bookshelf; import net.knarcraft.bookswithoutborders.container.Bookshelf;
import net.knarcraft.bookswithoutborders.handler.BookshelfHandler; import net.knarcraft.bookswithoutborders.handler.BookshelfHandler;
import net.knarcraft.knarlib.formatting.StringFormatter; import net.knarcraft.knarlib.formatting.FormatBuilder;
import net.knarcraft.knarlib.util.TabCompletionHelper; import net.knarcraft.knarlib.util.TabCompletionHelper;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.block.Block; import org.bukkit.block.Block;
@@ -28,15 +28,14 @@ public class CommandSetBookshelfData implements TabExecutor {
@Override @Override
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String s, public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String s,
@NotNull String[] arguments) { @NotNull String[] arguments) {
StringFormatter stringFormatter = BooksWithoutBorders.getStringFormatter();
if (!(sender instanceof Player player)) { if (!(sender instanceof Player player)) {
stringFormatter.displayErrorMessage(sender, Translatable.ERROR_PLAYER_ONLY); new FormatBuilder(Translatable.ERROR_PLAYER_ONLY).error(sender);
return false; return false;
} }
Block targetBlock = player.getTargetBlockExact(7); Block targetBlock = player.getTargetBlockExact(7);
if (targetBlock == null || targetBlock.getType() != Material.CHISELED_BOOKSHELF) { if (targetBlock == null || targetBlock.getType() != Material.CHISELED_BOOKSHELF) {
stringFormatter.displayErrorMessage(sender, BookshelfMessage.ERROR_BOOKSHELF_NOT_FOUND); new FormatBuilder(BookshelfMessage.ERROR_BOOKSHELF_NOT_FOUND).error(sender);
return false; return false;
} }
@@ -48,9 +47,9 @@ public class CommandSetBookshelfData implements TabExecutor {
if (bookshelf != null) { if (bookshelf != null) {
shelfHandler.unregisterBookshelf(bookshelf); shelfHandler.unregisterBookshelf(bookshelf);
shelfHandler.save(); shelfHandler.save();
stringFormatter.displaySuccessMessage(sender, BookshelfMessage.SUCCESS_BOOKSHELF_DATA_DELETED); new FormatBuilder(BookshelfMessage.SUCCESS_BOOKSHELF_DATA_DELETED).success(sender);
} else { } else {
stringFormatter.displayErrorMessage(sender, BookshelfMessage.ERROR_BOOKSHELF_NOT_REGISTERED); new FormatBuilder(BookshelfMessage.ERROR_BOOKSHELF_NOT_REGISTERED).error(sender);
} }
return true; return true;
} else { } else {
@@ -73,16 +72,16 @@ public class CommandSetBookshelfData implements TabExecutor {
bookshelf.setTitle(builder.toString()); bookshelf.setTitle(builder.toString());
} }
shelfHandler.save(); shelfHandler.save();
stringFormatter.displaySuccessMessage(sender, BookshelfMessage.SUCCESS_BOOKSHELF_TITLE_SET); new FormatBuilder(BookshelfMessage.SUCCESS_BOOKSHELF_TITLE_SET).success(sender);
return true; return true;
case "lore": case "lore":
if (bookshelf == null) { if (bookshelf == null) {
stringFormatter.displayErrorMessage(sender, BookshelfMessage.ERROR_BOOKSHELF_NAME_REQUIRED); new FormatBuilder(BookshelfMessage.ERROR_BOOKSHELF_NAME_REQUIRED).error(sender);
} else { } else {
List<String> loreParts = Arrays.asList(builder.toString().split(BooksWithoutBorders.getConfiguration().getLoreSeparator())); List<String> loreParts = Arrays.asList(builder.toString().split(BooksWithoutBorders.getConfiguration().getLoreSeparator()));
bookshelf.setLore(loreParts); bookshelf.setLore(loreParts);
shelfHandler.save(); shelfHandler.save();
stringFormatter.displaySuccessMessage(sender, BookshelfMessage.SUCCESS_BOOKSHELF_LORE_SET); new FormatBuilder(BookshelfMessage.SUCCESS_BOOKSHELF_LORE_SET).success(sender);
} }
return true; return true;
} }

View File

@@ -1,9 +1,8 @@
package net.knarcraft.bookswithoutborders.command; package net.knarcraft.bookswithoutborders.command;
import net.knarcraft.bookswithoutborders.BooksWithoutBorders;
import net.knarcraft.bookswithoutborders.config.translation.Translatable; import net.knarcraft.bookswithoutborders.config.translation.Translatable;
import net.knarcraft.bookswithoutborders.utility.InventoryHelper; import net.knarcraft.bookswithoutborders.utility.InventoryHelper;
import net.knarcraft.knarlib.formatting.StringFormatter; import net.knarcraft.knarlib.formatting.FormatBuilder;
import org.bukkit.command.Command; import org.bukkit.command.Command;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.command.TabExecutor; import org.bukkit.command.TabExecutor;
@@ -24,22 +23,19 @@ public class CommandSetGeneration implements TabExecutor {
@Override @Override
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label,
@NotNull String[] arguments) { @NotNull String[] arguments) {
StringFormatter stringFormatter = BooksWithoutBorders.getStringFormatter();
if (!(sender instanceof Player player)) { if (!(sender instanceof Player player)) {
stringFormatter.displayErrorMessage(sender, Translatable.ERROR_PLAYER_ONLY); new FormatBuilder(Translatable.ERROR_PLAYER_ONLY).error(sender);
return false; return false;
} }
if (InventoryHelper.notHoldingOneWrittenBookCheck(player, if (InventoryHelper.notHoldingOneWrittenBookCheck(player,
stringFormatter.replacePlaceholder(Translatable.ERROR_NOT_HOLDING_WRITTEN_BOOK, "{action}", new FormatBuilder(Translatable.ERROR_NOT_HOLDING_WRITTEN_BOOK).replace("{action}", Translatable.ACTION_CHANGE_GENERATION).build(),
stringFormatter.getUnFormattedColoredMessage(Translatable.ACTION_CHANGE_GENERATION)), new FormatBuilder(Translatable.ERROR_ONLY_ONE_BOOK).replace("{action}", Translatable.ACTION_CHANGE_GENERATION).build())) {
stringFormatter.replacePlaceholder(Translatable.ERROR_ONLY_ONE_BOOK, "{action}",
stringFormatter.getUnFormattedColoredMessage(Translatable.ACTION_CHANGE_GENERATION)))) {
return false; return false;
} }
if (arguments.length < 1) { if (arguments.length < 1) {
stringFormatter.displayErrorMessage(player, Translatable.ERROR_GENERATION_NOT_SPECIFIED); new FormatBuilder(Translatable.ERROR_GENERATION_NOT_SPECIFIED).error(player);
return false; return false;
} }
@@ -47,7 +43,7 @@ public class CommandSetGeneration implements TabExecutor {
try { try {
generation = BookMeta.Generation.valueOf(arguments[0]); generation = BookMeta.Generation.valueOf(arguments[0]);
} catch (IllegalArgumentException exception) { } catch (IllegalArgumentException exception) {
stringFormatter.displayErrorMessage(player, Translatable.ERROR_GENERATION_INVALID); new FormatBuilder(Translatable.ERROR_GENERATION_INVALID).error(player);
return false; return false;
} }
@@ -56,10 +52,10 @@ public class CommandSetGeneration implements TabExecutor {
if (bookMeta != null) { if (bookMeta != null) {
bookMeta.setGeneration(generation); bookMeta.setGeneration(generation);
heldBook.setItemMeta(bookMeta); heldBook.setItemMeta(bookMeta);
stringFormatter.displayErrorMessage(player, Translatable.SUCCESS_GENERATION_CHANGED); new FormatBuilder(Translatable.SUCCESS_GENERATION_CHANGED).success(player);
return true; return true;
} else { } else {
stringFormatter.displayErrorMessage(player, Translatable.ERROR_METADATA_MISSING); new FormatBuilder(Translatable.ERROR_METADATA_MISSING).error(player);
return false; return false;
} }
} }

View File

@@ -3,7 +3,7 @@ package net.knarcraft.bookswithoutborders.command;
import net.knarcraft.bookswithoutborders.BooksWithoutBorders; import net.knarcraft.bookswithoutborders.BooksWithoutBorders;
import net.knarcraft.bookswithoutborders.config.translation.Translatable; import net.knarcraft.bookswithoutborders.config.translation.Translatable;
import net.knarcraft.bookswithoutborders.utility.InventoryHelper; import net.knarcraft.bookswithoutborders.utility.InventoryHelper;
import net.knarcraft.knarlib.formatting.StringFormatter; import net.knarcraft.knarlib.formatting.FormatBuilder;
import net.knarcraft.knarlib.property.ColorConversion; import net.knarcraft.knarlib.property.ColorConversion;
import net.knarcraft.knarlib.util.ColorHelper; import net.knarcraft.knarlib.util.ColorHelper;
import org.bukkit.Material; import org.bukkit.Material;
@@ -27,20 +27,19 @@ public class CommandSetLore implements TabExecutor {
@Override @Override
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label,
@NotNull String[] arguments) { @NotNull String[] arguments) {
StringFormatter stringFormatter = BooksWithoutBorders.getStringFormatter();
if (!(sender instanceof Player player)) { if (!(sender instanceof Player player)) {
stringFormatter.displayErrorMessage(sender, Translatable.ERROR_PLAYER_ONLY); new FormatBuilder(Translatable.ERROR_PLAYER_ONLY).error(sender);
return false; return false;
} }
if (arguments.length < 1) { if (arguments.length < 1) {
stringFormatter.displayErrorMessage(player, Translatable.ERROR_LORE_EMPTY); new FormatBuilder(Translatable.ERROR_LORE_EMPTY).error(player);
return false; return false;
} }
ItemStack heldItem = InventoryHelper.getHeldItem(player, true); ItemStack heldItem = InventoryHelper.getHeldItem(player, true);
if (heldItem.getType() == Material.AIR) { if (heldItem.getType() == Material.AIR) {
stringFormatter.displayErrorMessage(player, Translatable.ERROR_NO_ITEM); new FormatBuilder(Translatable.ERROR_NO_ITEM).error(player);
return false; return false;
} }
@@ -54,12 +53,12 @@ public class CommandSetLore implements TabExecutor {
//Update lore //Update lore
ItemMeta meta = heldItem.getItemMeta(); ItemMeta meta = heldItem.getItemMeta();
if (meta == null) { if (meta == null) {
stringFormatter.displayErrorMessage(player, Translatable.ERROR_METADATA_MISSING); new FormatBuilder(Translatable.ERROR_METADATA_MISSING).error(player);
return false; return false;
} }
meta.setLore(newLore); meta.setLore(newLore);
heldItem.setItemMeta(meta); heldItem.setItemMeta(meta);
stringFormatter.displaySuccessMessage(player, Translatable.SUCCESS_LORE_SET); new FormatBuilder(Translatable.SUCCESS_LORE_SET).success(player);
return true; return true;
} }

View File

@@ -1,9 +1,8 @@
package net.knarcraft.bookswithoutborders.command; package net.knarcraft.bookswithoutborders.command;
import net.knarcraft.bookswithoutborders.BooksWithoutBorders;
import net.knarcraft.bookswithoutborders.config.translation.Translatable; import net.knarcraft.bookswithoutborders.config.translation.Translatable;
import net.knarcraft.bookswithoutborders.utility.InventoryHelper; import net.knarcraft.bookswithoutborders.utility.InventoryHelper;
import net.knarcraft.knarlib.formatting.StringFormatter; import net.knarcraft.knarlib.formatting.FormatBuilder;
import net.knarcraft.knarlib.property.ColorConversion; import net.knarcraft.knarlib.property.ColorConversion;
import net.knarcraft.knarlib.util.ColorHelper; import net.knarcraft.knarlib.util.ColorHelper;
import org.bukkit.Material; import org.bukkit.Material;
@@ -27,20 +26,19 @@ public class CommandSetTitle implements TabExecutor {
@Override @Override
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label,
@NotNull String[] arguments) { @NotNull String[] arguments) {
StringFormatter stringFormatter = BooksWithoutBorders.getStringFormatter();
if (!(sender instanceof Player player)) { if (!(sender instanceof Player player)) {
stringFormatter.displayErrorMessage(sender, Translatable.ERROR_PLAYER_ONLY); new FormatBuilder(Translatable.ERROR_PLAYER_ONLY).error(sender);
return false; return false;
} }
if (arguments.length < 1) { if (arguments.length < 1) {
stringFormatter.displayErrorMessage(player, Translatable.ERROR_TITLE_EMPTY); new FormatBuilder(Translatable.ERROR_TITLE_EMPTY).error(player);
return false; return false;
} }
ItemStack heldItem = InventoryHelper.getHeldItem(player, true); ItemStack heldItem = InventoryHelper.getHeldItem(player, true);
if (heldItem.getType() == Material.AIR) { if (heldItem.getType() == Material.AIR) {
stringFormatter.displayErrorMessage(sender, Translatable.ERROR_NO_ITEM); new FormatBuilder(Translatable.ERROR_NO_ITEM).error(player);
return false; return false;
} }
@@ -49,7 +47,7 @@ public class CommandSetTitle implements TabExecutor {
ItemMeta itemMetadata = heldItem.getItemMeta(); ItemMeta itemMetadata = heldItem.getItemMeta();
if (itemMetadata == null) { if (itemMetadata == null) {
stringFormatter.displayErrorMessage(sender, Translatable.ERROR_METADATA_MISSING); new FormatBuilder(Translatable.ERROR_METADATA_MISSING).error(player);
return false; return false;
} }
@@ -57,7 +55,7 @@ public class CommandSetTitle implements TabExecutor {
ItemMeta newMetaData; ItemMeta newMetaData;
if (heldItem.getType() == Material.WRITTEN_BOOK) { if (heldItem.getType() == Material.WRITTEN_BOOK) {
if (title.length() > 32) { if (title.length() > 32) {
stringFormatter.displayErrorMessage(sender, Translatable.ERROR_TITLE_LENGTH); new FormatBuilder(Translatable.ERROR_TITLE_LENGTH).error(player);
return false; return false;
} }
BookMeta bookMetadata = (BookMeta) itemMetadata; BookMeta bookMetadata = (BookMeta) itemMetadata;
@@ -70,8 +68,7 @@ public class CommandSetTitle implements TabExecutor {
//Set the new metadata //Set the new metadata
heldItem.setItemMeta(newMetaData); heldItem.setItemMeta(newMetaData);
stringFormatter.displaySuccessMessage(sender, new FormatBuilder(Translatable.SUCCESS_TITLE_SET).replace("{title}", title).success(player);
stringFormatter.replacePlaceholder(Translatable.SUCCESS_TITLE_SET, "{title}", title));
return true; return true;
} }

View File

@@ -28,6 +28,16 @@ public enum Formatting implements TranslatableMessage {
*/ */
NEUTRAL_COMMANDS_COMMAND, NEUTRAL_COMMANDS_COMMAND,
/**
* The format used for explaining command summary elements
*/
NEUTRAL_COMMANDS_SUMMARY,
/**
* The format used for explaining command description elements
*/
NEUTRAL_COMMANDS_DESCRIPTION,
/** /**
* The string used when displaying that a command requires no permission * The string used when displaying that a command requires no permission
*/ */

View File

@@ -130,6 +130,8 @@ en:
NEUTRAL_COMMANDS_BOOK_PRICE_ECO: "\n&c[{price} is required to create a book]" NEUTRAL_COMMANDS_BOOK_PRICE_ECO: "\n&c[{price} is required to create a book]"
NEUTRAL_COMMANDS_BOOK_PRICE_ITEM: "&c[{quantity} {type} (s) are required to create a book]\n" NEUTRAL_COMMANDS_BOOK_PRICE_ITEM: "&c[{quantity} {type} (s) are required to create a book]\n"
NEUTRAL_COMMANDS_COMMAND: "\n&e{usage}{aliases}: &a{description}" NEUTRAL_COMMANDS_COMMAND: "\n&e{usage}{aliases}: &a{description}"
NEUTRAL_COMMANDS_SUMMARY: "\n&eCommand: &aUsage summary"
NEUTRAL_COMMANDS_DESCRIPTION: "\n&eCommand and arguments &f(&bAlias list&f): &aFull description &7{Required permission}"
NEUTRAL_COMMANDS_COMMAND_NO_PERMISSION_REQUIRED: "None" NEUTRAL_COMMANDS_COMMAND_NO_PERMISSION_REQUIRED: "None"
NEUTRAL_COMMANDS_COMMAND_PERMISSION: " &7{{permission}}" NEUTRAL_COMMANDS_COMMAND_PERMISSION: " &7{{permission}}"
NEUTRAL_COMMANDS_ALIASES: " &f(&b{aliases}&f)" NEUTRAL_COMMANDS_ALIASES: " &f(&b{aliases}&f)"