# Books Without Borders This is a rewrite of the Books Without Borders plugin. This rewrite originally used the source code given at [the original bukkit page](https://dev.bukkit.org/projects/books-without-borders). While the old plugin still worked the last time I checked, this plugin does not use any depreciated function calls, making sure it works for the foreseeable future. ## Books without Borders! Ever wanted to export your book to a text file? Ever want to import it back in? Accidentally sign it too soon? If so, Books without Borders has got your back! ### Features - Export written books and book and quills to .yml files - Import books from files as written books or unsigned books - Text files can be any length, and the import process fits the content to the correct page length - Books can be saved privately, or to a directory visible server wide - Encrypt books to prevent other players from reading them - Give, encrypt, or decrypt held books with signs - Give players books via command blocks - Unsign or copy held books with a simple command - Give first time players a single book or a set of books when they join - Configurable option to require certain items or pay via Vault compatible economy to create books via command - Add lore to any item with a simple command - Supports adding and saving color to title, lore, and book contents - Color and formatting codes can be manually turned into formatting using `/formatbook` - Clear a book, and start anew with `/clearbook` - Formatting and color codes can be turned into formatting once any book is signed. This is enabled through a config value - Change generation of books. Create tattered books for your RPG server! - Optionally, make it impossible to duplicate the original version of a book - Optionally, hit a bookshelf while sneaking to display the contained books. The bookshelf can be given a title and lore with `/setBookshelfData`. - Easily add a title page or chapter page (for an unsigned book, you can add a blank page as well) with `/addBookTitlePage`. - Remove extra blank pages or unneeded chapter pages with `/deleteBookPage` - If the necessary options are enabled, books can be truly encrypted with the AES cipher, making them impossible to decrypt without knowing the password. Even admin decryption can be made useless. Only enable if you are aware of the potential loss caused by forgotten passwords! #### Group encryption - Group encryption allows every player with the bookswithoutborders.decrypt.\ permission to decrypt the encrypted book without using a password. ### Migration from previous versions - The `/migrateBooks` command allows for easy fixing of old book naming, changing the title author separator (the default changed from `,` to `¤`, as a comma is a natural character to use in a title), or updating books saved as txt to yml. ### Book formatting - Formatting codes are automatically turned back into `&` codes after un-signing a book. - `/formatbook` can be used on an unsigned book to preview formatting, but note that RGB colors will show up as incorrect colors. That's just how that works. You must sign the book to see the real result. - `/formatbook` can be used on a signed book (if `functionality.formatBookOnSigning` is disabled) in order to make any color or formatting codes in the book display as intended. ### Commands: An in-game description of available commands is available through the /bwb command. | Command | Alias | Arguments | Permission | Description | |----------------------|---------------|----------------------------------------------------------------------------------|-----------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | /addbooktitlepage | bwbTitlePage | \[page index] \[title~description] | bookswithoutborders.addtitlepage | Adds a blank page, title page or chapter page depending on input and whether the book is signed. The title author separator (default `~`) is used to separate the input into title,paragraph1,paragraph2,... | | /bookswithoutborders | bwb | None | | Displays information about commands (and permissions if the user has bookswithoutborders.admin) | | /clearbook | bwbClear | None | bookswithoutborders.clear | Removes all text from the held un-signed book | | /copybook | bwbCopy | \<# of copies> | bookswithoutborders.copy | Copies the book the player is holding | | /createbwbsign | bwbSign | \ \[book identifier/password] \[encryption style] | bookswithoutborders.signs | Creates a books without borders sign, as specified. This command is not restricted by the normal sign line text limit, and can load books with any name length for give signs. Encrypt and decrypts signs can be created manually just fine, but using this avoids manual formatting. | | /decryptbook | bwbDecrypt | \ | bookswithoutborders.decrypt | Decrypts the book the player is holding. "key" is required and MUST be IDENTICAL to the key used to encrypt the held book | | /deletebook | bwbDelete | \ | bookswithoutborders.delete | Deletes the specified file in the player's directory | | /deletebookpage | bwbDeletePage | \ | bookswithoutborders.deletepage | Deletes one page from a book | | /deletepublicbook | bwbDeleteP | \ | bookswithoutborders.admin | Same as deletebook, but deletes files in the public directory | | /editbwbconfig | bwbConfig | \