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

View File

@@ -3,7 +3,7 @@ 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.formatting.FormatBuilder;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.command.TabExecutor;
@@ -25,18 +25,14 @@ public class CommandClear implements TabExecutor {
@Override
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label,
@NotNull String[] args) {
StringFormatter stringFormatter = BooksWithoutBorders.getStringFormatter();
if (!(sender instanceof Player player)) {
BooksWithoutBorders.getStringFormatter().displayErrorMessage(sender, Translatable.ERROR_PLAYER_ONLY);
new FormatBuilder(Translatable.ERROR_PLAYER_ONLY).error(sender);
return false;
}
if (InventoryHelper.notHoldingOneWritableBookCheck(player,
stringFormatter.replacePlaceholder(Translatable.ERROR_NOT_HOLDING_WRITABLE_BOOK, "{action}",
stringFormatter.getUnFormattedColoredMessage(Translatable.ACTION_CLEAR)),
stringFormatter.replacePlaceholder(Translatable.ERROR_ONLY_ONE_BOOK, "{action}",
stringFormatter.getUnFormattedColoredMessage(Translatable.ACTION_CLEAR)))) {
new FormatBuilder(Translatable.ERROR_NOT_HOLDING_WRITABLE_BOOK).replace("{action}", Translatable.ACTION_CLEAR).build(),
new FormatBuilder(Translatable.ERROR_ONLY_ONE_BOOK).replace("{action}", Translatable.ACTION_CLEAR).build())) {
return false;
}
@@ -51,7 +47,7 @@ public class CommandClear implements TabExecutor {
// Fallback to cleaning existing metadata
BookMeta bookMeta = (BookMeta) heldBook.getItemMeta();
if (bookMeta == null) {
stringFormatter.displayErrorMessage(sender, Translatable.ERROR_METADATA_MISSING);
new FormatBuilder(Translatable.ERROR_METADATA_MISSING).error(sender);
return false;
}
bookMeta.setPages("");
@@ -60,7 +56,7 @@ public class CommandClear implements TabExecutor {
bookMeta.setTitle(null);
heldBook.setItemMeta(bookMeta);
}
stringFormatter.displaySuccessMessage(sender, Translatable.SUCCESS_CLEARED);
new FormatBuilder(Translatable.SUCCESS_CLEARED).success(sender);
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.InventoryHelper;
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 org.bukkit.Material;
import org.bukkit.command.Command;
@@ -30,23 +30,19 @@ public class CommandCopy 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)) {
stringFormatter.displayErrorMessage(sender, Translatable.ERROR_PLAYER_ONLY);
new FormatBuilder(Translatable.ERROR_PLAYER_ONLY).error(sender);
return false;
}
if (InventoryHelper.notHoldingOneWrittenBookCheck(player,
stringFormatter.replacePlaceholder(Translatable.ERROR_NOT_HOLDING_WRITTEN_BOOK, "{action}",
stringFormatter.getUnFormattedColoredMessage(Translatable.ACTION_COPY)),
stringFormatter.replacePlaceholder(Translatable.ERROR_ONLY_ONE_BOOK, "{action}",
stringFormatter.getUnFormattedColoredMessage(Translatable.ACTION_COPY)))) {
new FormatBuilder(Translatable.ERROR_NOT_HOLDING_WRITTEN_BOOK).replace("{action}", Translatable.ACTION_COPY).build(),
new FormatBuilder(Translatable.ERROR_ONLY_ONE_BOOK).replace("{action}", Translatable.ACTION_COPY).build())) {
return false;
}
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;
}
@@ -54,12 +50,12 @@ public class CommandCopy implements TabExecutor {
ItemStack heldBook = InventoryHelper.getHeldBook(player, true);
int copies = Integer.parseInt(arguments[0]);
if (copies <= 0) {
stringFormatter.displayErrorMessage(player, Translatable.ERROR_COPY_NEGATIVE_AMOUNT);
new FormatBuilder(Translatable.ERROR_COPY_NEGATIVE_AMOUNT).error(player);
return false;
}
return performCopy(copies, player, heldBook);
} catch (NumberFormatException ignored) {
stringFormatter.displayErrorMessage(player, Translatable.ERROR_COPY_INVALID_AMOUNT);
new FormatBuilder(Translatable.ERROR_COPY_INVALID_AMOUNT).error(player);
return false;
}
}
@@ -93,7 +89,7 @@ public class CommandCopy implements TabExecutor {
}
heldBook.setAmount(heldBook.getAmount() + copies);
BooksWithoutBorders.getStringFormatter().displaySuccessMessage(player, Translatable.SUCCESS_COPY);
new FormatBuilder(Translatable.SUCCESS_COPY).success(player);
return true;
}
}
@@ -124,13 +120,13 @@ public class CommandCopy implements TabExecutor {
//Copy the vanilla behavior of refusing copying any further
if (bookMeta.getGeneration() == BookMeta.Generation.COPY_OF_COPY ||
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;
}
//Make sure the player can fit the book in their inventory
int nextAvailableSlot = player.getInventory().firstEmpty();
if (nextAvailableSlot == -1) {
BooksWithoutBorders.getStringFormatter().displayErrorMessage(player, Translatable.ERROR_INVENTORY_FULL);
new FormatBuilder(Translatable.ERROR_INVENTORY_FULL).error(player);
return false;
}
//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.EncryptionHelper;
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.CommandSender;
import org.bukkit.command.TabExecutor;
@@ -27,25 +27,21 @@ public class CommandDecrypt 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)) {
stringFormatter.displayErrorMessage(sender, Translatable.ERROR_PLAYER_ONLY);
new FormatBuilder(Translatable.ERROR_PLAYER_ONLY).error(sender);
return false;
}
if (InventoryHelper.notHoldingOneWrittenBookCheck(player,
stringFormatter.replacePlaceholder(Translatable.ERROR_NOT_HOLDING_WRITTEN_BOOK, "{action}",
stringFormatter.getUnFormattedColoredMessage(Translatable.ACTION_DECRYPT)),
stringFormatter.replacePlaceholder(Translatable.ERROR_ONLY_ONE_BOOK, "{action}",
stringFormatter.getUnFormattedColoredMessage(Translatable.ACTION_DECRYPT)))) {
new FormatBuilder(Translatable.ERROR_NOT_HOLDING_WRITTEN_BOOK).replace("{action}", Translatable.ACTION_DECRYPT).build(),
new FormatBuilder(Translatable.ERROR_ONLY_ONE_BOOK).replace("{action}", Translatable.ACTION_DECRYPT).build())) {
return false;
}
ItemStack heldItem = InventoryHelper.getHeldBook(player, true);
BookMeta bookMetadata = (BookMeta) heldItem.getItemMeta();
if (bookMetadata == null) {
stringFormatter.displayErrorMessage(sender, Translatable.ERROR_METADATA_MISSING);
new FormatBuilder(Translatable.ERROR_METADATA_MISSING).error(sender);
return false;
}
@@ -54,7 +50,7 @@ public class CommandDecrypt implements TabExecutor {
player.hasPermission(Permission.ADMIN.toString())) {
return adminDecrypt(player, bookMetadata);
} else if (arguments.length == 0) {
stringFormatter.displayErrorMessage(player, Translatable.ERROR_DECRYPT_MISSING_KEY);
new FormatBuilder(Translatable.ERROR_DECRYPT_MISSING_KEY).error(player);
return false;
}
@@ -66,10 +62,10 @@ public class CommandDecrypt implements TabExecutor {
if (book != null) {
InventoryHelper.setHeldWrittenBook(player, book);
stringFormatter.displaySuccessMessage(player, Translatable.SUCCESS_DECRYPTED);
new FormatBuilder(Translatable.SUCCESS_DECRYPTED).success(player);
return true;
} else {
stringFormatter.displayErrorMessage(player, Translatable.ERROR_DECRYPT_FAILED);
new FormatBuilder(Translatable.ERROR_DECRYPT_FAILED).error(player);
return false;
}
}
@@ -82,11 +78,10 @@ public class CommandDecrypt implements TabExecutor {
* @return <p>True if successful</p>
*/
private boolean adminDecrypt(@NotNull Player player, @NotNull BookMeta bookMetadata) {
StringFormatter stringFormatter = BooksWithoutBorders.getStringFormatter();
ItemStack decrypted = EncryptionHelper.loadEncryptedBook(player, "", false, true);
if (decrypted != null) {
InventoryHelper.setHeldWrittenBook(player, decrypted);
stringFormatter.displaySuccessMessage(player, Translatable.SUCCESS_AUTO_DECRYPTED);
new FormatBuilder(Translatable.SUCCESS_AUTO_DECRYPTED).success(player);
return true;
} else {
return adminDecryptLegacy(player, bookMetadata);
@@ -101,11 +96,10 @@ public class CommandDecrypt implements TabExecutor {
* @return <p>True if successfully decrypted</p>
*/
private boolean adminDecryptLegacy(@NotNull Player player, @NotNull BookMeta bookMetadata) {
StringFormatter stringFormatter = BooksWithoutBorders.getStringFormatter();
File encryptedDirectory = new File(BooksWithoutBorders.getConfiguration().getEncryptedBookPath());
String[] encryptedFiles = encryptedDirectory.list();
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;
}
@@ -125,13 +119,13 @@ public class CommandDecrypt implements TabExecutor {
ItemStack book = EncryptionHelper.loadEncryptedBookLegacy(player, key, false);
if (book != null) {
InventoryHelper.setHeldWrittenBook(player, book);
stringFormatter.displaySuccessMessage(player, Translatable.SUCCESS_AUTO_DECRYPTED);
new FormatBuilder(Translatable.SUCCESS_AUTO_DECRYPTED).success(player);
return true;
} else {
return false;
}
} else {
stringFormatter.displayErrorMessage(player, Translatable.ERROR_ENCRYPTED_BOOK_UNKNOWN);
new FormatBuilder(Translatable.ERROR_ENCRYPTED_BOOK_UNKNOWN).success(player);
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.InputCleaningHelper;
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 org.bukkit.command.Command;
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,
@NotNull String[] arguments) {
if (!(sender instanceof Player)) {
BooksWithoutBorders.getStringFormatter().displayErrorMessage(sender, Translatable.ERROR_PLAYER_ONLY);
new FormatBuilder(Translatable.ERROR_PLAYER_ONLY).error(sender);
return false;
}
@@ -53,7 +53,7 @@ public class CommandDelete implements TabExecutor {
//Delete the file
List<String> availableBooks = BooksWithoutBorders.getAvailableBooks(sender, deletePublic);
if (availableBooks.isEmpty()) {
BooksWithoutBorders.getStringFormatter().displayErrorMessage(sender, Translatable.ERROR_DELETE_EMPTY);
new FormatBuilder(Translatable.ERROR_DELETE_EMPTY).error(sender);
return false;
}
@@ -71,7 +71,6 @@ public class CommandDelete implements TabExecutor {
* @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) {
StringFormatter stringFormatter = BooksWithoutBorders.getStringFormatter();
//If the file name is an index of the load list, load the book
try {
int loadListIndex = Integer.parseInt(fileName);
@@ -89,20 +88,19 @@ public class CommandDelete implements TabExecutor {
//Send message if no such file could be found
if (file == null) {
stringFormatter.displayErrorMessage(sender, Translatable.ERROR_INCORRECT_FILE_NAME);
new FormatBuilder(Translatable.ERROR_INCORRECT_FILE_NAME).error(sender);
return;
}
//Try to delete the file
try {
if (file.delete()) {
stringFormatter.displaySuccessMessage(sender,
stringFormatter.replacePlaceholder(Translatable.SUCCESS_DELETED, "{file}", fileName));
new FormatBuilder(Translatable.SUCCESS_DELETED).replace("{file}", fileName).success(sender);
} else {
stringFormatter.displayErrorMessage(sender, Translatable.ERROR_DELETE_FAILED_SILENT);
new FormatBuilder(Translatable.ERROR_DELETE_FAILED_SILENT).error(sender);
}
} 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;
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.formatting.FormatBuilder;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.command.TabExecutor;
@@ -24,20 +23,19 @@ public class CommandDeletePage implements TabExecutor {
@Override
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String s,
@NotNull String[] arguments) {
StringFormatter stringFormatter = BooksWithoutBorders.getStringFormatter();
if (!(sender instanceof Player player)) {
stringFormatter.displayErrorMessage(sender, Translatable.ERROR_PLAYER_ONLY);
new FormatBuilder(Translatable.ERROR_PLAYER_ONLY).error(sender);
return false;
}
if (arguments.length == 0) {
stringFormatter.displayErrorMessage(sender, Translatable.ERROR_NO_BOOK_PAGE);
new FormatBuilder(Translatable.ERROR_NO_BOOK_PAGE).error(sender);
return false;
}
ItemStack heldBook = InventoryHelper.getHeldBook(player);
if (heldBook == null) {
stringFormatter.displayErrorMessage(sender, Translatable.ERROR_NOT_HOLDING_ANY_BOOK);
new FormatBuilder(Translatable.ERROR_NOT_HOLDING_ANY_BOOK).error(sender);
return false;
}
@@ -45,19 +43,19 @@ public class CommandDeletePage implements TabExecutor {
try {
index = Integer.parseInt(arguments[0]) - 1;
} catch (NumberFormatException exception) {
stringFormatter.displayErrorMessage(sender, Translatable.ERROR_INVALID_BOOK_PAGE);
new FormatBuilder(Translatable.ERROR_INVALID_BOOK_PAGE).error(sender);
return false;
}
BookMeta bookMeta = (BookMeta) heldBook.getItemMeta();
if (bookMeta == null) {
stringFormatter.displayErrorMessage(sender, Translatable.ERROR_METADATA_MISSING);
new FormatBuilder(Translatable.ERROR_METADATA_MISSING).error(sender);
return false;
}
List<String> pages = new ArrayList<>(bookMeta.getPages());
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;
}
@@ -65,7 +63,7 @@ public class CommandDeletePage implements TabExecutor {
bookMeta.setPages(pages);
heldBook.setItemMeta(bookMeta);
stringFormatter.displaySuccessMessage(sender, Translatable.SUCCESS_PAGE_DELETED);
new FormatBuilder(Translatable.SUCCESS_PAGE_DELETED).success(sender);
return true;
}

View File

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

View File

@@ -1,10 +1,9 @@
package net.knarcraft.bookswithoutborders.command;
import net.knarcraft.bookswithoutborders.BooksWithoutBorders;
import net.knarcraft.bookswithoutborders.config.translation.Translatable;
import net.knarcraft.bookswithoutborders.utility.BookFormatter;
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.CommandSender;
import org.bukkit.command.TabExecutor;
@@ -24,29 +23,27 @@ public class CommandFormat 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)) {
stringFormatter.displayErrorMessage(sender, Translatable.ERROR_PLAYER_ONLY);
new FormatBuilder(Translatable.ERROR_PLAYER_ONLY).error(sender);
return false;
}
ItemStack heldBook = InventoryHelper.getHeldBook(player);
if (heldBook == null) {
stringFormatter.displayErrorMessage(sender, Translatable.ERROR_NOT_HOLDING_ANY_BOOK);
new FormatBuilder(Translatable.ERROR_NOT_HOLDING_ANY_BOOK).error(sender);
return false;
}
BookMeta meta = (BookMeta) heldBook.getItemMeta();
if (meta == null) {
stringFormatter.displayErrorMessage(player, Translatable.ERROR_METADATA_MISSING);
new FormatBuilder(Translatable.ERROR_METADATA_MISSING).error(player);
return false;
}
heldBook.setItemMeta(BookFormatter.formatPages(meta));
stringFormatter.displaySuccessMessage(sender, Translatable.SUCCESS_FORMATTED);
new FormatBuilder(Translatable.SUCCESS_FORMATTED).success(sender);
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.InputCleaningHelper;
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 org.bukkit.Bukkit;
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,
@NotNull String[] arguments) {
if (!(sender instanceof Player)) {
BooksWithoutBorders.getStringFormatter().displayErrorMessage(sender, Translatable.ERROR_PLAYER_ONLY);
new FormatBuilder(Translatable.ERROR_PLAYER_ONLY).error(sender);
return false;
}
@@ -56,9 +56,8 @@ public class CommandGive implements TabExecutor {
return true;
}
StringFormatter stringFormatter = BooksWithoutBorders.getStringFormatter();
if (arguments.length == 1) {
stringFormatter.displayErrorMessage(sender, GiveMessage.ERROR_GIVE_NO_RECIPIENT);
new FormatBuilder(GiveMessage.ERROR_GIVE_NO_RECIPIENT).error(sender);
return false;
}
@@ -132,7 +131,6 @@ public class CommandGive implements TabExecutor {
*/
private boolean parseArgumentsAndContinue(@NotNull String[] arguments, @NotNull CommandSender sender,
@NotNull String directory, boolean givePublic) {
StringFormatter stringFormatter = BooksWithoutBorders.getStringFormatter();
int argumentCount = arguments.length;
//Organize and parse input
String bookIdentifier;
@@ -163,13 +161,13 @@ public class CommandGive implements TabExecutor {
//Try and find the target player
Player receivingPlayer = booksWithoutBorders.getServer().getPlayerExact(receivingPlayerName);
if (receivingPlayer == null) {
stringFormatter.displayErrorMessage(sender, GiveMessage.ERROR_GIVE_RECIPIENT_UNKNOWN);
new FormatBuilder(GiveMessage.ERROR_GIVE_RECIPIENT_UNKNOWN).error(sender);
return false;
}
//Make sure the receiver is able to fit the book
if (receivingPlayer.getInventory().firstEmpty() == -1) {
stringFormatter.displayErrorMessage(sender, GiveMessage.ERROR_GIVE_RECIPIENT_FULL);
new FormatBuilder(GiveMessage.ERROR_GIVE_RECIPIENT_FULL).error(sender);
return false;
}
@@ -192,17 +190,16 @@ public class CommandGive implements TabExecutor {
private boolean loadAndGiveBook(@NotNull String bookIdentifier, @NotNull CommandSender sender,
@NotNull Player receivingPlayer, boolean isSigned, @NotNull String folder,
@NotNull String copies) throws NumberFormatException {
StringFormatter stringFormatter = BooksWithoutBorders.getStringFormatter();
String bookToLoad = InputCleaningHelper.cleanString(bookIdentifier);
ItemStack newBook = BookLoader.loadBook(sender, bookToLoad, isSigned, folder, Integer.parseInt(copies));
if (newBook != null) {
//NOTE: As this method bypasses cost, it should also bypass the generation change
receivingPlayer.getInventory().addItem(newBook);
stringFormatter.displaySuccessMessage(sender, GiveMessage.SUCCESS_GIVE_SENT);
stringFormatter.displaySuccessMessage(receivingPlayer, GiveMessage.SUCCESS_GIVE_RECEIVED);
new FormatBuilder(GiveMessage.SUCCESS_GIVE_SENT).success(sender);
new FormatBuilder(GiveMessage.SUCCESS_GIVE_RECEIVED).success(receivingPlayer);
return true;
} else {
stringFormatter.displayErrorMessage(sender, GiveMessage.ERROR_GIVE_LOAD_FAILED);
new FormatBuilder(GiveMessage.ERROR_GIVE_LOAD_FAILED).error(sender);
return false;
}
}

View File

@@ -1,9 +1,8 @@
package net.knarcraft.bookswithoutborders.command;
import net.knarcraft.bookswithoutborders.BooksWithoutBorders;
import net.knarcraft.bookswithoutborders.config.translation.Translatable;
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.CommandSender;
import org.bukkit.command.TabExecutor;
@@ -21,14 +20,13 @@ public class CommandGroupEncrypt extends CommandEncrypt 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)) {
stringFormatter.displayErrorMessage(sender, Translatable.ERROR_PLAYER_ONLY);
new FormatBuilder(Translatable.ERROR_PLAYER_ONLY).error(sender);
return false;
}
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) {
return false;
@@ -37,7 +35,7 @@ public class CommandGroupEncrypt extends CommandEncrypt implements TabExecutor {
//Check if book is already group encrypted
List<String> lore = bookMetadata.getLore();
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;
}

View File

@@ -6,7 +6,7 @@ import net.knarcraft.bookswithoutborders.gui.PagedBookIndex;
import net.knarcraft.bookswithoutborders.utility.BookLoader;
import net.knarcraft.bookswithoutborders.utility.InputCleaningHelper;
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 org.bukkit.command.Command;
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,
boolean loadPublic, @NotNull String commandName) {
StringFormatter stringFormatter = BooksWithoutBorders.getStringFormatter();
if (!(sender instanceof Player player)) {
stringFormatter.displayErrorMessage(sender, Translatable.ERROR_PLAYER_ONLY);
new FormatBuilder(Translatable.ERROR_PLAYER_ONLY).error(sender);
return false;
}
if (player.getInventory().firstEmpty() == -1) {
stringFormatter.displayErrorMessage(player, Translatable.ERROR_INVENTORY_FULL);
new FormatBuilder(Translatable.ERROR_INVENTORY_FULL).error(player);
return false;
}
@@ -156,7 +155,6 @@ public class CommandLoad implements TabExecutor {
*/
private boolean loadBook(@NotNull Player player, boolean loadPublic, @NotNull String bookIdentifier,
boolean isSigned, @NotNull String directory, int copies) {
StringFormatter stringFormatter = BooksWithoutBorders.getStringFormatter();
BooksWithoutBorders.updateBooks(player, loadPublic);
String bookToLoad = InputCleaningHelper.cleanString(bookIdentifier);
@@ -165,10 +163,10 @@ public class CommandLoad implements TabExecutor {
ItemStack newBook = BookLoader.loadBook(player, bookToLoad, isSigned, directory, copies);
if (newBook != null) {
player.getInventory().addItem(newBook);
stringFormatter.displaySuccessMessage(player, Translatable.SUCCESS_BOOK_LOADED);
new FormatBuilder(Translatable.SUCCESS_BOOK_LOADED).success(player);
return true;
} else {
stringFormatter.displayErrorMessage(player, Translatable.ERROR_LOAD_FAILED);
new FormatBuilder(Translatable.ERROR_LOAD_FAILED).error(player);
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.container.MigrationRequest;
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.CommandSender;
import org.bukkit.command.TabExecutor;
@@ -27,13 +27,12 @@ public class CommandMigrate implements TabExecutor {
@Override
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String s,
@NotNull String[] arguments) {
StringFormatter stringFormatter = BooksWithoutBorders.getStringFormatter();
if (!(sender instanceof Player player)) {
BooksWithoutBorders.getStringFormatter().displayErrorMessage(sender, Translatable.ERROR_PLAYER_ONLY);
new FormatBuilder(Translatable.ERROR_PLAYER_ONLY).error(sender);
return false;
}
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<>();
findFilesToMigrate(bookDirectory, filesToMigrate, player);
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) {
File[] files = folder.listFiles();
if (files == null) {
BooksWithoutBorders.log(Level.WARNING, StringFormatter.replacePlaceholder(
StaticMessage.EXCEPTION_DIRECTORY_UNAVAILABLE.toString(), "{folder}", folder.getName()));
BooksWithoutBorders.log(Level.WARNING, new FormatBuilder(StaticMessage.EXCEPTION_DIRECTORY_UNAVAILABLE.toString()).
replace("{folder}", folder.getName()).build());
return;
}
for (File file : files) {

View File

@@ -2,7 +2,7 @@ package net.knarcraft.bookswithoutborders.command;
import net.knarcraft.bookswithoutborders.BooksWithoutBorders;
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.CommandSender;
import org.bukkit.command.TabExecutor;
@@ -19,15 +19,14 @@ public class CommandReload implements TabExecutor {
@Override
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label,
@NotNull String[] arguments) {
StringFormatter stringFormatter = BooksWithoutBorders.getStringFormatter();
// Reload books
BooksWithoutBorders.clearBookData();
BooksWithoutBorders.updateBooks(sender, true);
if (BooksWithoutBorders.getConfiguration().loadConfig()) {
stringFormatter.displaySuccessMessage(sender, Translatable.SUCCESS_RELOADED);
new FormatBuilder(Translatable.SUCCESS_RELOADED).success(sender);
} else {
stringFormatter.displayErrorMessage(sender, Translatable.ERROR_RELOAD_FAILED);
new FormatBuilder(Translatable.ERROR_RELOAD_FAILED).error(sender);
}
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.BookToFromTextHelper;
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.CommandSender;
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,
@NotNull String command) {
StringFormatter stringFormatter = BooksWithoutBorders.getStringFormatter();
if (!(sender instanceof Player player)) {
stringFormatter.displayErrorMessage(sender, Translatable.ERROR_PLAYER_ONLY);
new FormatBuilder(Translatable.ERROR_PLAYER_ONLY).error(sender);
return false;
}
@@ -61,7 +60,7 @@ public class CommandSave implements TabExecutor {
saveBook(player, heldBook, duplicate, savePublic, command);
return true;
} else {
stringFormatter.displayErrorMessage(sender, Translatable.ERROR_NOT_HOLDING_ANY_BOOK);
new FormatBuilder(Translatable.ERROR_NOT_HOLDING_ANY_BOOK).error(sender);
return false;
}
}
@@ -77,10 +76,9 @@ public class CommandSave implements TabExecutor {
*/
public void saveBook(@NotNull Player player, @NotNull ItemStack heldBook, boolean overwrite,
boolean saveToPublicFolder, @NotNull String command) {
StringFormatter stringFormatter = BooksWithoutBorders.getStringFormatter();
BookMeta book = (BookMeta) heldBook.getItemMeta();
if (book == null) {
stringFormatter.displayErrorMessage(player, Translatable.ERROR_METADATA_MISSING);
new FormatBuilder(Translatable.ERROR_METADATA_MISSING).error(player);
return;
}
@@ -96,7 +94,7 @@ public class CommandSave implements TabExecutor {
String savePath = BookHelper.getBookDirectoryPathString(saveToPublicFolder ?
BookDirectory.PUBLIC : BookDirectory.PLAYER, player);
if (savePath == null) {
stringFormatter.displayErrorMessage(player, SaveMessage.ERROR_SAVE_INVALID_PATH);
new FormatBuilder(SaveMessage.ERROR_SAVE_INVALID_PATH).error(player);
return;
}
@@ -105,14 +103,14 @@ public class CommandSave implements TabExecutor {
try {
fileName = BookHelper.getBookFile(book, player, saveToPublicFolder);
} catch (IllegalArgumentException exception) {
stringFormatter.displayErrorMessage(player, exception.getMessage());
new FormatBuilder(exception.getMessage()).error(player);
return;
}
//Make sure the used folders exist
File file = new File(savePath);
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;
}
@@ -128,8 +126,7 @@ public class CommandSave implements TabExecutor {
//Update the relevant book list
BooksWithoutBorders.updateBooks(player, saveToPublicFolder);
stringFormatter.displaySuccessMessage(player,
stringFormatter.replacePlaceholder(SaveMessage.SUCCESS_SAVED, "{fileName}", newName));
new FormatBuilder(SaveMessage.SUCCESS_SAVED).replace("{fileName}", newName).success(player);
} catch (IOException exception) {
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,
@NotNull String command, @NotNull String separator, int duplicateLimit,
boolean overwrite) {
StringFormatter stringFormatter = BooksWithoutBorders.getStringFormatter();
File[] foundFiles = directory.listFiles();
if (foundFiles == null) {
stringFormatter.displayErrorMessage(player, SaveMessage.ERROR_SAVE_FILE_SYSTEM_ERROR);
new FormatBuilder(SaveMessage.ERROR_SAVE_FILE_SYSTEM_ERROR).error(player);
return null;
}
@@ -178,23 +174,19 @@ public class CommandSave implements TabExecutor {
String fullCommand = "/" + command + " true";
boolean isUnnamed = fileName.contains(stringFormatter.getUnFormattedColoredMessage(
Formatting.NEUTRAL_UNKNOWN_TITLE) + separator);
boolean isUnnamed = fileName.contains(new FormatBuilder(Formatting.NEUTRAL_UNKNOWN_TITLE).build() + separator);
// Skip duplicate unnamed book saving
if (!isUnnamed && !overwrite) {
stringFormatter.displayErrorMessage(player, SaveMessage.ERROR_SAVE_DUPLICATE_NAMED);
stringFormatter.displayErrorMessage(player, stringFormatter.replacePlaceholder(
SaveMessage.ERROR_SAVE_OVERWRITE_REQUIRED, "{command}", fullCommand));
new FormatBuilder(SaveMessage.ERROR_SAVE_DUPLICATE_NAMED).error(player);
new FormatBuilder(SaveMessage.ERROR_SAVE_OVERWRITE_REQUIRED).replace("{command}", fullCommand).error(player);
return null;
}
// Skip if duplicate limit is reached
if (foundDuplicates > duplicateLimit) {
stringFormatter.displayErrorMessage(player, stringFormatter.replacePlaceholder(
SaveMessage.ERROR_SAVE_DUPLICATE_UNNAMED, "{fileName}", fileName));
stringFormatter.displayErrorMessage(player, stringFormatter.replacePlaceholder(
SaveMessage.ERROR_SAVE_OVERWRITE_REQUIRED, "{command}", fullCommand));
new FormatBuilder(SaveMessage.ERROR_SAVE_DUPLICATE_UNNAMED).replace("{fileName}", fileName).error(player);
new FormatBuilder(SaveMessage.ERROR_SAVE_OVERWRITE_REQUIRED).replace("{command}", fullCommand).error(player);
return null;
}

View File

@@ -1,10 +1,9 @@
package net.knarcraft.bookswithoutborders.command;
import net.knarcraft.bookswithoutborders.BooksWithoutBorders;
import net.knarcraft.bookswithoutborders.config.translation.Translatable;
import net.knarcraft.bookswithoutborders.state.ItemSlot;
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.util.ColorHelper;
import org.bukkit.command.Command;
@@ -27,22 +26,19 @@ public class CommandSetAuthor 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)) {
stringFormatter.displayErrorMessage(sender, Translatable.ERROR_PLAYER_ONLY);
new FormatBuilder(Translatable.ERROR_PLAYER_ONLY).error(sender);
return false;
}
if (arguments.length < 1) {
stringFormatter.displayErrorMessage(player, Translatable.ERROR_AUTHOR_BLANK);
new FormatBuilder(Translatable.ERROR_AUTHOR_BLANK).error(player);
return false;
}
if (InventoryHelper.notHoldingOneWrittenBookCheck(player,
stringFormatter.replacePlaceholder(Translatable.ERROR_NOT_HOLDING_WRITTEN_BOOK, "{action}",
stringFormatter.getUnFormattedColoredMessage(Translatable.ACTION_SET_AUTHOR)),
stringFormatter.replacePlaceholder(Translatable.ERROR_ONLY_ONE_BOOK, "{action}",
stringFormatter.getUnFormattedColoredMessage(Translatable.ACTION_SET_AUTHOR)))) {
new FormatBuilder(Translatable.ERROR_NOT_HOLDING_WRITTEN_BOOK).replace("{action}", Translatable.ACTION_SET_AUTHOR).build(),
new FormatBuilder(Translatable.ERROR_ONLY_ONE_BOOK).replace("{action}", Translatable.ACTION_SET_AUTHOR).build())) {
return false;
}
@@ -51,15 +47,14 @@ public class CommandSetAuthor implements TabExecutor {
ItemStack heldBook = InventoryHelper.getHeldItem(player, mainHand);
BookMeta bookMetaData = InventoryHelper.getHeldBookMetadata(player, mainHand);
if (bookMetaData == null) {
stringFormatter.displayErrorMessage(sender, Translatable.ERROR_METADATA_MISSING);
new FormatBuilder(Translatable.ERROR_METADATA_MISSING).error(player);
return false;
}
String author = ColorHelper.translateColorCodes(String.join(" ", arguments), ColorConversion.RGB);
bookMetaData.setAuthor(author);
heldBook.setItemMeta(bookMetaData);
stringFormatter.displaySuccessMessage(player, stringFormatter.replacePlaceholder(Translatable.SUCCESS_SET_AUTHOR,
"{author}", author));
new FormatBuilder(Translatable.SUCCESS_SET_AUTHOR).replace("{author}", author).success(player);
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.utility.InventoryHelper;
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 org.bukkit.Material;
import org.bukkit.command.Command;
@@ -33,7 +33,6 @@ public class CommandSetBookPrice implements TabExecutor {
@Override
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label,
@NotNull String[] arguments) {
StringFormatter stringFormatter = BooksWithoutBorders.getStringFormatter();
//Clear the current price
if (arguments.length == 0) {
clearItemPrice(sender);
@@ -42,7 +41,7 @@ public class CommandSetBookPrice implements TabExecutor {
//Warn about missing arguments
if (arguments.length < 2) {
stringFormatter.displayErrorMessage(sender, CostMessage.ERROR_COST_NOT_SPECIFIED);
new FormatBuilder(CostMessage.ERROR_COST_NOT_SPECIFIED).error(sender);
return false;
}
@@ -50,11 +49,11 @@ public class CommandSetBookPrice implements TabExecutor {
try {
price = Double.parseDouble(arguments[1]);
if (price <= 0) {
stringFormatter.displayErrorMessage(sender, CostMessage.ERROR_COST_INVALID_QUANTITY);
new FormatBuilder(CostMessage.ERROR_COST_INVALID_QUANTITY).error(sender);
return false;
}
} catch (NumberFormatException exception) {
stringFormatter.displayErrorMessage(sender, CostMessage.ERROR_COST_INVALID_QUANTITY);
new FormatBuilder(CostMessage.ERROR_COST_INVALID_QUANTITY).error(sender);
return false;
}
@@ -62,7 +61,7 @@ public class CommandSetBookPrice implements TabExecutor {
case "item" -> setItemPrice(sender, price);
case "economy" -> setEconomyPrice(sender, price);
default -> {
stringFormatter.displayErrorMessage(sender, CostMessage.ERROR_COST_INVALID_TYPE);
new FormatBuilder(CostMessage.ERROR_COST_INVALID_TYPE).error(sender);
yield false;
}
};
@@ -92,15 +91,14 @@ public class CommandSetBookPrice implements TabExecutor {
* @return <p>True if the price was changed successfully</p>
*/
private boolean setItemPrice(@NotNull CommandSender sender, double price) {
StringFormatter stringFormatter = BooksWithoutBorders.getStringFormatter();
if (!(sender instanceof Player player)) {
stringFormatter.displayErrorMessage(sender, Translatable.ERROR_PLAYER_ONLY);
new FormatBuilder(Translatable.ERROR_PLAYER_ONLY).error(sender);
return false;
}
ItemStack heldItem = InventoryHelper.getHeldItem(player, true);
if (heldItem.getType() == Material.AIR) {
stringFormatter.displayErrorMessage(sender, CostMessage.ERROR_COST_ITEM_MISSING);
new FormatBuilder(CostMessage.ERROR_COST_ITEM_MISSING).error(sender);
return false;
}
@@ -113,9 +111,8 @@ public class CommandSetBookPrice implements TabExecutor {
booksWithoutBorders.getConfig().set(ConfigOption.PRICE_QUANTITY.getConfigNode(), newPriceQuantity);
booksWithoutBorders.saveConfig();
stringFormatter.displaySuccessMessage(sender, stringFormatter.replacePlaceholders(
CostMessage.SUCCESS_COST_ITEM_SET, List.of("{quantity}", "{price}"),
List.of(String.valueOf((int) newPriceQuantity), newPriceType)));
new FormatBuilder(CostMessage.SUCCESS_COST_ITEM_SET).replace("{quantity}",
String.valueOf((int) newPriceQuantity)).replace("{price}", newPriceType).success(sender);
return true;
}
@@ -127,7 +124,6 @@ public class CommandSetBookPrice implements TabExecutor {
* @return <p>True if the price was changed successfully</p>
*/
private boolean setEconomyPrice(@NotNull CommandSender sender, double price) {
StringFormatter stringFormatter = BooksWithoutBorders.getStringFormatter();
EconomyManager economyManager = BooksWithoutBorders.getConfiguration().getEconomyManager();
if (economyManager.getEconomy() != null) {
BwBConfig config = BooksWithoutBorders.getConfiguration();
@@ -138,12 +134,11 @@ public class CommandSetBookPrice implements TabExecutor {
booksWithoutBorders.getConfig().set(ConfigOption.PRICE_QUANTITY.getConfigNode(), newPriceQuantity);
booksWithoutBorders.saveConfig();
stringFormatter.displaySuccessMessage(sender, stringFormatter.replacePlaceholder(
CostMessage.SUCCESS_COST_ECONOMY_SET, "{cost}", economyManager.getEconomy().format(newPriceQuantity)));
new FormatBuilder(CostMessage.SUCCESS_COST_ECONOMY_SET).replace("{cost}",
economyManager.getEconomy().format(newPriceQuantity)).success(sender);
return true;
} else {
BooksWithoutBorders.getStringFormatter().displayErrorMessage(sender,
StaticMessage.EXCEPTION_VAULT_PRICE_NOT_CHANGED.toString());
new FormatBuilder(StaticMessage.EXCEPTION_VAULT_PRICE_NOT_CHANGED.toString()).error(sender);
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.container.Bookshelf;
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 org.bukkit.Material;
import org.bukkit.block.Block;
@@ -28,15 +28,14 @@ public class CommandSetBookshelfData implements TabExecutor {
@Override
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String s,
@NotNull String[] arguments) {
StringFormatter stringFormatter = BooksWithoutBorders.getStringFormatter();
if (!(sender instanceof Player player)) {
stringFormatter.displayErrorMessage(sender, Translatable.ERROR_PLAYER_ONLY);
new FormatBuilder(Translatable.ERROR_PLAYER_ONLY).error(sender);
return false;
}
Block targetBlock = player.getTargetBlockExact(7);
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;
}
@@ -48,9 +47,9 @@ public class CommandSetBookshelfData implements TabExecutor {
if (bookshelf != null) {
shelfHandler.unregisterBookshelf(bookshelf);
shelfHandler.save();
stringFormatter.displaySuccessMessage(sender, BookshelfMessage.SUCCESS_BOOKSHELF_DATA_DELETED);
new FormatBuilder(BookshelfMessage.SUCCESS_BOOKSHELF_DATA_DELETED).success(sender);
} else {
stringFormatter.displayErrorMessage(sender, BookshelfMessage.ERROR_BOOKSHELF_NOT_REGISTERED);
new FormatBuilder(BookshelfMessage.ERROR_BOOKSHELF_NOT_REGISTERED).error(sender);
}
return true;
} else {
@@ -73,16 +72,16 @@ public class CommandSetBookshelfData implements TabExecutor {
bookshelf.setTitle(builder.toString());
}
shelfHandler.save();
stringFormatter.displaySuccessMessage(sender, BookshelfMessage.SUCCESS_BOOKSHELF_TITLE_SET);
new FormatBuilder(BookshelfMessage.SUCCESS_BOOKSHELF_TITLE_SET).success(sender);
return true;
case "lore":
if (bookshelf == null) {
stringFormatter.displayErrorMessage(sender, BookshelfMessage.ERROR_BOOKSHELF_NAME_REQUIRED);
new FormatBuilder(BookshelfMessage.ERROR_BOOKSHELF_NAME_REQUIRED).error(sender);
} else {
List<String> loreParts = Arrays.asList(builder.toString().split(BooksWithoutBorders.getConfiguration().getLoreSeparator()));
bookshelf.setLore(loreParts);
shelfHandler.save();
stringFormatter.displaySuccessMessage(sender, BookshelfMessage.SUCCESS_BOOKSHELF_LORE_SET);
new FormatBuilder(BookshelfMessage.SUCCESS_BOOKSHELF_LORE_SET).success(sender);
}
return true;
}

View File

@@ -1,9 +1,8 @@
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.formatting.FormatBuilder;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.command.TabExecutor;
@@ -24,22 +23,19 @@ 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)) {
stringFormatter.displayErrorMessage(sender, Translatable.ERROR_PLAYER_ONLY);
new FormatBuilder(Translatable.ERROR_PLAYER_ONLY).error(sender);
return false;
}
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)))) {
new FormatBuilder(Translatable.ERROR_NOT_HOLDING_WRITTEN_BOOK).replace("{action}", Translatable.ACTION_CHANGE_GENERATION).build(),
new FormatBuilder(Translatable.ERROR_ONLY_ONE_BOOK).replace("{action}", Translatable.ACTION_CHANGE_GENERATION).build())) {
return false;
}
if (arguments.length < 1) {
stringFormatter.displayErrorMessage(player, Translatable.ERROR_GENERATION_NOT_SPECIFIED);
new FormatBuilder(Translatable.ERROR_GENERATION_NOT_SPECIFIED).error(player);
return false;
}
@@ -47,7 +43,7 @@ public class CommandSetGeneration implements TabExecutor {
try {
generation = BookMeta.Generation.valueOf(arguments[0]);
} catch (IllegalArgumentException exception) {
stringFormatter.displayErrorMessage(player, Translatable.ERROR_GENERATION_INVALID);
new FormatBuilder(Translatable.ERROR_GENERATION_INVALID).error(player);
return false;
}
@@ -56,10 +52,10 @@ public class CommandSetGeneration implements TabExecutor {
if (bookMeta != null) {
bookMeta.setGeneration(generation);
heldBook.setItemMeta(bookMeta);
stringFormatter.displayErrorMessage(player, Translatable.SUCCESS_GENERATION_CHANGED);
new FormatBuilder(Translatable.SUCCESS_GENERATION_CHANGED).success(player);
return true;
} else {
stringFormatter.displayErrorMessage(player, Translatable.ERROR_METADATA_MISSING);
new FormatBuilder(Translatable.ERROR_METADATA_MISSING).error(player);
return false;
}
}

View File

@@ -3,7 +3,7 @@ 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.formatting.FormatBuilder;
import net.knarcraft.knarlib.property.ColorConversion;
import net.knarcraft.knarlib.util.ColorHelper;
import org.bukkit.Material;
@@ -27,20 +27,19 @@ 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)) {
stringFormatter.displayErrorMessage(sender, Translatable.ERROR_PLAYER_ONLY);
new FormatBuilder(Translatable.ERROR_PLAYER_ONLY).error(sender);
return false;
}
if (arguments.length < 1) {
stringFormatter.displayErrorMessage(player, Translatable.ERROR_LORE_EMPTY);
new FormatBuilder(Translatable.ERROR_LORE_EMPTY).error(player);
return false;
}
ItemStack heldItem = InventoryHelper.getHeldItem(player, true);
if (heldItem.getType() == Material.AIR) {
stringFormatter.displayErrorMessage(player, Translatable.ERROR_NO_ITEM);
new FormatBuilder(Translatable.ERROR_NO_ITEM).error(player);
return false;
}
@@ -54,12 +53,12 @@ public class CommandSetLore implements TabExecutor {
//Update lore
ItemMeta meta = heldItem.getItemMeta();
if (meta == null) {
stringFormatter.displayErrorMessage(player, Translatable.ERROR_METADATA_MISSING);
new FormatBuilder(Translatable.ERROR_METADATA_MISSING).error(player);
return false;
}
meta.setLore(newLore);
heldItem.setItemMeta(meta);
stringFormatter.displaySuccessMessage(player, Translatable.SUCCESS_LORE_SET);
new FormatBuilder(Translatable.SUCCESS_LORE_SET).success(player);
return true;
}

View File

@@ -1,9 +1,8 @@
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.formatting.FormatBuilder;
import net.knarcraft.knarlib.property.ColorConversion;
import net.knarcraft.knarlib.util.ColorHelper;
import org.bukkit.Material;
@@ -27,20 +26,19 @@ 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)) {
stringFormatter.displayErrorMessage(sender, Translatable.ERROR_PLAYER_ONLY);
new FormatBuilder(Translatable.ERROR_PLAYER_ONLY).error(sender);
return false;
}
if (arguments.length < 1) {
stringFormatter.displayErrorMessage(player, Translatable.ERROR_TITLE_EMPTY);
new FormatBuilder(Translatable.ERROR_TITLE_EMPTY).error(player);
return false;
}
ItemStack heldItem = InventoryHelper.getHeldItem(player, true);
if (heldItem.getType() == Material.AIR) {
stringFormatter.displayErrorMessage(sender, Translatable.ERROR_NO_ITEM);
new FormatBuilder(Translatable.ERROR_NO_ITEM).error(player);
return false;
}
@@ -49,7 +47,7 @@ public class CommandSetTitle implements TabExecutor {
ItemMeta itemMetadata = heldItem.getItemMeta();
if (itemMetadata == null) {
stringFormatter.displayErrorMessage(sender, Translatable.ERROR_METADATA_MISSING);
new FormatBuilder(Translatable.ERROR_METADATA_MISSING).error(player);
return false;
}
@@ -57,7 +55,7 @@ public class CommandSetTitle implements TabExecutor {
ItemMeta newMetaData;
if (heldItem.getType() == Material.WRITTEN_BOOK) {
if (title.length() > 32) {
stringFormatter.displayErrorMessage(sender, Translatable.ERROR_TITLE_LENGTH);
new FormatBuilder(Translatable.ERROR_TITLE_LENGTH).error(player);
return false;
}
BookMeta bookMetadata = (BookMeta) itemMetadata;
@@ -70,8 +68,7 @@ public class CommandSetTitle implements TabExecutor {
//Set the new metadata
heldItem.setItemMeta(newMetaData);
stringFormatter.displaySuccessMessage(sender,
stringFormatter.replacePlaceholder(Translatable.SUCCESS_TITLE_SET, "{title}", title));
new FormatBuilder(Translatable.SUCCESS_TITLE_SET).replace("{title}", title).success(player);
return true;
}

View File

@@ -28,6 +28,16 @@ public enum Formatting implements TranslatableMessage {
*/
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
*/

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_ITEM: "&c[{quantity} {type} (s) are required to create a book]\n"
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_PERMISSION: " &7{{permission}}"
NEUTRAL_COMMANDS_ALIASES: " &f(&b{aliases}&f)"