Cleans the addTitlePage command a bit
This commit is contained in:
@@ -33,21 +33,20 @@ public class CommandAddTitlePage implements TabExecutor {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Note: There are two different book checks as an book is accepted normally, but a written book is required for
|
||||||
|
// adding an author title page at the beginning.
|
||||||
ItemStack heldBook = InventoryUtil.getHeldBook(player);
|
ItemStack heldBook = InventoryUtil.getHeldBook(player);
|
||||||
if (heldBook == null) {
|
if (heldBook == null) {
|
||||||
new FormatBuilder(Translatable.ERROR_NOT_HOLDING_ANY_BOOK).error(sender);
|
new FormatBuilder(Translatable.ERROR_NOT_HOLDING_ANY_BOOK).error(sender);
|
||||||
return false;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
int index;
|
int index;
|
||||||
if (arguments.length < 1) {
|
if (arguments.length < 1) {
|
||||||
String noBookError = new FormatBuilder(Translatable.ERROR_NOT_HOLDING_WRITTEN_BOOK).replace("{action}",
|
if (InventoryUtil.notHoldingOneWrittenBookCheck(player,
|
||||||
Translatable.ACTION_ADD_TITLE_AUTHOR_PAGE).build();
|
new FormatBuilder(Translatable.ERROR_NOT_HOLDING_WRITTEN_BOOK).replace("{action}", Translatable.ACTION_ADD_TITLE_AUTHOR_PAGE),
|
||||||
String twoBooksError = new FormatBuilder(Translatable.ERROR_ONLY_ONE_BOOK).replace("{action}",
|
new FormatBuilder(Translatable.ERROR_ONLY_ONE_BOOK).replace("{action}", Translatable.ACTION_ADD_TITLE_AUTHOR_PAGE))) {
|
||||||
Translatable.ACTION_ADD_TITLE_AUTHOR_PAGE).build();
|
return true;
|
||||||
if (InventoryUtil.notHoldingOneWrittenBookCheck(player, noBookError, twoBooksError)) {
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
index = 0;
|
index = 0;
|
||||||
@@ -61,7 +60,6 @@ public class CommandAddTitlePage implements TabExecutor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
String title = null;
|
String title = null;
|
||||||
|
|
||||||
if (arguments.length > 1) {
|
if (arguments.length > 1) {
|
||||||
// Get all arguments as a space-separated string
|
// Get all arguments as a space-separated string
|
||||||
StringBuilder builder = new StringBuilder(arguments[1]);
|
StringBuilder builder = new StringBuilder(arguments[1]);
|
||||||
@@ -74,15 +72,29 @@ public class CommandAddTitlePage implements TabExecutor {
|
|||||||
BookMeta bookMeta = (BookMeta) heldBook.getItemMeta();
|
BookMeta bookMeta = (BookMeta) heldBook.getItemMeta();
|
||||||
if (bookMeta == null) {
|
if (bookMeta == null) {
|
||||||
new FormatBuilder(Translatable.ERROR_METADATA_MISSING).error(sender);
|
new FormatBuilder(Translatable.ERROR_METADATA_MISSING).error(sender);
|
||||||
return false;
|
return true;
|
||||||
}
|
}
|
||||||
List<String> pages = new ArrayList<>(bookMeta.getPages());
|
|
||||||
|
|
||||||
if (index < 0) {
|
if (index < 0) {
|
||||||
new FormatBuilder(Translatable.ERROR_INVALID_BOOK_PAGE).error(sender);
|
new FormatBuilder(Translatable.ERROR_INVALID_BOOK_PAGE).error(sender);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
addBookPage(heldBook, bookMeta, index, title);
|
||||||
|
new FormatBuilder(Translatable.SUCCESS_TITLE_PAGE_ADDED).success(sender);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adds the specified book page
|
||||||
|
*
|
||||||
|
* @param heldBook <p>The book to update</p>
|
||||||
|
* @param bookMeta <p>The metadata of the book to alter</p>
|
||||||
|
* @param index <p>The index to add the page at</p>
|
||||||
|
* @param title <p>The title of the new page</p>
|
||||||
|
*/
|
||||||
|
private void addBookPage(@NotNull ItemStack heldBook, @NotNull BookMeta bookMeta, int index,
|
||||||
|
@Nullable String title) {
|
||||||
|
List<String> pages = new ArrayList<>(bookMeta.getPages());
|
||||||
if (title == null && heldBook.getType() == Material.WRITTEN_BOOK) {
|
if (title == null && heldBook.getType() == Material.WRITTEN_BOOK) {
|
||||||
// Add a page with the book title and book author
|
// Add a page with the book title and book author
|
||||||
String loreSeparator = BooksWithoutBorders.getConfiguration().getLoreSeparator();
|
String loreSeparator = BooksWithoutBorders.getConfiguration().getLoreSeparator();
|
||||||
@@ -113,8 +125,6 @@ public class CommandAddTitlePage implements TabExecutor {
|
|||||||
}
|
}
|
||||||
bookMeta.setPages(pages);
|
bookMeta.setPages(pages);
|
||||||
heldBook.setItemMeta(bookMeta);
|
heldBook.setItemMeta(bookMeta);
|
||||||
new FormatBuilder(Translatable.SUCCESS_TITLE_PAGE_ADDED).success(sender);
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -123,16 +133,16 @@ public class CommandAddTitlePage implements TabExecutor {
|
|||||||
* @param input <p>The input to format</p>
|
* @param input <p>The input to format</p>
|
||||||
* @return <p>The formatted input</p>
|
* @return <p>The formatted input</p>
|
||||||
*/
|
*/
|
||||||
|
@NotNull
|
||||||
private String formatTitle(@NotNull String input) {
|
private String formatTitle(@NotNull String input) {
|
||||||
String loreSeparator = BooksWithoutBorders.getConfiguration().getLoreSeparator();
|
String loreSeparator = BooksWithoutBorders.getConfiguration().getLoreSeparator();
|
||||||
if (input.contains(loreSeparator)) {
|
if (input.contains(loreSeparator)) {
|
||||||
String[] parts = input.split(loreSeparator);
|
String[] parts = input.split(loreSeparator);
|
||||||
StringBuilder output = new StringBuilder();
|
FormatBuilder builder = new FormatBuilder(Formatting.NEUTRAL_TITLE_PAGE_HEADER_FORMAT).replace("{header}", parts[0]);
|
||||||
output.append(new FormatBuilder(Formatting.NEUTRAL_TITLE_PAGE_HEADER_FORMAT).replace("{header}", parts[0]).color().build());
|
|
||||||
for (int i = 1; i < parts.length; i++) {
|
for (int i = 1; i < parts.length; i++) {
|
||||||
output.append(new FormatBuilder(Formatting.NEUTRAL_TITLE_PAGE_TEXT_FORMAT).replace("{text}", parts[i]).color().build());
|
builder.append(Formatting.NEUTRAL_TITLE_PAGE_TEXT_FORMAT).replace("{text}", parts[i]);
|
||||||
}
|
}
|
||||||
return output.toString();
|
return builder.color().build();
|
||||||
} else {
|
} else {
|
||||||
return new FormatBuilder(Formatting.NEUTRAL_TITLE_PAGE_HEADER_FORMAT).replace("{header}", input).color().build();
|
return new FormatBuilder(Formatting.NEUTRAL_TITLE_PAGE_HEADER_FORMAT).replace("{header}", input).color().build();
|
||||||
}
|
}
|
||||||
|
@@ -31,8 +31,8 @@ public class CommandClear implements TabExecutor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (InventoryUtil.notHoldingOneWritableBookCheck(player,
|
if (InventoryUtil.notHoldingOneWritableBookCheck(player,
|
||||||
new FormatBuilder(Translatable.ERROR_NOT_HOLDING_WRITABLE_BOOK).replace("{action}", Translatable.ACTION_CLEAR).build(),
|
new FormatBuilder(Translatable.ERROR_NOT_HOLDING_WRITABLE_BOOK).replace("{action}", Translatable.ACTION_CLEAR),
|
||||||
new FormatBuilder(Translatable.ERROR_ONLY_ONE_BOOK).replace("{action}", Translatable.ACTION_CLEAR).build())) {
|
new FormatBuilder(Translatable.ERROR_ONLY_ONE_BOOK).replace("{action}", Translatable.ACTION_CLEAR))) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -36,8 +36,8 @@ public class CommandCopy implements TabExecutor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (InventoryUtil.notHoldingOneWrittenBookCheck(player,
|
if (InventoryUtil.notHoldingOneWrittenBookCheck(player,
|
||||||
new FormatBuilder(Translatable.ERROR_NOT_HOLDING_WRITTEN_BOOK).replace("{action}", Translatable.ACTION_COPY).build(),
|
new FormatBuilder(Translatable.ERROR_NOT_HOLDING_WRITTEN_BOOK).replace("{action}", Translatable.ACTION_COPY),
|
||||||
new FormatBuilder(Translatable.ERROR_ONLY_ONE_BOOK).replace("{action}", Translatable.ACTION_COPY).build())) {
|
new FormatBuilder(Translatable.ERROR_ONLY_ONE_BOOK).replace("{action}", Translatable.ACTION_COPY))) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -34,8 +34,8 @@ public class CommandDecrypt implements TabExecutor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (InventoryUtil.notHoldingOneWrittenBookCheck(player,
|
if (InventoryUtil.notHoldingOneWrittenBookCheck(player,
|
||||||
new FormatBuilder(Translatable.ERROR_NOT_HOLDING_WRITTEN_BOOK).replace("{action}", Translatable.ACTION_DECRYPT).build(),
|
new FormatBuilder(Translatable.ERROR_NOT_HOLDING_WRITTEN_BOOK).replace("{action}", Translatable.ACTION_DECRYPT),
|
||||||
new FormatBuilder(Translatable.ERROR_ONLY_ONE_BOOK).replace("{action}", Translatable.ACTION_DECRYPT).build())) {
|
new FormatBuilder(Translatable.ERROR_ONLY_ONE_BOOK).replace("{action}", Translatable.ACTION_DECRYPT))) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -69,8 +69,8 @@ public class CommandEncrypt implements TabExecutor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (InventoryUtil.notHoldingOneWrittenBookCheck(player,
|
if (InventoryUtil.notHoldingOneWrittenBookCheck(player,
|
||||||
new FormatBuilder(Translatable.ERROR_NOT_HOLDING_WRITTEN_BOOK).replace("{action}", Translatable.ACTION_ENCRYPT).build(),
|
new FormatBuilder(Translatable.ERROR_NOT_HOLDING_WRITTEN_BOOK).replace("{action}", Translatable.ACTION_ENCRYPT),
|
||||||
new FormatBuilder(Translatable.ERROR_ONLY_ONE_BOOK).replace("{action}", Translatable.ACTION_ENCRYPT).build())) {
|
new FormatBuilder(Translatable.ERROR_ONLY_ONE_BOOK).replace("{action}", Translatable.ACTION_ENCRYPT))) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -38,8 +38,8 @@ public class CommandSetAuthor implements TabExecutor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (InventoryUtil.notHoldingOneWrittenBookCheck(player,
|
if (InventoryUtil.notHoldingOneWrittenBookCheck(player,
|
||||||
new FormatBuilder(Translatable.ERROR_NOT_HOLDING_WRITTEN_BOOK).replace("{action}", Translatable.ACTION_SET_AUTHOR).build(),
|
new FormatBuilder(Translatable.ERROR_NOT_HOLDING_WRITTEN_BOOK).replace("{action}", Translatable.ACTION_SET_AUTHOR),
|
||||||
new FormatBuilder(Translatable.ERROR_ONLY_ONE_BOOK).replace("{action}", Translatable.ACTION_SET_AUTHOR).build())) {
|
new FormatBuilder(Translatable.ERROR_ONLY_ONE_BOOK).replace("{action}", Translatable.ACTION_SET_AUTHOR))) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -29,8 +29,8 @@ public class CommandSetGeneration implements TabExecutor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (InventoryUtil.notHoldingOneWrittenBookCheck(player,
|
if (InventoryUtil.notHoldingOneWrittenBookCheck(player,
|
||||||
new FormatBuilder(Translatable.ERROR_NOT_HOLDING_WRITTEN_BOOK).replace("{action}", Translatable.ACTION_CHANGE_GENERATION).build(),
|
new FormatBuilder(Translatable.ERROR_NOT_HOLDING_WRITTEN_BOOK).replace("{action}", Translatable.ACTION_CHANGE_GENERATION),
|
||||||
new FormatBuilder(Translatable.ERROR_ONLY_ONE_BOOK).replace("{action}", Translatable.ACTION_CHANGE_GENERATION).build())) {
|
new FormatBuilder(Translatable.ERROR_ONLY_ONE_BOOK).replace("{action}", Translatable.ACTION_CHANGE_GENERATION))) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -34,8 +34,8 @@ public class CommandUnSign implements TabExecutor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (InventoryUtil.notHoldingOneWrittenBookCheck(player,
|
if (InventoryUtil.notHoldingOneWrittenBookCheck(player,
|
||||||
new FormatBuilder(Translatable.ERROR_NOT_HOLDING_WRITTEN_BOOK).replace("{action}", Translatable.ACTION_UNSIGN).build(),
|
new FormatBuilder(Translatable.ERROR_NOT_HOLDING_WRITTEN_BOOK).replace("{action}", Translatable.ACTION_UNSIGN),
|
||||||
new FormatBuilder(Translatable.ERROR_ONLY_ONE_BOOK).replace("{action}", Translatable.ACTION_UNSIGN).build())) {
|
new FormatBuilder(Translatable.ERROR_ONLY_ONE_BOOK).replace("{action}", Translatable.ACTION_UNSIGN))) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -77,18 +77,18 @@ public final class InventoryUtil {
|
|||||||
* @param twoBooksMessage <p>The message to display if the player is holding one book in each hand</p>
|
* @param twoBooksMessage <p>The message to display if the player is holding one book in each hand</p>
|
||||||
* @return <p>False if the player is holding exactly one book</p>
|
* @return <p>False if the player is holding exactly one book</p>
|
||||||
*/
|
*/
|
||||||
public static boolean notHoldingOneWritableBookCheck(@NotNull Player player, @NotNull String noBookMessage,
|
public static boolean notHoldingOneWritableBookCheck(@NotNull Player player, @NotNull FormatBuilder noBookMessage,
|
||||||
@NotNull String twoBooksMessage) {
|
@NotNull FormatBuilder twoBooksMessage) {
|
||||||
BookHoldingState holdingState = getBookHoldingState(player);
|
BookHoldingState holdingState = getBookHoldingState(player);
|
||||||
|
|
||||||
if (holdingState == BookHoldingState.NONE || holdingState == BookHoldingState.SIGNED_BOTH_HANDS ||
|
if (holdingState == BookHoldingState.NONE || holdingState == BookHoldingState.SIGNED_BOTH_HANDS ||
|
||||||
holdingState == BookHoldingState.SIGNED_MAIN_HAND || holdingState == BookHoldingState.SIGNED_OFF_HAND) {
|
holdingState == BookHoldingState.SIGNED_MAIN_HAND || holdingState == BookHoldingState.SIGNED_OFF_HAND) {
|
||||||
new FormatBuilder(noBookMessage).error(player);
|
noBookMessage.error(player);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (holdingState == BookHoldingState.UNSIGNED_BOTH_HANDS) {
|
if (holdingState == BookHoldingState.UNSIGNED_BOTH_HANDS) {
|
||||||
new FormatBuilder(twoBooksMessage).error(player);
|
twoBooksMessage.error(player);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -103,18 +103,18 @@ public final class InventoryUtil {
|
|||||||
* @param twoBooksMessage <p>The message to display if the player is holding one book in each hand</p>
|
* @param twoBooksMessage <p>The message to display if the player is holding one book in each hand</p>
|
||||||
* @return <p>False if the player is holding exactly one book</p>
|
* @return <p>False if the player is holding exactly one book</p>
|
||||||
*/
|
*/
|
||||||
public static boolean notHoldingOneWrittenBookCheck(@NotNull Player player, @NotNull String noBookMessage,
|
public static boolean notHoldingOneWrittenBookCheck(@NotNull Player player, @NotNull FormatBuilder noBookMessage,
|
||||||
@NotNull String twoBooksMessage) {
|
@NotNull FormatBuilder twoBooksMessage) {
|
||||||
BookHoldingState holdingState = getBookHoldingState(player);
|
BookHoldingState holdingState = getBookHoldingState(player);
|
||||||
|
|
||||||
if (holdingState == BookHoldingState.NONE || holdingState == BookHoldingState.UNSIGNED_BOTH_HANDS ||
|
if (holdingState == BookHoldingState.NONE || holdingState == BookHoldingState.UNSIGNED_BOTH_HANDS ||
|
||||||
holdingState == BookHoldingState.UNSIGNED_MAIN_HAND || holdingState == BookHoldingState.UNSIGNED_OFF_HAND) {
|
holdingState == BookHoldingState.UNSIGNED_MAIN_HAND || holdingState == BookHoldingState.UNSIGNED_OFF_HAND) {
|
||||||
new FormatBuilder(noBookMessage).error(player);
|
noBookMessage.error(player);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (holdingState == BookHoldingState.SIGNED_BOTH_HANDS) {
|
if (holdingState == BookHoldingState.SIGNED_BOTH_HANDS) {
|
||||||
new FormatBuilder(twoBooksMessage).error(player);
|
twoBooksMessage.error(player);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user