Slightly alters the addTitlePage command's behavior
This commit is contained in:
2
pom.xml
2
pom.xml
@@ -125,7 +125,7 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>net.knarcraft</groupId>
|
<groupId>net.knarcraft</groupId>
|
||||||
<artifactId>knarlib</artifactId>
|
<artifactId>knarlib</artifactId>
|
||||||
<version>1.2.7</version>
|
<version>1.2.8</version>
|
||||||
<scope>compile</scope>
|
<scope>compile</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
|
@@ -43,6 +43,7 @@ import net.knarcraft.bookswithoutborders.listener.BookshelfListener;
|
|||||||
import net.knarcraft.bookswithoutborders.listener.PlayerEventListener;
|
import net.knarcraft.bookswithoutborders.listener.PlayerEventListener;
|
||||||
import net.knarcraft.bookswithoutborders.listener.SignEventListener;
|
import net.knarcraft.bookswithoutborders.listener.SignEventListener;
|
||||||
import net.knarcraft.bookswithoutborders.utility.BookFileHelper;
|
import net.knarcraft.bookswithoutborders.utility.BookFileHelper;
|
||||||
|
import net.knarcraft.knarlib.formatting.FormatBuilder;
|
||||||
import net.knarcraft.knarlib.formatting.StringFormatter;
|
import net.knarcraft.knarlib.formatting.StringFormatter;
|
||||||
import net.knarcraft.knarlib.formatting.Translator;
|
import net.knarcraft.knarlib.formatting.Translator;
|
||||||
import net.knarcraft.knarlib.property.ColorConversion;
|
import net.knarcraft.knarlib.property.ColorConversion;
|
||||||
@@ -224,6 +225,7 @@ public class BooksWithoutBorders extends JavaPlugin {
|
|||||||
stringFormatter.setColorConversion(ColorConversion.RGB);
|
stringFormatter.setColorConversion(ColorConversion.RGB);
|
||||||
stringFormatter.setSuccessColor(ChatColor.of("#A9FF84"));
|
stringFormatter.setSuccessColor(ChatColor.of("#A9FF84"));
|
||||||
stringFormatter.setErrorColor(ChatColor.of("#FF84A9"));
|
stringFormatter.setErrorColor(ChatColor.of("#FF84A9"));
|
||||||
|
FormatBuilder.setStringFormatter(stringFormatter);
|
||||||
|
|
||||||
booksWithoutBorders = this;
|
booksWithoutBorders = this;
|
||||||
playerBooksList = new HashMap<>();
|
playerBooksList = new HashMap<>();
|
||||||
|
@@ -6,7 +6,7 @@ import net.knarcraft.bookswithoutborders.config.translation.Translatable;
|
|||||||
import net.knarcraft.bookswithoutborders.utility.BookFormatter;
|
import net.knarcraft.bookswithoutborders.utility.BookFormatter;
|
||||||
import net.knarcraft.bookswithoutborders.utility.BookHelper;
|
import net.knarcraft.bookswithoutborders.utility.BookHelper;
|
||||||
import net.knarcraft.bookswithoutborders.utility.InventoryHelper;
|
import net.knarcraft.bookswithoutborders.utility.InventoryHelper;
|
||||||
import net.knarcraft.knarlib.formatting.StringFormatter;
|
import net.knarcraft.knarlib.formatting.FormatBuilder;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.command.Command;
|
import org.bukkit.command.Command;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
@@ -28,26 +28,25 @@ public class CommandAddTitlePage implements TabExecutor {
|
|||||||
@Override
|
@Override
|
||||||
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String s,
|
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String s,
|
||||||
@NotNull String[] arguments) {
|
@NotNull String[] arguments) {
|
||||||
StringFormatter stringFormatter = BooksWithoutBorders.getStringFormatter();
|
|
||||||
if (!(sender instanceof Player player)) {
|
if (!(sender instanceof Player player)) {
|
||||||
stringFormatter.displayErrorMessage(sender, Translatable.ERROR_PLAYER_ONLY);
|
new FormatBuilder(Translatable.ERROR_PLAYER_ONLY).error(sender);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
ItemStack heldBook = InventoryHelper.getHeldBook(player);
|
ItemStack heldBook = InventoryHelper.getHeldBook(player);
|
||||||
if (heldBook == null) {
|
if (heldBook == null) {
|
||||||
stringFormatter.displayErrorMessage(sender, Translatable.ERROR_NOT_HOLDING_ANY_BOOK);
|
new FormatBuilder(Translatable.ERROR_NOT_HOLDING_ANY_BOOK).error(sender);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
int index;
|
int index;
|
||||||
if (arguments.length < 1) {
|
if (arguments.length < 1) {
|
||||||
if (InventoryHelper.notHoldingOneWrittenBookCheck(player,
|
String noBookError = new FormatBuilder(Translatable.ERROR_NOT_HOLDING_WRITTEN_BOOK).replace("{action}",
|
||||||
stringFormatter.replacePlaceholder(Translatable.ERROR_NOT_HOLDING_WRITTEN_BOOK, "{action}",
|
Translatable.ACTION_ADD_TITLE_AUTHOR_PAGE).build();
|
||||||
stringFormatter.getUnFormattedColoredMessage(Translatable.ACTION_ADD_TITLE_AUTHOR_PAGE)),
|
String twoBooksError = new FormatBuilder(Translatable.ERROR_ONLY_ONE_BOOK).replace("{action}",
|
||||||
stringFormatter.replacePlaceholder(Translatable.ERROR_ONLY_ONE_BOOK, "{action}",
|
Translatable.ACTION_ADD_TITLE_AUTHOR_PAGE).build();
|
||||||
stringFormatter.getUnFormattedColoredMessage(Translatable.ACTION_ADD_TITLE_AUTHOR_PAGE)))) {
|
if (InventoryHelper.notHoldingOneWrittenBookCheck(player, noBookError, twoBooksError)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -56,7 +55,7 @@ public class CommandAddTitlePage implements TabExecutor {
|
|||||||
try {
|
try {
|
||||||
index = Integer.parseInt(arguments[0]) - 1;
|
index = Integer.parseInt(arguments[0]) - 1;
|
||||||
} catch (NumberFormatException exception) {
|
} catch (NumberFormatException exception) {
|
||||||
stringFormatter.displayErrorMessage(sender, Translatable.ERROR_INVALID_BOOK_PAGE);
|
new FormatBuilder(Translatable.ERROR_INVALID_BOOK_PAGE).error(sender);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -74,22 +73,23 @@ public class CommandAddTitlePage implements TabExecutor {
|
|||||||
|
|
||||||
BookMeta bookMeta = (BookMeta) heldBook.getItemMeta();
|
BookMeta bookMeta = (BookMeta) heldBook.getItemMeta();
|
||||||
if (bookMeta == null) {
|
if (bookMeta == null) {
|
||||||
stringFormatter.displayErrorMessage(sender, Translatable.ERROR_METADATA_MISSING);
|
new FormatBuilder(Translatable.ERROR_METADATA_MISSING).error(sender);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
List<String> pages = new ArrayList<>(bookMeta.getPages());
|
List<String> pages = new ArrayList<>(bookMeta.getPages());
|
||||||
|
|
||||||
if (index < 0) {
|
if (index < 0) {
|
||||||
stringFormatter.displayErrorMessage(sender, Translatable.ERROR_INVALID_BOOK_PAGE);
|
new FormatBuilder(Translatable.ERROR_INVALID_BOOK_PAGE).error(sender);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
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();
|
||||||
String pageText = formatTitle(stringFormatter.replacePlaceholders(Formatting.NEUTRAL_TITLE_PAGE_TITLE_AUTHOR_FORMAT,
|
String pageText = formatTitle(new FormatBuilder(Formatting.NEUTRAL_TITLE_PAGE_TITLE_AUTHOR_FORMAT).
|
||||||
List.of("{title}", "{separator}", "{author}"), List.of(BookHelper.getBookTitle(bookMeta),
|
replace("{title}", BookFormatter.stripColor(BookHelper.getBookTitle(bookMeta))).
|
||||||
loreSeparator, BookHelper.getBookAuthor(bookMeta, null))));
|
replace("{separator}", loreSeparator).
|
||||||
|
replace("{author}", BookFormatter.stripColor(BookHelper.getBookAuthor(bookMeta, null))).build());
|
||||||
|
|
||||||
if (index > pages.size()) {
|
if (index > pages.size()) {
|
||||||
pages.add(pageText);
|
pages.add(pageText);
|
||||||
@@ -113,7 +113,7 @@ public class CommandAddTitlePage implements TabExecutor {
|
|||||||
}
|
}
|
||||||
bookMeta.setPages(pages);
|
bookMeta.setPages(pages);
|
||||||
heldBook.setItemMeta(bookMeta);
|
heldBook.setItemMeta(bookMeta);
|
||||||
stringFormatter.displaySuccessMessage(sender, Translatable.SUCCESS_TITLE_PAGE_ADDED);
|
new FormatBuilder(Translatable.SUCCESS_TITLE_PAGE_ADDED).success(sender);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -124,21 +124,17 @@ public class CommandAddTitlePage implements TabExecutor {
|
|||||||
* @return <p>The formatted input</p>
|
* @return <p>The formatted input</p>
|
||||||
*/
|
*/
|
||||||
private String formatTitle(@NotNull String input) {
|
private String formatTitle(@NotNull String input) {
|
||||||
StringFormatter stringFormatter = BooksWithoutBorders.getStringFormatter();
|
|
||||||
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();
|
StringBuilder output = new StringBuilder();
|
||||||
output.append(stringFormatter.replacePlaceholder(Formatting.NEUTRAL_TITLE_PAGE_HEADER_FORMAT,
|
output.append(new FormatBuilder(Formatting.NEUTRAL_TITLE_PAGE_HEADER_FORMAT).replace("{header}", parts[0]).color().build());
|
||||||
"{header}", BookFormatter.stripColor(parts[0])));
|
|
||||||
|
|
||||||
for (int i = 1; i < parts.length; i++) {
|
for (int i = 1; i < parts.length; i++) {
|
||||||
output.append(stringFormatter.replacePlaceholder(Formatting.NEUTRAL_TITLE_PAGE_TEXT_FORMAT,
|
output.append(new FormatBuilder(Formatting.NEUTRAL_TITLE_PAGE_TEXT_FORMAT).replace("{text}", parts[i]).color().build());
|
||||||
"{text}", BookFormatter.stripColor(parts[i])));
|
|
||||||
}
|
}
|
||||||
return output.toString();
|
return output.toString();
|
||||||
} else {
|
} 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) {
|
} 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("Title", "Chapter" + separator + "Description");
|
||||||
}
|
}
|
||||||
return List.of();
|
return List.of();
|
||||||
|
Reference in New Issue
Block a user