Adds a new /formatbook command
This commit is contained in:
parent
94589faba0
commit
7acaa9fc81
@ -6,6 +6,7 @@ import net.knarcraft.bookswithoutborders.command.CommandDecrypt;
|
|||||||
import net.knarcraft.bookswithoutborders.command.CommandDelete;
|
import net.knarcraft.bookswithoutborders.command.CommandDelete;
|
||||||
import net.knarcraft.bookswithoutborders.command.CommandDeletePublic;
|
import net.knarcraft.bookswithoutborders.command.CommandDeletePublic;
|
||||||
import net.knarcraft.bookswithoutborders.command.CommandEncrypt;
|
import net.knarcraft.bookswithoutborders.command.CommandEncrypt;
|
||||||
|
import net.knarcraft.bookswithoutborders.command.CommandFormat;
|
||||||
import net.knarcraft.bookswithoutborders.command.CommandGive;
|
import net.knarcraft.bookswithoutborders.command.CommandGive;
|
||||||
import net.knarcraft.bookswithoutborders.command.CommandGivePublic;
|
import net.knarcraft.bookswithoutborders.command.CommandGivePublic;
|
||||||
import net.knarcraft.bookswithoutborders.command.CommandGroupEncrypt;
|
import net.knarcraft.bookswithoutborders.command.CommandGroupEncrypt;
|
||||||
@ -280,6 +281,7 @@ public class BooksWithoutBorders extends JavaPlugin {
|
|||||||
registerCommand("loadPublicBook", new CommandLoadPublic());
|
registerCommand("loadPublicBook", new CommandLoadPublic());
|
||||||
registerCommand("booksWithoutBorders", new CommandBooksWithoutBorders());
|
registerCommand("booksWithoutBorders", new CommandBooksWithoutBorders());
|
||||||
registerCommand("reload", new CommandReload());
|
registerCommand("reload", new CommandReload());
|
||||||
|
registerCommand("formatBook", new CommandFormat());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -299,6 +301,7 @@ public class BooksWithoutBorders extends JavaPlugin {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Initializes the plugin, loading and fixing the config file
|
* Initializes the plugin, loading and fixing the config file
|
||||||
|
*
|
||||||
* @return <p>True if successful</p>
|
* @return <p>True if successful</p>
|
||||||
*/
|
*/
|
||||||
private boolean initialize() {
|
private boolean initialize() {
|
||||||
@ -399,6 +402,7 @@ public class BooksWithoutBorders extends JavaPlugin {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Loads the config
|
* Loads the config
|
||||||
|
*
|
||||||
* @return <p>True if the config was loaded successfully</p>
|
* @return <p>True if the config was loaded successfully</p>
|
||||||
*/
|
*/
|
||||||
public boolean loadConfig() {
|
public boolean loadConfig() {
|
||||||
@ -417,9 +421,6 @@ public class BooksWithoutBorders extends JavaPlugin {
|
|||||||
if (config.contains("Options.Book_for_new_players")) {
|
if (config.contains("Options.Book_for_new_players")) {
|
||||||
firstBooks.add(config.getString("Options.Book_for_new_players"));
|
firstBooks.add(config.getString("Options.Book_for_new_players"));
|
||||||
}
|
}
|
||||||
if (firstBooks.isEmpty()) {
|
|
||||||
firstBooks.add(" ");
|
|
||||||
}
|
|
||||||
|
|
||||||
welcomeMessage = config.getString("Options.Message_for_new_players", " ");
|
welcomeMessage = config.getString("Options.Message_for_new_players", " ");
|
||||||
|
|
||||||
|
@ -0,0 +1,73 @@
|
|||||||
|
package net.knarcraft.bookswithoutborders.command;
|
||||||
|
|
||||||
|
import net.knarcraft.bookswithoutborders.BooksWithoutBorders;
|
||||||
|
import net.knarcraft.bookswithoutborders.utility.InventoryHelper;
|
||||||
|
import net.md_5.bungee.api.ChatColor;
|
||||||
|
import org.bukkit.command.Command;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.command.TabExecutor;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
import org.bukkit.inventory.meta.BookMeta;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Objects;
|
||||||
|
import java.util.regex.Matcher;
|
||||||
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A command for converting color codes to color formatting
|
||||||
|
*/
|
||||||
|
public class CommandFormat implements TabExecutor {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) {
|
||||||
|
if (!(sender instanceof Player player)) {
|
||||||
|
BooksWithoutBorders.sendErrorMessage(sender, "This command can only be used by a player!");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (InventoryHelper.notHoldingOneWrittenBookCheck(player, "You must be holding a written book to format it!",
|
||||||
|
"You cannot format two books at once!")) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
ItemStack heldBook = InventoryHelper.getHeldBook(player, true);
|
||||||
|
BookMeta bookMeta = (BookMeta) heldBook.getItemMeta();
|
||||||
|
|
||||||
|
List<String> formattedPages = new ArrayList<>(Objects.requireNonNull(bookMeta).getPageCount());
|
||||||
|
for (String page : bookMeta.getPages()) {
|
||||||
|
formattedPages.add(translateAllColorCodes(page));
|
||||||
|
}
|
||||||
|
bookMeta.setPages(formattedPages);
|
||||||
|
heldBook.setItemMeta(bookMeta);
|
||||||
|
|
||||||
|
BooksWithoutBorders.sendSuccessMessage(sender, "Book formatted!");
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Translates all found color codes to formatting in a string
|
||||||
|
*
|
||||||
|
* @param message <p>The string to search for color codes</p>
|
||||||
|
* @return <p>The message with color codes translated</p>
|
||||||
|
*/
|
||||||
|
public static String translateAllColorCodes(String message) {
|
||||||
|
message = ChatColor.translateAlternateColorCodes('&', message);
|
||||||
|
Pattern pattern = Pattern.compile("(#[a-fA-F0-9]{6})");
|
||||||
|
Matcher matcher = pattern.matcher(message);
|
||||||
|
while (matcher.find()) {
|
||||||
|
message = message.replace(matcher.group(), "" + ChatColor.of(matcher.group()));
|
||||||
|
}
|
||||||
|
return message;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<String> onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String alias, @NotNull String[] args) {
|
||||||
|
return new ArrayList<>();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user