Removes lots of static strings
This commit is contained in:
@@ -1,7 +1,6 @@
|
||||
package net.knarcraft.bookswithoutborders.command;
|
||||
|
||||
import net.knarcraft.bookswithoutborders.BooksWithoutBorders;
|
||||
import net.knarcraft.bookswithoutborders.config.BwBCommand;
|
||||
import net.knarcraft.bookswithoutborders.config.Translatable;
|
||||
import net.knarcraft.bookswithoutborders.gui.PagedBookIndex;
|
||||
import net.knarcraft.bookswithoutborders.state.BookDirectory;
|
||||
@@ -33,7 +32,7 @@ public class CommandDelete implements TabExecutor {
|
||||
return false;
|
||||
}
|
||||
|
||||
return deleteBook(sender, arguments, false);
|
||||
return deleteBook(sender, arguments, false, label);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -42,12 +41,12 @@ public class CommandDelete implements TabExecutor {
|
||||
* @param sender <p>The sender trying to delete the book</p>
|
||||
* @param arguments <p>The arguments given</p>
|
||||
* @param deletePublic <p>Whether to delete a public book</p>
|
||||
* @param commandName <p>The name of the command calling this method</p>
|
||||
* @return <p>True if the book was deleted successfully</p>
|
||||
*/
|
||||
protected boolean deleteBook(@NotNull CommandSender sender, @NotNull String[] arguments, boolean deletePublic) {
|
||||
String command = deletePublic ? BwBCommand.DELETE_PUBLIC_BOOK.toString().toLowerCase() :
|
||||
BwBCommand.DELETE_BOOK.toString().toLowerCase();
|
||||
if (PagedBookIndex.displayPage(arguments, sender, deletePublic, command)) {
|
||||
protected boolean deleteBook(@NotNull CommandSender sender, @NotNull String[] arguments, boolean deletePublic,
|
||||
@NotNull String commandName) {
|
||||
if (PagedBookIndex.displayPage(arguments, sender, deletePublic, commandName)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@@ -15,7 +15,7 @@ public class CommandDeletePublic extends CommandDelete implements TabExecutor {
|
||||
@Override
|
||||
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label,
|
||||
@NotNull String[] arguments) {
|
||||
return deleteBook(sender, arguments, true);
|
||||
return deleteBook(sender, arguments, true, label);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@@ -36,22 +36,22 @@ public class CommandGive implements TabExecutor {
|
||||
return false;
|
||||
}
|
||||
|
||||
return giveBook(sender, arguments, false, "player");
|
||||
return giveBook(sender, arguments, false, "player", label);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gives a book to another player
|
||||
*
|
||||
* @param sender <p>The sender trying to give a book</p>
|
||||
* @param arguments <p>The arguments given</p>
|
||||
* @param givePublic <p>Whether to give a public book</p>
|
||||
* @param folder <p>The folder containing the book to load</p>
|
||||
* @param sender <p>The sender trying to give a book</p>
|
||||
* @param arguments <p>The arguments given</p>
|
||||
* @param givePublic <p>Whether to give a public book</p>
|
||||
* @param folder <p>The folder containing the book to load</p>
|
||||
* @param commandName <p>The name of the command calling this method</p>
|
||||
* @return <p>True if the book was given successfully</p>
|
||||
*/
|
||||
boolean giveBook(@NotNull CommandSender sender, @NotNull String[] arguments, boolean givePublic,
|
||||
@NotNull String folder) {
|
||||
String command = givePublic ? "givepublicbook" : "givebook";
|
||||
if (PagedBookIndex.displayPage(arguments, sender, givePublic, command)) {
|
||||
@NotNull String folder, @NotNull String commandName) {
|
||||
if (PagedBookIndex.displayPage(arguments, sender, givePublic, commandName)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@@ -16,7 +16,7 @@ public class CommandGivePublic extends CommandGive implements TabExecutor {
|
||||
@Override
|
||||
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label,
|
||||
@NotNull String[] arguments) {
|
||||
return giveBook(sender, arguments, true, "public");
|
||||
return giveBook(sender, arguments, true, "public", label);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@@ -26,20 +26,21 @@ public class CommandLoad implements TabExecutor {
|
||||
@Override
|
||||
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label,
|
||||
@NotNull String[] arguments) {
|
||||
return loadBook(sender, arguments, "player", false);
|
||||
return loadBook(sender, arguments, "player", false, label);
|
||||
}
|
||||
|
||||
/**
|
||||
* Loads a stored book
|
||||
*
|
||||
* @param sender <p>The sender asking to load the book</p>
|
||||
* @param arguments <p>The arguments given</p>
|
||||
* @param directory <p>The directory to load from (public/player)</p>
|
||||
* @param loadPublic <p>Whether to list public files as loadable</p>
|
||||
* @param sender <p>The sender asking to load the book</p>
|
||||
* @param arguments <p>The arguments given</p>
|
||||
* @param directory <p>The directory to load from (public/player)</p>
|
||||
* @param loadPublic <p>Whether to list public files as loadable</p>
|
||||
* @param commandName <p>The name of the command calling this method</p>
|
||||
* @return <p>True if the book was loaded successfully</p>
|
||||
*/
|
||||
public boolean loadBook(@NotNull CommandSender sender, @NotNull String[] arguments, @NotNull String directory,
|
||||
boolean loadPublic) {
|
||||
boolean loadPublic, @NotNull String commandName) {
|
||||
StringFormatter stringFormatter = BooksWithoutBorders.getStringFormatter();
|
||||
if (!(sender instanceof Player player)) {
|
||||
stringFormatter.displayErrorMessage(sender, Translatable.ERROR_PLAYER_ONLY);
|
||||
@@ -53,8 +54,7 @@ public class CommandLoad implements TabExecutor {
|
||||
|
||||
int argumentCount = arguments.length;
|
||||
|
||||
String command = loadPublic ? "loadpublicbook" : "loadbook";
|
||||
if (PagedBookIndex.displayPage(arguments, sender, loadPublic, command)) {
|
||||
if (PagedBookIndex.displayPage(arguments, sender, loadPublic, commandName)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@@ -15,7 +15,7 @@ public class CommandLoadPublic extends CommandLoad implements CommandExecutor {
|
||||
@Override
|
||||
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label,
|
||||
@NotNull String[] arguments) {
|
||||
return loadBook(sender, arguments, "public", true);
|
||||
return loadBook(sender, arguments, "public", true, label);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@@ -176,7 +176,8 @@ public class CommandSave implements TabExecutor {
|
||||
|
||||
String fullCommand = "/" + command + " true";
|
||||
|
||||
boolean isUnnamed = fileName.contains("Untitled" + separator);
|
||||
boolean isUnnamed = fileName.contains(stringFormatter.getUnFormattedColoredMessage(
|
||||
Translatable.NEUTRAL_UNKNOWN_TITLE) + separator);
|
||||
|
||||
// Skip duplicate unnamed book saving
|
||||
if (!isUnnamed && !overwrite) {
|
||||
|
@@ -1,8 +1,10 @@
|
||||
package net.knarcraft.bookswithoutborders.command;
|
||||
|
||||
import net.knarcraft.bookswithoutborders.BooksWithoutBorders;
|
||||
import net.knarcraft.bookswithoutborders.config.Translatable;
|
||||
import net.knarcraft.bookswithoutborders.state.ItemSlot;
|
||||
import net.knarcraft.bookswithoutborders.utility.InventoryHelper;
|
||||
import net.knarcraft.knarlib.formatting.StringFormatter;
|
||||
import net.knarcraft.knarlib.property.ColorConversion;
|
||||
import net.knarcraft.knarlib.util.ColorHelper;
|
||||
import org.bukkit.command.Command;
|
||||
@@ -25,19 +27,22 @@ 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)) {
|
||||
BooksWithoutBorders.sendErrorMessage(sender, "This command can only be used by a player!");
|
||||
stringFormatter.displayErrorMessage(sender, Translatable.ERROR_PLAYER_ONLY);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (arguments.length < 1) {
|
||||
BooksWithoutBorders.sendErrorMessage(player, "Too few command arguments!");
|
||||
stringFormatter.displayErrorMessage(player, Translatable.ERROR_AUTHOR_BLANK);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (InventoryHelper.notHoldingOneWrittenBookCheck(player,
|
||||
"You must be holding a written book to set author!", "You cannot set the " +
|
||||
"author of two books at once!")) {
|
||||
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)))) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -46,14 +51,15 @@ public class CommandSetAuthor implements TabExecutor {
|
||||
ItemStack heldBook = InventoryHelper.getHeldItem(player, mainHand);
|
||||
BookMeta bookMetaData = InventoryHelper.getHeldBookMetadata(player, mainHand);
|
||||
if (bookMetaData == null) {
|
||||
BooksWithoutBorders.sendErrorMessage(player, "Unable to get metadata for the held book!");
|
||||
stringFormatter.displayErrorMessage(sender, Translatable.ERROR_METADATA_MISSING);
|
||||
return false;
|
||||
}
|
||||
|
||||
String author = ColorHelper.translateColorCodes(String.join(" ", arguments), ColorConversion.RGB);
|
||||
bookMetaData.setAuthor(author);
|
||||
heldBook.setItemMeta(bookMetaData);
|
||||
BooksWithoutBorders.sendSuccessMessage(player, "Book author set to " + author + "!");
|
||||
stringFormatter.displaySuccessMessage(player, stringFormatter.replacePlaceholder(Translatable.SUCCESS_SET_AUTHOR,
|
||||
"{author}", author));
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@@ -2,10 +2,13 @@ package net.knarcraft.bookswithoutborders.command;
|
||||
|
||||
import net.knarcraft.bookswithoutborders.BooksWithoutBorders;
|
||||
import net.knarcraft.bookswithoutborders.config.BwBConfig;
|
||||
import net.knarcraft.bookswithoutborders.config.ConfigOption;
|
||||
import net.knarcraft.bookswithoutborders.config.StaticMessage;
|
||||
import net.knarcraft.bookswithoutborders.config.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.util.TabCompletionHelper;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.command.Command;
|
||||
@@ -29,6 +32,7 @@ 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);
|
||||
@@ -37,32 +41,30 @@ public class CommandSetBookPrice implements TabExecutor {
|
||||
|
||||
//Warn about missing arguments
|
||||
if (arguments.length < 2) {
|
||||
BooksWithoutBorders.sendErrorMessage(sender, "[Item/Eco] and [quantity] must be specified!");
|
||||
return false;
|
||||
}
|
||||
|
||||
//Warn about invalid argument
|
||||
if (!arguments[0].equalsIgnoreCase("Item") && !arguments[0].equalsIgnoreCase("Eco")) {
|
||||
BooksWithoutBorders.sendErrorMessage(sender, "Price type must be \"Item\" or \"Eco\"!");
|
||||
stringFormatter.displayErrorMessage(sender, Translatable.ERROR_COST_NOT_SPECIFIED);
|
||||
return false;
|
||||
}
|
||||
|
||||
double price;
|
||||
try {
|
||||
double price = Double.parseDouble(arguments[1]);
|
||||
price = Double.parseDouble(arguments[1]);
|
||||
if (price <= 0) {
|
||||
BooksWithoutBorders.sendErrorMessage(sender, "[quantity] must be greater than 0!");
|
||||
stringFormatter.displayErrorMessage(sender, Translatable.ERROR_COST_INVALID_QUANTITY);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (arguments[0].equalsIgnoreCase("Item")) {
|
||||
return setItemPrice(sender, price);
|
||||
} else if (arguments[0].equalsIgnoreCase("Eco")) {
|
||||
return setEconomyPrice(sender, price);
|
||||
}
|
||||
} catch (NumberFormatException e) {
|
||||
BooksWithoutBorders.sendErrorMessage(sender, "[quantity] must be a number!");
|
||||
stringFormatter.displayErrorMessage(sender, Translatable.ERROR_COST_INVALID_QUANTITY);
|
||||
return false;
|
||||
}
|
||||
return false;
|
||||
|
||||
return switch (arguments[0].toLowerCase()) {
|
||||
case "item" -> setItemPrice(sender, price);
|
||||
case "economy" -> setEconomyPrice(sender, price);
|
||||
default -> {
|
||||
stringFormatter.displayErrorMessage(sender, Translatable.ERROR_COST_INVALID_TYPE);
|
||||
yield false;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -74,11 +76,11 @@ public class CommandSetBookPrice implements TabExecutor {
|
||||
BwBConfig config = BooksWithoutBorders.getConfiguration();
|
||||
config.setBookPriceType(null);
|
||||
config.setBookPriceQuantity(0);
|
||||
booksWithoutBorders.getConfig().set("Options.Price_to_create_book.Item_type", "Item type name");
|
||||
booksWithoutBorders.getConfig().set("Options.Price_to_create_book.Required_quantity", config.getBookPriceQuantity());
|
||||
booksWithoutBorders.getConfig().set(ConfigOption.PRICE_ITEM_TYPE.getConfigNode(), "Item type name");
|
||||
booksWithoutBorders.getConfig().set(ConfigOption.PRICE_QUANTITY.getConfigNode(), config.getBookPriceQuantity());
|
||||
booksWithoutBorders.saveConfig();
|
||||
|
||||
BooksWithoutBorders.sendSuccessMessage(sender, "Price to create books removed!");
|
||||
BooksWithoutBorders.getStringFormatter().displaySuccessMessage(sender, Translatable.SUCCESS_COST_REMOVED);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -89,14 +91,15 @@ 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)) {
|
||||
BooksWithoutBorders.sendErrorMessage(sender, "[Item] price can only be used by a player!");
|
||||
stringFormatter.displayErrorMessage(sender, Translatable.ERROR_PLAYER_ONLY);
|
||||
return false;
|
||||
}
|
||||
|
||||
ItemStack heldItem = InventoryHelper.getHeldItem(player, true);
|
||||
if (heldItem.getType() == Material.AIR) {
|
||||
BooksWithoutBorders.sendErrorMessage(sender, "Must be holding an item to set an [Item] price!");
|
||||
stringFormatter.displayErrorMessage(sender, Translatable.ERROR_COST_ITEM_MISSING);
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -105,12 +108,13 @@ public class CommandSetBookPrice implements TabExecutor {
|
||||
config.setBookPriceQuantity(price);
|
||||
String newPriceType = config.getBookPriceType().toString();
|
||||
double newPriceQuantity = config.getBookPriceQuantity();
|
||||
booksWithoutBorders.getConfig().set("Options.Price_to_create_book.Item_type", newPriceType);
|
||||
booksWithoutBorders.getConfig().set("Options.Price_to_create_book.Required_quantity", newPriceQuantity);
|
||||
booksWithoutBorders.getConfig().set(ConfigOption.PRICE_ITEM_TYPE.getConfigNode(), newPriceType);
|
||||
booksWithoutBorders.getConfig().set(ConfigOption.PRICE_QUANTITY.getConfigNode(), newPriceQuantity);
|
||||
booksWithoutBorders.saveConfig();
|
||||
|
||||
BooksWithoutBorders.sendSuccessMessage(sender, "Book creation price set to " + (int) newPriceQuantity +
|
||||
" " + newPriceType + "(s)!");
|
||||
stringFormatter.displaySuccessMessage(sender, stringFormatter.replacePlaceholders(
|
||||
Translatable.SUCCESS_COST_ITEM_SET, List.of("{quantity}", "{price}"),
|
||||
List.of(String.valueOf((int) newPriceQuantity), newPriceType)));
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -122,18 +126,19 @@ 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();
|
||||
config.setBookPriceQuantity(price);
|
||||
config.setBookPriceType(Material.AIR);
|
||||
double newPriceQuantity = config.getBookPriceQuantity();
|
||||
booksWithoutBorders.getConfig().set("Options.Price_to_create_book.Item_type", "Economy");
|
||||
booksWithoutBorders.getConfig().set("Options.Price_to_create_book.Required_quantity", newPriceQuantity);
|
||||
booksWithoutBorders.getConfig().set(ConfigOption.PRICE_ITEM_TYPE.getConfigNode(), "Economy");
|
||||
booksWithoutBorders.getConfig().set(ConfigOption.PRICE_QUANTITY.getConfigNode(), newPriceQuantity);
|
||||
booksWithoutBorders.saveConfig();
|
||||
|
||||
BooksWithoutBorders.sendSuccessMessage(sender, "Book creation price set to " +
|
||||
economyManager.getEconomy().format(newPriceQuantity) + "!");
|
||||
stringFormatter.displaySuccessMessage(sender, stringFormatter.replacePlaceholder(
|
||||
Translatable.SUCCESS_COST_ECONOMY_SET, "{cost}", economyManager.getEconomy().format(newPriceQuantity)));
|
||||
return true;
|
||||
} else {
|
||||
BooksWithoutBorders.sendErrorMessage(sender, StaticMessage.EXCEPTION_VAULT_PRICE_NOT_CHANGED.toString());
|
||||
@@ -163,7 +168,7 @@ public class CommandSetBookPrice implements TabExecutor {
|
||||
private void initializeTabCompleteLists() {
|
||||
paymentTypes = new ArrayList<>();
|
||||
paymentTypes.add("item");
|
||||
paymentTypes.add("eco");
|
||||
paymentTypes.add("economy");
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -1,8 +1,10 @@
|
||||
package net.knarcraft.bookswithoutborders.command;
|
||||
|
||||
import net.knarcraft.bookswithoutborders.BooksWithoutBorders;
|
||||
import net.knarcraft.bookswithoutborders.config.Translatable;
|
||||
import net.knarcraft.bookswithoutborders.container.Bookshelf;
|
||||
import net.knarcraft.bookswithoutborders.handler.BookshelfHandler;
|
||||
import net.knarcraft.knarlib.formatting.StringFormatter;
|
||||
import net.knarcraft.knarlib.util.TabCompletionHelper;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.Block;
|
||||
@@ -23,16 +25,17 @@ import java.util.List;
|
||||
public class CommandSetBookshelfData implements TabExecutor {
|
||||
|
||||
@Override
|
||||
public boolean onCommand(@NotNull CommandSender commandSender, @NotNull Command command, @NotNull String s,
|
||||
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String s,
|
||||
@NotNull String[] arguments) {
|
||||
if (!(commandSender instanceof Player player)) {
|
||||
BooksWithoutBorders.sendErrorMessage(commandSender, "This command must be used by a player!");
|
||||
StringFormatter stringFormatter = BooksWithoutBorders.getStringFormatter();
|
||||
if (!(sender instanceof Player player)) {
|
||||
stringFormatter.displayErrorMessage(sender, Translatable.ERROR_PLAYER_ONLY);
|
||||
return false;
|
||||
}
|
||||
|
||||
Block targetBlock = player.getTargetBlockExact(7);
|
||||
if (targetBlock == null || targetBlock.getType() != Material.CHISELED_BOOKSHELF) {
|
||||
BooksWithoutBorders.sendErrorMessage(commandSender, "You are not looking at a bookshelf!");
|
||||
stringFormatter.displayErrorMessage(sender, Translatable.ERROR_BOOKSHELF_NOT_FOUND);
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -44,9 +47,9 @@ public class CommandSetBookshelfData implements TabExecutor {
|
||||
if (bookshelf != null) {
|
||||
shelfHandler.unregisterBookshelf(bookshelf);
|
||||
shelfHandler.save();
|
||||
BooksWithoutBorders.sendSuccessMessage(commandSender, "Bookshelf successfully deleted");
|
||||
stringFormatter.displaySuccessMessage(sender, Translatable.SUCCESS_BOOKSHELF_DATA_DELETED);
|
||||
} else {
|
||||
BooksWithoutBorders.sendErrorMessage(commandSender, "The block you are looking at is not a registered bookshelf");
|
||||
stringFormatter.displayErrorMessage(sender, Translatable.ERROR_BOOKSHELF_NOT_REGISTERED);
|
||||
}
|
||||
return true;
|
||||
} else {
|
||||
@@ -69,17 +72,16 @@ public class CommandSetBookshelfData implements TabExecutor {
|
||||
bookshelf.setTitle(builder.toString());
|
||||
}
|
||||
shelfHandler.save();
|
||||
BooksWithoutBorders.sendSuccessMessage(commandSender, "Title successfully saved");
|
||||
stringFormatter.displaySuccessMessage(sender, Translatable.SUCCESS_BOOKSHELF_TITLE_SET);
|
||||
return true;
|
||||
case "lore":
|
||||
if (bookshelf == null) {
|
||||
BooksWithoutBorders.sendErrorMessage(commandSender, "You must name the bookshelf before " +
|
||||
"assigning lore!");
|
||||
stringFormatter.displayErrorMessage(sender, Translatable.ERROR_BOOKSHELF_NAME_REQUIRED);
|
||||
} else {
|
||||
List<String> loreParts = Arrays.asList(builder.toString().split(BooksWithoutBorders.getConfiguration().getLoreSeparator()));
|
||||
bookshelf.setLore(loreParts);
|
||||
shelfHandler.save();
|
||||
BooksWithoutBorders.sendSuccessMessage(commandSender, "Lore successfully saved");
|
||||
stringFormatter.displaySuccessMessage(sender, Translatable.SUCCESS_BOOKSHELF_LORE_SET);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
@@ -289,7 +289,6 @@ public class BwBConfig {
|
||||
* Saves the config
|
||||
*/
|
||||
public void saveConfigValues() {
|
||||
Logger logger = BooksWithoutBorders.getInstance().getLogger();
|
||||
Configuration config = BooksWithoutBorders.getInstance().getConfig();
|
||||
config.set(ConfigOption.MAX_DUPLICATES.getConfigNode(), this.bookDuplicateLimit);
|
||||
config.set(ConfigOption.TITLE_AUTHOR_SEPARATOR.getConfigNode(), this.titleAuthorSeparator);
|
||||
@@ -317,20 +316,6 @@ public class BwBConfig {
|
||||
config.set(ConfigOption.AUTHOR_ONLY_UNSIGN.getConfigNode(), this.authorOnlyUnsign);
|
||||
config.set(ConfigOption.AUTHOR_ONLY_SAVE.getConfigNode(), this.authorOnlySave);
|
||||
config.set(ConfigOption.CHANGE_GENERATION_ON_COPY.getConfigNode(), this.changeGenerationOnCopy);
|
||||
|
||||
//Handles old book and quill settings
|
||||
if (config.contains("Options.Require_book_and_quill_to_create_book")) {
|
||||
logger.log(Level.INFO, "[BooksWithoutBorders] Found old config setting " +
|
||||
"\"Require_book_and_quill_to_create_book\"\nUpdating to \"Price_to_create_book\" settings");
|
||||
|
||||
if (config.getBoolean("Options.Require_book_and_quill_to_create_book")) {
|
||||
this.bookPriceType = Material.WRITABLE_BOOK;
|
||||
this.bookPriceQuantity = 1;
|
||||
config.set("Options.Price_to_create_book.Item_type", this.bookPriceType.toString());
|
||||
config.set("Options.Price_to_create_book.Required_quantity", this.bookPriceQuantity);
|
||||
}
|
||||
config.set("Options.Require_book_and_quill_to_create_book", null);
|
||||
}
|
||||
BooksWithoutBorders.getInstance().saveConfig();
|
||||
}
|
||||
|
||||
@@ -383,10 +368,10 @@ public class BwBConfig {
|
||||
//Make sure titleAuthorSeparator is a valid value
|
||||
this.titleAuthorSeparator = cleanString(this.titleAuthorSeparator);
|
||||
if (this.titleAuthorSeparator.length() != 1) {
|
||||
logger.log(Level.SEVERE, "Title-Author_Separator is set to an invalid value!\n" +
|
||||
logger.log(Level.SEVERE, "Title author separator is set to an invalid value!\n" +
|
||||
"Reverting to default value of \",\"");
|
||||
this.titleAuthorSeparator = ",";
|
||||
config.set("Options.Title-Author_Separator", this.titleAuthorSeparator);
|
||||
config.set(ConfigOption.TITLE_AUTHOR_SEPARATOR.getConfigNode(), this.titleAuthorSeparator);
|
||||
}
|
||||
} catch (Exception exception) {
|
||||
logger.log(Level.SEVERE, exception.getMessage());
|
||||
|
@@ -78,6 +78,41 @@ public enum Translatable implements TranslatableMessage {
|
||||
*/
|
||||
SUCCESS_SAVED,
|
||||
|
||||
/**
|
||||
* The success message displayed when a book author is successfully set
|
||||
*/
|
||||
SUCCESS_SET_AUTHOR,
|
||||
|
||||
/**
|
||||
* The success message displayed when the book creation cost is successfully removed
|
||||
*/
|
||||
SUCCESS_COST_REMOVED,
|
||||
|
||||
/**
|
||||
* The success message displayed when the book creation cost is successfully set to an item
|
||||
*/
|
||||
SUCCESS_COST_ITEM_SET,
|
||||
|
||||
/**
|
||||
* The success message displayed when the book creation cost is successfully set to an economy cost
|
||||
*/
|
||||
SUCCESS_COST_ECONOMY_SET,
|
||||
|
||||
/**
|
||||
* The success message displayed when a bookshelf's data has been successfully removed
|
||||
*/
|
||||
SUCCESS_BOOKSHELF_DATA_DELETED,
|
||||
|
||||
/**
|
||||
* The success message displayed when a bookshelf's title is successfully set
|
||||
*/
|
||||
SUCCESS_BOOKSHELF_TITLE_SET,
|
||||
|
||||
/**
|
||||
* The success message displayed when a bookshelf's lore is successfully set
|
||||
*/
|
||||
SUCCESS_BOOKSHELF_LORE_SET,
|
||||
|
||||
/**
|
||||
* The error to display when the console attempts to run a player-only command
|
||||
*/
|
||||
@@ -283,6 +318,46 @@ public enum Translatable implements TranslatableMessage {
|
||||
*/
|
||||
ERROR_UNKNOWN_COMMAND,
|
||||
|
||||
/**
|
||||
* The error displayed when changing a book's author without providing the new author
|
||||
*/
|
||||
ERROR_AUTHOR_BLANK,
|
||||
|
||||
/**
|
||||
* The error displayed when attempting to specify a cost without necessary arguments
|
||||
*/
|
||||
ERROR_COST_NOT_SPECIFIED,
|
||||
|
||||
/**
|
||||
* The error displayed when specifying an invalid cost quantity when setting a cost
|
||||
*/
|
||||
ERROR_COST_INVALID_QUANTITY,
|
||||
|
||||
/**
|
||||
* The error displayed when specifying an invalid cost type when setting a cost
|
||||
*/
|
||||
ERROR_COST_INVALID_TYPE,
|
||||
|
||||
/**
|
||||
* The error displayed when attempting to set an item cost without providing an item
|
||||
*/
|
||||
ERROR_COST_ITEM_MISSING,
|
||||
|
||||
/**
|
||||
* The error displayed when attempting to alter bookshelf data while not looking at a bookshelf
|
||||
*/
|
||||
ERROR_BOOKSHELF_NOT_FOUND,
|
||||
|
||||
/**
|
||||
* The error displayed when attempting to deleting a bookshelf while looking at a non-registered bookshelf
|
||||
*/
|
||||
ERROR_BOOKSHELF_NOT_REGISTERED,
|
||||
|
||||
/**
|
||||
* The error displayed when attempting to set other bookshelf data before setting the name
|
||||
*/
|
||||
ERROR_BOOKSHELF_NAME_REQUIRED,
|
||||
|
||||
/**
|
||||
* The header displayed before printing all commands
|
||||
*/
|
||||
@@ -372,6 +447,11 @@ public enum Translatable implements TranslatableMessage {
|
||||
* The translation of the add title page action
|
||||
*/
|
||||
ACTION_ADD_TITLE_AUTHOR_PAGE,
|
||||
|
||||
/**
|
||||
* The translation of the set author action
|
||||
*/
|
||||
ACTION_SET_AUTHOR,
|
||||
;
|
||||
|
||||
@Override
|
||||
|
@@ -14,12 +14,20 @@ en:
|
||||
SUCCESS_MIGRATION_STARTED: "Starting book migration..."
|
||||
SUCCESS_RELOADED: "Configuration, books and language strings reloaded!"
|
||||
SUCCESS_SAVED: "Book Saved as &e\"{fileName}\"&r"
|
||||
SUCCESS_SET_AUTHOR: "Book author set to {author}!"
|
||||
SUCCESS_COST_REMOVED: "Price to create books removed!"
|
||||
SUCCESS_COST_ITEM_SET: "Book creation price set to {quantity} {price}(s)!"
|
||||
SUCCESS_COST_ECONOMY_SET: "Book creation price set to {cost}!"
|
||||
SUCCESS_BOOKSHELF_DATA_DELETED: "Bookshelf successfully deleted"
|
||||
SUCCESS_BOOKSHELF_TITLE_SET: "Title successfully saved"
|
||||
SUCCESS_BOOKSHELF_LORE_SET: "Lore successfully saved"
|
||||
ACTION_COPY: "copy"
|
||||
ACTION_CLEAR: "clear"
|
||||
ACTION_DECRYPT: "decrypt"
|
||||
ACTION_ENCRYPT: "encrypt"
|
||||
ACTION_FORMAT: "format"
|
||||
ACTION_ADD_TITLE_AUTHOR_PAGE: "add an author title page to"
|
||||
ACTION_SET_AUTHOR: "set author"
|
||||
ERROR_PLAYER_ONLY: "This command can only be used by a player!"
|
||||
ERROR_NOT_HOLDING_WRITTEN_BOOK: "You must be holding a written book to {action} it!"
|
||||
ERROR_NOT_HOLDING_WRITABLE_BOOK: "You must be holding a writable book to {action} it!"
|
||||
@@ -65,6 +73,14 @@ en:
|
||||
ERROR_SAVE_DUPLICATE_NAMED: "Book is already saved!"
|
||||
ERROR_SAVE_DUPLICATE_UNNAMED: "Maximum amount of {fileName} duplicates reached!"
|
||||
ERROR_UNKNOWN_COMMAND: "Invalid command specified"
|
||||
ERROR_AUTHOR_BLANK: "You must specify an author"
|
||||
ERROR_COST_NOT_SPECIFIED: "[Item/Eco] and [quantity] must be specified!"
|
||||
ERROR_COST_INVALID_QUANTITY: "[quantity] must be a number greater than 0!"
|
||||
ERROR_COST_INVALID_TYPE: "Price type must be \"item\" or \"economy\"!"
|
||||
ERROR_COST_ITEM_MISSING: "Must be holding an item to set an [Item] price!"
|
||||
ERROR_BOOKSHELF_NOT_FOUND: "You are not looking at a bookshelf!"
|
||||
ERROR_BOOKSHELF_NOT_REGISTERED: "The block you are looking at is not a registered bookshelf"
|
||||
ERROR_BOOKSHELF_NAME_REQUIRED: "You must name the bookshelf before assigning lore!"
|
||||
NEUTRAL_COMMANDS_HEADER: |
|
||||
&nBooks without Borders help page&r
|
||||
&e[] = optional, <> = required (see each description for exceptions)
|
||||
|
Reference in New Issue
Block a user