Slightly alters the addTitlePage command's behavior

This commit is contained in:
2025-08-22 17:50:22 +02:00
parent c97436830a
commit 850e2b3af2
3 changed files with 23 additions and 25 deletions

View File

@@ -125,7 +125,7 @@
<dependency>
<groupId>net.knarcraft</groupId>
<artifactId>knarlib</artifactId>
<version>1.2.7</version>
<version>1.2.8</version>
<scope>compile</scope>
</dependency>
<dependency>

View File

@@ -43,6 +43,7 @@ import net.knarcraft.bookswithoutborders.listener.BookshelfListener;
import net.knarcraft.bookswithoutborders.listener.PlayerEventListener;
import net.knarcraft.bookswithoutborders.listener.SignEventListener;
import net.knarcraft.bookswithoutborders.utility.BookFileHelper;
import net.knarcraft.knarlib.formatting.FormatBuilder;
import net.knarcraft.knarlib.formatting.StringFormatter;
import net.knarcraft.knarlib.formatting.Translator;
import net.knarcraft.knarlib.property.ColorConversion;
@@ -224,6 +225,7 @@ public class BooksWithoutBorders extends JavaPlugin {
stringFormatter.setColorConversion(ColorConversion.RGB);
stringFormatter.setSuccessColor(ChatColor.of("#A9FF84"));
stringFormatter.setErrorColor(ChatColor.of("#FF84A9"));
FormatBuilder.setStringFormatter(stringFormatter);
booksWithoutBorders = this;
playerBooksList = new HashMap<>();

View File

@@ -6,7 +6,7 @@ import net.knarcraft.bookswithoutborders.config.translation.Translatable;
import net.knarcraft.bookswithoutborders.utility.BookFormatter;
import net.knarcraft.bookswithoutborders.utility.BookHelper;
import net.knarcraft.bookswithoutborders.utility.InventoryHelper;
import net.knarcraft.knarlib.formatting.StringFormatter;
import net.knarcraft.knarlib.formatting.FormatBuilder;
import org.bukkit.Material;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
@@ -28,26 +28,25 @@ public class CommandAddTitlePage 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;
}
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;
}
int index;
if (arguments.length < 1) {
if (InventoryHelper.notHoldingOneWrittenBookCheck(player,
stringFormatter.replacePlaceholder(Translatable.ERROR_NOT_HOLDING_WRITTEN_BOOK, "{action}",
stringFormatter.getUnFormattedColoredMessage(Translatable.ACTION_ADD_TITLE_AUTHOR_PAGE)),
stringFormatter.replacePlaceholder(Translatable.ERROR_ONLY_ONE_BOOK, "{action}",
stringFormatter.getUnFormattedColoredMessage(Translatable.ACTION_ADD_TITLE_AUTHOR_PAGE)))) {
String noBookError = new FormatBuilder(Translatable.ERROR_NOT_HOLDING_WRITTEN_BOOK).replace("{action}",
Translatable.ACTION_ADD_TITLE_AUTHOR_PAGE).build();
String twoBooksError = new FormatBuilder(Translatable.ERROR_ONLY_ONE_BOOK).replace("{action}",
Translatable.ACTION_ADD_TITLE_AUTHOR_PAGE).build();
if (InventoryHelper.notHoldingOneWrittenBookCheck(player, noBookError, twoBooksError)) {
return false;
}
@@ -56,7 +55,7 @@ public class CommandAddTitlePage 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;
}
}
@@ -74,22 +73,23 @@ public class CommandAddTitlePage implements TabExecutor {
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) {
stringFormatter.displayErrorMessage(sender, Translatable.ERROR_INVALID_BOOK_PAGE);
new FormatBuilder(Translatable.ERROR_INVALID_BOOK_PAGE).error(sender);
return false;
}
if (title == null && heldBook.getType() == Material.WRITTEN_BOOK) {
// Add a page with the book title and book author
String loreSeparator = BooksWithoutBorders.getConfiguration().getLoreSeparator();
String pageText = formatTitle(stringFormatter.replacePlaceholders(Formatting.NEUTRAL_TITLE_PAGE_TITLE_AUTHOR_FORMAT,
List.of("{title}", "{separator}", "{author}"), List.of(BookHelper.getBookTitle(bookMeta),
loreSeparator, BookHelper.getBookAuthor(bookMeta, null))));
String pageText = formatTitle(new FormatBuilder(Formatting.NEUTRAL_TITLE_PAGE_TITLE_AUTHOR_FORMAT).
replace("{title}", BookFormatter.stripColor(BookHelper.getBookTitle(bookMeta))).
replace("{separator}", loreSeparator).
replace("{author}", BookFormatter.stripColor(BookHelper.getBookAuthor(bookMeta, null))).build());
if (index > pages.size()) {
pages.add(pageText);
@@ -113,7 +113,7 @@ public class CommandAddTitlePage implements TabExecutor {
}
bookMeta.setPages(pages);
heldBook.setItemMeta(bookMeta);
stringFormatter.displaySuccessMessage(sender, Translatable.SUCCESS_TITLE_PAGE_ADDED);
new FormatBuilder(Translatable.SUCCESS_TITLE_PAGE_ADDED).success(sender);
return true;
}
@@ -124,21 +124,17 @@ public class CommandAddTitlePage implements TabExecutor {
* @return <p>The formatted input</p>
*/
private String formatTitle(@NotNull String input) {
StringFormatter stringFormatter = BooksWithoutBorders.getStringFormatter();
String loreSeparator = BooksWithoutBorders.getConfiguration().getLoreSeparator();
if (input.contains(loreSeparator)) {
String[] parts = input.split(loreSeparator);
StringBuilder output = new StringBuilder();
output.append(stringFormatter.replacePlaceholder(Formatting.NEUTRAL_TITLE_PAGE_HEADER_FORMAT,
"{header}", BookFormatter.stripColor(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++) {
output.append(stringFormatter.replacePlaceholder(Formatting.NEUTRAL_TITLE_PAGE_TEXT_FORMAT,
"{text}", BookFormatter.stripColor(parts[i])));
output.append(new FormatBuilder(Formatting.NEUTRAL_TITLE_PAGE_TEXT_FORMAT).replace("{text}", parts[i]).color().build());
}
return output.toString();
} else {
return input;
return new FormatBuilder(Formatting.NEUTRAL_TITLE_PAGE_HEADER_FORMAT).replace("{header}", input).color().build();
}
}
@@ -163,7 +159,7 @@ public class CommandAddTitlePage implements TabExecutor {
}
}
} else if (arguments.length == 2) {
String separator = BooksWithoutBorders.getConfiguration().getTitleAuthorSeparator();
String separator = BooksWithoutBorders.getConfiguration().getLoreSeparator();
return List.of("Title", "Chapter" + separator + "Description");
}
return List.of();