Plugin polishing
All checks were successful
EpicKnarvik97/Books-Without-Borders/pipeline/head This commit looks good

Organizes translatable messages
Fixes some typos
Adds some uppercase to aliases
Adds info about language customization
This commit is contained in:
2025-09-04 12:17:16 +02:00
parent 26bfb974e9
commit d7995c7bc4
7 changed files with 266 additions and 180 deletions

View File

@@ -64,33 +64,33 @@ An in-game description of available commands is available through the /bwb comma
| Command | Alias | Arguments | Permission | Description | | 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,... | | /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) | | /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 | | /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 | | /copybook | bwbCopy | \<# of copies> | bookswithoutborders.copy | Copies the book the player is holding |
| /createbwbSign | bwbsign | \<give/encrypt/decrypt> \[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. | | /createbwbsign | bwbSign | \<give/encrypt/decrypt> \[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 | \<key> | 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 | | /decryptbook | bwbDecrypt | \<key> | 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 | \<file name or number> | bookswithoutborders.delete | Deletes the specified file in the player's directory | | /deletebook | bwbDelete | \<file name or number> | bookswithoutborders.delete | Deletes the specified file in the player's directory |
| /deletebookpage | bwbdeletepage | \<page> | bookswithoutborders.deletepage | Deletes one page from a book | | /deletebookpage | bwbDeletePage | \<page> | bookswithoutborders.deletepage | Deletes one page from a book |
| /deletepublicbook | bwbdeletep | \<file name or number> | bookswithoutborders.admin | Same as deletebook, but deletes files in the public directory | | /deletepublicbook | bwbDeleteP | \<file name or number> | bookswithoutborders.admin | Same as deletebook, but deletes files in the public directory |
| /encryptbook | bwbencrypt | \<key> \[encryption style] | bookswithoutborders.encrypt | Encrypts the book the player is holding. "key" is required and can be any phrase or number excluding spaces. "style" is not required. Possible values are "dna", "substitution", "aes", "onetimepad" and "magic", unless real encryption is enabled, which limits available algorithms. | | /encryptbook | bwbEncrypt | \<key> \[encryption style] | bookswithoutborders.encrypt | Encrypts the book the player is holding. "key" is required and can be any phrase or number excluding spaces. "style" is not required. Possible values are "dna", "substitution", "aes", "onetimepad" and "magic", unless real encryption is enabled, which limits available algorithms. |
| /formatbook | bwbformat | None | bookswithoutborders.format | Formats the held written book (converts color and formatting codes to the corresponding formatted text) | | /formatbook | bwbFormat | None | bookswithoutborders.format | Formats the held written book (converts color and formatting codes to the corresponding formatted text) |
| /givebook | bwbgive | \<file name or number> \<playername> \[# of copies (num)] \[signed (true/false)] | bookswithoutborders.give | Gives the selected player a book from your personal directory | | /givebook | bwbGive | \<file name or number> \<playername> \[# of copies (num)] \[signed (true/false)] | bookswithoutborders.give | Gives the selected player a book from your personal directory |
| /givepublicbook | bwbgivep | \<file name or number> \<playername> \[# of copies (num)] \[signed (true/false)] | bookswithoutborders.givepublic | Same as givebook, but uses books from the public directory | | /givepublicbook | bwbGiveP | \<file name or number> \<playername> \[# of copies (num)] \[signed (true/false)] | bookswithoutborders.givepublic | Same as givebook, but uses books from the public directory |
| /groupencryptbook | bwbgencrypt | \<group name> \<key> \[encryption style] | bookswithoutborders.groupencrypt | Makes an encrypted book that only players with the "bookswithoutborders.decrypt.<group>" permission can decrypt. It's always auto-decrypted, so the key only matters for scrambling the contents. | | /groupencryptbook | bwbGEncrypt | \<group name> \<key> \[encryption style] | bookswithoutborders.groupencrypt | Makes an encrypted book that only players with the "bookswithoutborders.decrypt.<group>" permission can decrypt. It's always auto-decrypted, so the key only matters for scrambling the contents. |
| /loadbook | bwbload | \<file name or number> \[# of copies] \[signed (true/false)] | bookswithoutborders.load | Creates a book from the specified file and gives it to the player. If no file is specified, a list of available files is returned. If true is specified, the book will be signed, if false it will be unsigned | | /loadbook | bwbLoad | \<file name or number> \[# of copies] \[signed (true/false)] | bookswithoutborders.load | Creates a book from the specified file and gives it to the player. If no file is specified, a list of available files is returned. If true is specified, the book will be signed, if false it will be unsigned |
| /loadpublicbook | bwbloadp | \<file name or number> \[# of copies] \[signed (true/false)] | bookswithoutborders.loadpublic | Same as loadbook, but views files in the public directory | | /loadpublicbook | bwbLoadP | \<file name or number> \[# of copies] \[signed (true/false)] | bookswithoutborders.loadpublic | Same as loadbook, but views files in the public directory |
| /migrateBooks | bwbmigrate | None | bookswithoutborders.admin | Migrates all txt books to yml, and fixes any incorrect filenames. | | /migratebooks | bwbMigrate | None | bookswithoutborders.admin | Migrates all txt books to yml, and fixes any incorrect filenames. |
| /reload | bwbreload | None | bookswithoutborders.reload | Reloads BwB's configuration file | | /reload | bwbReload | None | bookswithoutborders.reload | Reloads BwB's configuration file |
| /savebook | bwbsave | \[overwrite (true/false)] | bookswithoutborders.save | Saves the book the player is holding to a text file in a private directory. If true is specified, a book of the same name by the same author will be overwritten by the new book | | /savebook | bwbSave | \[overwrite (true/false)] | bookswithoutborders.save | Saves the book the player is holding to a text file in a private directory. If true is specified, a book of the same name by the same author will be overwritten by the new book |
| /savepublicbook | bwbsavep | \[overwrite (true/false)] | bookswithoutborders.savepublic | Same as savebook, but saves files in the public directory | | /savepublicbook | bwbSaveP | \[overwrite (true/false)] | bookswithoutborders.savepublic | Same as savebook, but saves files in the public directory |
| /setbookauthor | bwbauthor | \<author> | bookswithoutborders.setauthor | Sets the author of the book the player is holding | | /setbookauthor | bwbAuthor | \<author> | bookswithoutborders.setauthor | Sets the author of the book the player is holding |
| /setbookgeneration | bwbgeneration | \<generation> | bookswithoutborders.setgeneration | Sets the generation of the held book (ORIGINAL, COPY_OF_ORIGINAL, COPY_OF_COPY, TATTERED) | | /setbookgeneration | bwbGeneration | \<generation> | bookswithoutborders.setgeneration | Sets the generation of the held book (ORIGINAL, COPY_OF_ORIGINAL, COPY_OF_COPY, TATTERED) |
| /setbookprice | bwbprice | \<item/eco> \<quantity> | bookswithoutborders.setbookprice | Sets the per-book price to create a book via commands. If "Item", the item in the player's hand in the amount of \<quantity> will be the price. If "Eco", a Vault based economy will be used for price. If neither \<Item/Eco> nor \<quantity> are specified, the current price to create books will be removed. | | /setbookprice | bwbPrice | \<item/eco> \<quantity> | bookswithoutborders.setbookprice | Sets the per-book price to create a book via commands. If "Item", the item in the player's hand in the amount of \<quantity> will be the price. If "Eco", a Vault based economy will be used for price. If neither \<Item/Eco> nor \<quantity> are specified, the current price to create books will be removed. |
| /setBookshelfData | bwbshelfdata | \<delete/name/lore> \text> \[more text] | bookswithoutborders.editbookshelf | Sets the name/lore for a bookshelf which is shown when peeking at its contents. | | /setbookshelfdata | bwbShelfData | \<delete/name/lore> \text> \[more text] | bookswithoutborders.editbookshelf | Sets the name/lore for a bookshelf which is shown when peeking at its contents. |
| /setlore | bwblore | \<new lore> | bookswithoutborders.setlore | Sets the lore of the item the player is holding. Insert the lore_line_separator character to force a new line ("~" by default) | | /setlore | bwbLore | \<new lore> | bookswithoutborders.setlore | Sets the lore of the item the player is holding. Insert the lore_line_separator character to force a new line ("~" by default) |
| /settitle | bwbtitle | \<title> \[title] ... \[setDisplayName (true/false)] | bookswithoutborders.settitle | Sets the title of the book or the display name of the item the player is holding. Add a true at the end (`/settitle some title true`) to set a book's display name instead of its title. | | /settitle | bwbTitle | \<title> \[title] ... \[setDisplayName (true/false)] | bookswithoutborders.settitle | Sets the title of the book or the display name of the item the player is holding. Add a true at the end (`/settitle some title true`) to set a book's display name instead of its title. |
| /unsignbook | bwbunsign | None | bookswithoutborders.unsign | Un-signs the book the player is holding | | /unsignbook | bwbUnsign | None | bookswithoutborders.unsign | Un-signs the book the player is holding |
### Permissions: ### Permissions:
@@ -182,3 +182,15 @@ The **_decrypt_** sign must have **\[Decrypt]** on its second line. The third li
| Enable_Book_Peeking | Whether to enable hitting a chiseled bookshelf while sneaking to see the shelf's contents. | | Enable_Book_Peeking | Whether to enable hitting a chiseled bookshelf while sneaking to see the shelf's contents. |
| Use_Real_Encryption | Enables true AES encryption instead of the very fake legacy encryption. The encryption key is stored in the book file to allow admin decryption, but looking at the encrypted book in the file system, only reveals the encrypted pages. Note that real encryption might alter, corrupt or lose a book's contents, so don't use real encryption with books that have no backup in in-game book form or saved book form. | | Use_Real_Encryption | Enables true AES encryption instead of the very fake legacy encryption. The encryption key is stored in the book file to allow admin decryption, but looking at the encrypted book in the file system, only reveals the encrypted pages. Note that real encryption might alter, corrupt or lose a book's contents, so don't use real encryption with books that have no backup in in-game book form or saved book form. |
| Allow_Prevent_Admin_Decryption | Allows players to disable storing the encryption key for an encrypted book. This is only usable for real encryption. This effectively disable admin decryption for the book. Providing the correct password is the only way to decrypt a book without a stored key. THIS IS A DANGEROUS OPTION! | | Allow_Prevent_Admin_Decryption | Allows players to disable storing the encryption key for an encrypted book. This is only usable for real encryption. This effectively disable admin decryption for the book. Providing the correct password is the only way to decrypt a book without a stored key. THIS IS A DANGEROUS OPTION! |
## Language customization
User-facing messages and most formatting is customizable. If you place a strings.yml file in the plugin folder, it will
take priority over built-in languages. If you want to change strings, look at
BooksWithoutBorders/src/main/resources/strings.yml for the proper keys. All strings have the format:
ENUM: "Displayed string". The enum must be identical as it defines which string you have changed. All strings belonging
to a language are beneath the language code and indented with two spaces.
The easiest way to add a new language is to copy an existing language and paste it into your custom strings.yml and
change strings as necessary. If you don't include all strings, the remaining will use the built-in English translation.
Remember to change the language code to whichever you use for your custom language.

View File

@@ -100,7 +100,7 @@ public class BwBConfig {
} }
/** /**
* Gets whether a player can only save their own books with /savebook * Gets whether a player can only save their own books with /saveBook
* *
* @return <p>Whether a player can only save their own books</p> * @return <p>Whether a player can only save their own books</p>
*/ */

View File

@@ -58,7 +58,7 @@ public enum ConfigOption {
AUTHOR_ONLY_UNSIGN("Options.Author_Only_Unsign", false), AUTHOR_ONLY_UNSIGN("Options.Author_Only_Unsign", false),
/** /**
* Whether a player can only save their own books with /savebook * Whether a player can only save their own books with /saveBook
*/ */
AUTHOR_ONLY_SAVE("Options.Author_Only_Save", false), AUTHOR_ONLY_SAVE("Options.Author_Only_Save", false),

View File

@@ -26,7 +26,7 @@ public enum EncryptionStyle {
/** /**
* An unbreakable encryption method assuming the key is completely random and never used more than once, ever * An unbreakable encryption method assuming the key is completely random and never used more than once, ever
*/ */
ONE_TIME_PAD("onetimepad", false), ONE_TIME_PAD("oneTimePad", false),
/** /**
* Just a way of using magic text to make text illegible * Just a way of using magic text to make text illegible
@@ -79,7 +79,7 @@ public enum EncryptionStyle {
@Override @Override
@NotNull @NotNull
public String toString() { public String toString() {
return this.name; return this.name.toLowerCase();
} }
} }

View File

@@ -24,7 +24,7 @@ Options:
Author_Only_Copy: false Author_Only_Copy: false
# Whether to only allow the author of a book to unsign it # Whether to only allow the author of a book to unsign it
Author_Only_Unsign: false Author_Only_Unsign: false
# Whether to only allow saving a player's own books with /savebook # Whether to only allow saving a player's own books with /saveBook
Author_Only_Save: false Author_Only_Save: false
# Whether to automatically format every book when it's signed # Whether to automatically format every book when it's signed
Format_Book_After_Signing: false Format_Book_After_Signing: false

View File

@@ -14,151 +14,151 @@ commands:
aliases: aliases:
- bwb - bwb
usage: /<command> [commandName] usage: /<command> [commandName]
decryptbook: decryptBook:
description: | description: |
Decrypts the book you are holding. "key" is required and MUST be IDENTICAL to the key used to encrypt held book. Decrypts the book you are holding. "key" is required and MUST be IDENTICAL to the key used to encrypt held book.
Use the method with no arguments if you want to (and are allowed to) utilize admin decryption. Use the method with no arguments if you want to (and are allowed to) utilize admin decryption.
There is no decryption method option, as that's stored in the encrypted file, or it's not relevant for decryption. There is no decryption method option, as that's stored in the encrypted file, or it's not relevant for decryption.
aliases: aliases:
- bwbdecrypt - bwbDecrypt
usage: /<command> [key] usage: /<command> [key]
permission: bookswithoutborders.decrypt permission: bookswithoutborders.decrypt
formatbook: formatBook:
description: | description: |
Replaces color and formatting codes (#000000, &a, &4, &n, &#ffffff) in a written book with formatted text. Replaces color and formatting codes (#000000, &a, &4, &n, &#ffffff) in a written book with formatted text.
Note that while formatting an unsigned book can be useful for fixing whitespace, like centering text, but Note that while formatting an unsigned book can be useful for fixing whitespace, like centering text, but
RGB colors look really strange for some reason. Once the book is signed, the colors display as intended. RGB colors look really strange for some reason. Once the book is signed, the colors display as intended.
aliases: aliases:
- bwbformat - bwbFormat
usage: /<command> usage: /<command>
permission: bookswithoutborders.format permission: bookswithoutborders.format
givebook: giveBook:
description: | description: |
Gives the selected player a book from the books you have saved to your personal collection. Gives the selected player a book from the books you have saved to your personal collection.
Any costs for creating the book will be payed by you, the sender. Any costs for creating the book will be payed by you, the sender.
If used with no arguments, a list of all books will be shown. If used with no arguments, a list of all books will be shown.
aliases: aliases:
- bwbgive - bwbGive
usage: /<command> <file name or number> <player name> [# of copies (num)] [signed (true/false)] usage: /<command> <file name or number> <player name> [# of copies (num)] [signed (true/false)]
permission: bookswithoutborders.give permission: bookswithoutborders.give
givepublicbook: givePublicBook:
description: | description: |
Gives the selected player a book from the public book collection. Gives the selected player a book from the public book collection.
Any costs for creating the book will be payed by you, the sender. Any costs for creating the book will be payed by you, the sender.
If used with no arguments, a list of all books will be shown. If used with no arguments, a list of all books will be shown.
aliases: aliases:
- bwbgivep - bwbGiveP
usage: /<command> <file name or number> <player name> [# of copies (num)] [signed (true/false)] usage: /<command> <file name or number> <player name> [# of copies (num)] [signed (true/false)]
permission: bookswithoutborders.givepublic permission: bookswithoutborders.givepublic
groupencryptbook: groupEncryptBook:
description: | description: |
Encrypts book so that only players with the bookswithoutborders.decrypt.<groupName> permission may decrypt the Encrypts book so that only players with the bookswithoutborders.decrypt.<groupName> permission may decrypt the
book by holding and interacting with the book in their hand. The key isn't necessary for decryption, it's only book by holding and interacting with the book in their hand. The key isn't necessary for decryption, it's only
used for properly scrambling the book's contents. used for properly scrambling the book's contents.
"style" is not required. Possible values are "dna", "substitution", "aes", "onetimepad" and "magic". "style" is not required. Possible values are "dna", "substitution", "aes", "oneTimePad" and "magic".
If real encryption is enabled, possible methods are restricted. If real encryption is enabled, possible methods are restricted.
aliases: aliases:
- bwbgencrypt - bwbGEncrypt
usage: /<command> <group name> <key> [encryption style] usage: /<command> <group name> <key> [encryption style]
permission: bookswithoutborders.groupencrypt permission: bookswithoutborders.groupencrypt
deletebook: deleteBook:
description: | description: |
Deletes the specified book from your personal collection. Deletes the specified book from your personal collection.
If used with no arguments, a list of all books will be shown. If used with no arguments, a list of all books will be shown.
aliases: aliases:
- bwbdelete - bwbDelete
usage: /<command> <file name or number> usage: /<command> <file name or number>
permission: bookswithoutborders.delete permission: bookswithoutborders.delete
deletepublicbook: deletePublicBook:
description: | description: |
Deletes the specified book from your public collection. Deletes the specified book from your public collection.
If used with no arguments, a list of all books will be shown. If used with no arguments, a list of all books will be shown.
aliases: aliases:
- bwbdeletep - bwbDeleteP
usage: /<command> <file name of number> usage: /<command> <file name of number>
permission: bookswithoutborders.admin permission: bookswithoutborders.admin
copybook: copyBook:
description: | description: |
Copies your held book the specified amount times. Copies your held book the specified amount times.
If you specify 1 as the number of copies, one book will be added to the stack of book you are copying If you specify 1 as the number of copies, one book will be added to the stack of book you are copying
aliases: aliases:
- bwbcopy - bwbCopy
usage: /<command> <# of copies> usage: /<command> <# of copies>
permission: bookswithoutborders.copy permission: bookswithoutborders.copy
clearbook: clearBook:
description: Removes all text and metadata from the unsigned book you are holding description: Removes all text and metadata from the unsigned book you are holding
aliases: aliases:
- bwbclear - bwbClear
usage: /<command> usage: /<command>
permission: bookswithoutborders.clear permission: bookswithoutborders.clear
unsignbook: unsignBook:
description: Un-signs your held signed book description: Un-signs your held signed book
aliases: aliases:
- bwbunsign - bwbUnsign
usage: /<command> usage: /<command>
permission: bookswithoutborders.unsign permission: bookswithoutborders.unsign
encryptbook: encryptBook:
description: | description: |
Encrypts the book the player is holding. "key" is required and can be any phrase or number excluding spaces. Encrypts the book the player is holding. "key" is required and can be any phrase or number excluding spaces.
"style" is not required. Possible values are "dna", "substitution", "aes", "onetimepad" and "magic". "style" is not required. Possible values are "dna", "substitution", "aes", "oneTimePad" and "magic".
If real encryption is enabled, possible methods are restricted. If real encryption is enabled, possible methods are restricted.
If real encryption and prevent admin decryption are enabled, the third argument prevents the key from being If real encryption and prevent admin decryption are enabled, the third argument prevents the key from being
stored in the server files, preventing admin decryption. If the password is lost, decryption is impossible. stored in the server files, preventing admin decryption. If the password is lost, decryption is impossible.
aliases: aliases:
- bwbencrypt - bwbEncrypt
usage: /<command> <key> [encryption style] [prevent admin decrypt] usage: /<command> <key> [encryption style] [prevent admin decrypt]
permission: bookswithoutborders.encrypt permission: bookswithoutborders.encrypt
setbookgeneration: setBookGeneration:
description: Sets the generation of your held book description: Sets the generation of your held book
aliases: aliases:
- bwbgeneration - bwbGeneration
usage: /<command> <generation> usage: /<command> <generation>
permission: bookswithoutborders.setgeneration permission: bookswithoutborders.setgeneration
setbookprice: setBookPrice:
description: | description: |
Sets the per-book-price to create a book via commands. If "Item", the item in the player's hand in the amount Sets the per-book-price to create a book via commands. If "Item", the item in the player's hand in the amount
of [quantity] will be the price. of [quantity] will be the price.
If "Eco", a Vault based economy will be used for price. If "Eco", a Vault based economy will be used for price.
If neither <Item/Eco> or <quantity> are specified, the current price to create books will be removed. If neither <Item/Eco> or <quantity> are specified, the current price to create books will be removed.
aliases: aliases:
- bwbprice - bwbPrice
usage: /<command> <item/eco> <quantity> usage: /<command> <item/eco> <quantity>
permission: bookswithoutborders.setbookprice permission: bookswithoutborders.setbookprice
setlore: setLore:
description: | description: |
Sets the lore of your held item. Insert the lore_line_separator character to force a new line ("~" by default). Sets the lore of your held item. Insert the lore_line_separator character to force a new line ("~" by default).
The separator can be used several times to split into different lore lines. The separator can be used several times to split into different lore lines.
Color and formatting codes (#000000, &a, &4, &n, &#ffffff) are supported. Color and formatting codes (#000000, &a, &4, &n, &#ffffff) are supported.
aliases: aliases:
- bwblore - bwbLore
usage: /<command> <new lore> usage: /<command> <new lore>
permission: bookswithoutborders.setlore permission: bookswithoutborders.setlore
savepublicbook: savePublicBook:
description: | description: |
Saves your held book to the public book collection. Saves your held book to the public book collection.
If true is specified, a book of the same name by the same author will be overwritten by the new book. If true is specified, a book of the same name by the same author will be overwritten by the new book.
aliases: aliases:
- bwbsavep - bwbSaveP
usage: /<command> [overwrite (true/false)] usage: /<command> [overwrite (true/false)]
permission: bookswithoutborders.savepublic permission: bookswithoutborders.savepublic
savebook: saveBook:
description: | description: |
Saves your held book to your personal book collection. Saves your held book to your personal book collection.
If true is specified, a book of the same name by the same author will be overwritten by the new book. If true is specified, a book of the same name by the same author will be overwritten by the new book.
aliases: aliases:
- bwbsave - bwbSave
usage: /<command> [overwrite (true/false)] usage: /<command> [overwrite (true/false)]
permission: bookswithoutborders.save permission: bookswithoutborders.save
setbookauthor: setBookAuthor:
description: | description: |
Sets the author of the book you are holding. Sets the author of the book you are holding.
Note that certain configuration options will lock some actions to the author, so it is possible to lock your Note that certain configuration options will lock some actions to the author, so it is possible to lock your
access to your own books. Be careful. access to your own books. Be careful.
aliases: aliases:
- bwbauthor - bwbAuthor
usage: /<command> <author> usage: /<command> <author>
permission: bookswithoutborders.setauthor permission: bookswithoutborders.setauthor
settitle: setTitle:
description: | description: |
Sets the title of the book/item you are holding Sets the title of the book/item you are holding
Note that this behaves differently for signed books compared to other items. Note that this behaves differently for signed books compared to other items.
@@ -167,10 +167,10 @@ commands:
Add the argument true after typing in the title to set the display name of a book instead of the title. Add the argument true after typing in the title to set the display name of a book instead of the title.
Color and formatting codes (#000000, &a, &4, &n, &#ffffff) are supported. Color and formatting codes (#000000, &a, &4, &n, &#ffffff) are supported.
aliases: aliases:
- bwbtitle - bwbTitle
usage: /<command> <title> [title] ... [setDisplayName (true/false)] usage: /<command> <title> [title] ... [setDisplayName (true/false)]
permission: bookswithoutborders.settitle permission: bookswithoutborders.settitle
loadbook: loadBook:
description: | description: |
Gives you the book with the given identifier stored in your private collection. Gives you the book with the given identifier stored in your private collection.
If used with no arguments, a list of all books will be shown. If used with no arguments, a list of all books will be shown.
@@ -178,10 +178,10 @@ commands:
The number of copies can be specified to get more than one book, but the signed argument can be used without The number of copies can be specified to get more than one book, but the signed argument can be used without
also specifying the number of copies. also specifying the number of copies.
aliases: aliases:
- bwbload - bwbLoad
usage: /<command> <file name or number> [# of copies] [signed (true/false)] usage: /<command> <file name or number> [# of copies] [signed (true/false)]
permission: bookswithoutborders.load permission: bookswithoutborders.load
loadpublicbook: loadPublicBook:
description: | description: |
Gives you the book with the given identifier stored in the public collection. Gives you the book with the given identifier stored in the public collection.
If used with no arguments, a list of all books will be shown. If used with no arguments, a list of all books will be shown.
@@ -189,13 +189,13 @@ commands:
The number of copies can be specified to get more than one book, but the signed argument can be used without The number of copies can be specified to get more than one book, but the signed argument can be used without
also specifying the number of copies. also specifying the number of copies.
aliases: aliases:
- bwbloadp - bwbLoadP
usage: /<command> <file name or number> [# of copies] [signed (true/false)] usage: /<command> <file name or number> [# of copies] [signed (true/false)]
permission: bookswithoutborders.loadpublic permission: bookswithoutborders.loadpublic
reload: reload:
description: Reloads BwB's configuration file, translations the list of available books description: Reloads BwB's configuration file, translations the list of available books
aliases: aliases:
- bwbreload - bwbReload
usage: /<command> usage: /<command>
permission: bookswithoutborders.reload permission: bookswithoutborders.reload
setBookshelfData: setBookshelfData:
@@ -207,7 +207,7 @@ commands:
lore line separator (default "~") for specifying multiple lore lines. lore line separator (default "~") for specifying multiple lore lines.
Color and formatting codes (#000000, &a, &4, &n, &#ffffff) are supported. Color and formatting codes (#000000, &a, &4, &n, &#ffffff) are supported.
aliases: aliases:
- bwbshelfdata - bwbShelfData
usage: /<command> <delete/name/lore> <text> [more text] usage: /<command> <delete/name/lore> <text> [more text]
permission: bookswithoutborders.editbookshelf permission: bookswithoutborders.editbookshelf
addBookTitlePage: addBookTitlePage:
@@ -220,13 +220,13 @@ commands:
If both an index and text is given, and a signed or unsigned book is provided, a custom chapter page depending on If both an index and text is given, and a signed or unsigned book is provided, a custom chapter page depending on
the text will be added to the specified index.</p> the text will be added to the specified index.</p>
aliases: aliases:
- bwbtitlepage - bwbTitlePage
usage: /<command> [page index] [title~description] usage: /<command> [page index] [title~description]
permission: bookswithoutborders.addtitlepage permission: bookswithoutborders.addtitlepage
deleteBookPage: deleteBookPage:
description: Deletes the specified page from the held book description: Deletes the specified page from the held book
aliases: aliases:
- bwbdeletepage - bwbDeletePage
usage: /<command> <page> usage: /<command> <page>
permission: bookswithoutborders.deletepage permission: bookswithoutborders.deletepage
migrateBooks: migrateBooks:
@@ -236,7 +236,7 @@ commands:
All books will be re-saved, fixing any incorrect file-names, a changed title-author separator and files using All books will be re-saved, fixing any incorrect file-names, a changed title-author separator and files using
underscores "_" instead of spaces. underscores "_" instead of spaces.
aliases: aliases:
- bwbmigrate - bwbMigrate
usage: /<command> usage: /<command>
permission: bookswithoutborders.admin permission: bookswithoutborders.admin
createBwBSign: createBwBSign:
@@ -246,9 +246,9 @@ commands:
after give to see the book list. after give to see the book list.
If creating an encrypt or a decrypt sign, the second argument will be treated as the encryption/decryption password If creating an encrypt or a decrypt sign, the second argument will be treated as the encryption/decryption password
If creating an encrypt sign, the optional third argument is the encryption style to use. Possible values are If creating an encrypt sign, the optional third argument is the encryption style to use. Possible values are
"dna", "substitution", "aes", "onetimepad" and "magic" "dna", "substitution", "aes", "oneTimePad" and "magic"
aliases: aliases:
- bwbsign - bwbSign
usage: /<command> <give/encrypt/decrypt> [book identifier/password] [encryption style] usage: /<command> <give/encrypt/decrypt> [book identifier/password] [encryption style]
permission: bookswithoutborders.signs permission: bookswithoutborders.signs
permissions: permissions:

View File

@@ -1,89 +1,101 @@
en: en:
PREFIX: "[BwB]" PREFIX: "[BwB]"
SUCCESS_COPY: "Book copied!" # ---------------------- #
SUCCESS_CLEARED: "Book cleared!" # Generic command checks #
SUCCESS_DECRYPTED: "Book decrypted!" # ---------------------- #
SUCCESS_AUTO_DECRYPTED: "Book auto-decrypted!"
SUCCESS_DELETED: "\"{file}\" deleted successfully"
SUCCESS_FORMATTED: "Book formatted!"
SUCCESS_GIVE_SENT: "Book sent!"
SUCCESS_GIVE_RECEIVED: "Book received!"
SUCCESS_TITLE_PAGE_ADDED: "Title page added!"
SUCCESS_PAGE_DELETED: "Page deleted!"
SUCCESS_BOOK_LOADED: "Book created!"
SUCCESS_MIGRATION_STARTED: "Starting book migration..."
SUCCESS_RELOADED: "Configuration, books and language strings reloaded!"
SUCCESS_SAVED: "Book Saved as &e\"{file}\"&r"
SUCCESS_SET_AUTHOR: "Book author set to {author}!"
SUCCESS_COST_REMOVED: "Price to create books removed!"
SUCCESS_COST_ITEM_SET: "Book creation price set to {quantity} {cost}(s)!"
SUCCESS_COST_ECONOMY_SET: "Book creation price set to {cost}!"
SUCCESS_COST_PAID: |
{cost} withdrawn to create {copies} book(s)
New balance: {balance}
SUCCESS_BOOKSHELF_DATA_DELETED: "Bookshelf successfully deleted!"
SUCCESS_BOOKSHELF_TITLE_SET: "Title successfully saved!"
SUCCESS_BOOKSHELF_LORE_SET: "Lore successfully saved!"
SUCCESS_GENERATION_CHANGED: "Book generation successfully changed!"
SUCCESS_LORE_SET: "Added lore to item!"
SUCCESS_TITLE_SET: "Title set to {title}!"
SUCCESS_DISPLAY_NAME_SET: "Display name set to {displayName}!"
SUCCESS_MIGRATED: "Successfully migrated all books"
SUCCESS_ENCRYPTED: "Book encrypted!"
SUCCESS_UNSIGNED: "Book un-signed"
ACTION_COPY: "copy"
ACTION_CLEAR: "clear"
ACTION_DECRYPT: "decrypt"
ACTION_ENCRYPT: "encrypt"
ACTION_ADD_TITLE_AUTHOR_PAGE: "add an author title page to"
ACTION_SET_AUTHOR: "set author"
ACTION_CHANGE_GENERATION: "change generation"
ACTION_UNSIGN: "unsign"
ERROR_PLAYER_ONLY: "This command can only be used by a player!" ERROR_PLAYER_ONLY: "This command can only be used by a player!"
ERROR_NOT_HOLDING_WRITTEN_BOOK: "You must be holding a written book to {action} it!" ERROR_NOT_HOLDING_WRITTEN_BOOK: "You must be holding a written book to {action} it!"
ERROR_NOT_HOLDING_WRITABLE_BOOK: "You must be holding a writable book to {action} it!" ERROR_NOT_HOLDING_WRITABLE_BOOK: "You must be holding a writable book to {action} it!"
ERROR_NOT_HOLDING_ANY_BOOK: "You must be holding a book to perform this command" ERROR_NOT_HOLDING_ANY_BOOK: "You must be holding a book to perform this command"
ERROR_ONLY_ONE_BOOK: "You cannot {action} two books at once!" ERROR_ONLY_ONE_BOOK: "You cannot {action} two books at once!"
ERROR_TOO_MANY_ARGUMENTS_COMMAND: "You have given too many arguments for this command!"
ERROR_AUTHOR_ONLY: "You must be the author of this book to use this command!"
ERROR_NO_ITEM: "You must be holding an item to use this command!"
ERROR_INVENTORY_FULL: "You need an available slot in your inventory."
ERROR_METADATA_MISSING: "Unable to get metadata for the held book!"
ERROR_INCORRECT_FILE_NAME: "Incorrect file name!"
ERROR_UNKNOWN_COMMAND: "Invalid command specified"
ERROR_BOOK_NOT_FOUND: "Could not find a book to replace!"
ERROR_METADATA_CREATION_FAILED: "Unable to create blank book metadata!"
# ---------------- #
# setBookshelfData #
# ---------------- #
SUCCESS_BOOKSHELF_DATA_DELETED: "Bookshelf successfully deleted!"
SUCCESS_BOOKSHELF_TITLE_SET: "Title successfully saved!"
SUCCESS_BOOKSHELF_LORE_SET: "Lore successfully saved!"
ERROR_BOOKSHELF_NOT_FOUND: "You are not looking at a bookshelf!"
ERROR_BOOKSHELF_NOT_REGISTERED: "The block you are looking at is not a registered bookshelf"
ERROR_BOOKSHELF_NAME_REQUIRED: "You must name the bookshelf before assigning lore!"
# -------- #
# copyBook #
# -------- #
SUCCESS_COPY: "Book copied!"
ACTION_COPY: "copy"
ERROR_COPY_COUNT_NOT_SPECIFIED: "You must specify the number of copies to be made!" ERROR_COPY_COUNT_NOT_SPECIFIED: "You must specify the number of copies to be made!"
ERROR_COPY_NEGATIVE_AMOUNT: "Number of copies must be larger than 0!" ERROR_COPY_NEGATIVE_AMOUNT: "Number of copies must be larger than 0!"
ERROR_COPY_INVALID_AMOUNT: | ERROR_COPY_INVALID_AMOUNT: |
Book not copied! Book not copied!
Number specified was invalid! Number specified was invalid!
ERROR_BOOK_COPIED_TOO_FAR: "You cannot copy this book any further. You must have the original or a direct copy." ERROR_BOOK_COPIED_TOO_FAR: "You cannot copy this book any further. You must have the original or a direct copy."
ERROR_INVENTORY_FULL: "You need an available slot in your inventory." # --------- #
ERROR_METADATA_MISSING: "Unable to get metadata for the held book!" # clearBook #
ERROR_VAULT_COST_BUT_UNAVAILABLE: "&4The cost was set to economy, but Vault is unavailable!" # --------- #
ERROR_DECRYPT_MISSING_KEY: "No decryption password given!" SUCCESS_CLEARED: "Book cleared!"
ERROR_DECRYPT_FAILED: "Failed to decrypt book!" ACTION_CLEAR: "clear"
ERROR_ENCRYPTED_DIRECTORY_EMPTY_OR_MISSING: "Could not find any encrypted files!" # ---------- #
ERROR_ENCRYPTED_BOOK_UNKNOWN: "No matching encrypted book found!" # deleteBook #
# ---------- #
SUCCESS_DELETED: "\"{file}\" deleted successfully"
ERROR_DELETE_EMPTY: "No files available to delete!" ERROR_DELETE_EMPTY: "No files available to delete!"
ERROR_INCORRECT_FILE_NAME: "Incorrect file name!"
ERROR_DELETE_FAILED_SILENT: "Deletion failed without an exception!" ERROR_DELETE_FAILED_SILENT: "Deletion failed without an exception!"
ERROR_DELETE_FAILED_EXCEPTION: "Deletion failed!" ERROR_DELETE_FAILED_EXCEPTION: "Deletion failed!"
ERROR_ENCRYPT_NO_KEY: "You must specify a key to encrypt a book!" # ---------- #
ERROR_ENCRYPT_EMPTY: "Book must have contents to encrypt!" # formatBook #
ERROR_TOO_MANY_ARGUMENTS_COMMAND: "You have given too many arguments for this command!" # ---------- #
SUCCESS_FORMATTED: "Book formatted!"
# -------- #
# giveBook #
# -------- #
SUCCESS_GIVE_SENT: "Book sent!"
SUCCESS_GIVE_RECEIVED: "Book received!"
ERROR_GIVE_NO_RECIPIENT: "You have not specified the recipient of the book!" ERROR_GIVE_NO_RECIPIENT: "You have not specified the recipient of the book!"
ERROR_GIVE_RECIPIENT_UNKNOWN: "Player not found!" ERROR_GIVE_RECIPIENT_UNKNOWN: "Player not found!"
ERROR_GIVE_RECIPIENT_FULL: "Receiving player must have space in their inventory to receive books!" ERROR_GIVE_RECIPIENT_FULL: "Receiving player must have space in their inventory to receive books!"
ERROR_GIVE_LOAD_FAILED: "Book failed to load!" ERROR_GIVE_LOAD_FAILED: "Book failed to load!"
# ---------------- #
# addBookTitlePage #
# ---------------- #
SUCCESS_TITLE_PAGE_ADDED: "Title page added!"
ACTION_ADD_TITLE_AUTHOR_PAGE: "add an author title page to"
# -------------- #
# deleteBookPage #
# -------------- #
SUCCESS_PAGE_DELETED: "Page deleted!"
ERROR_INVALID_BOOK_PAGE: "Invalid page index given!" ERROR_INVALID_BOOK_PAGE: "Invalid page index given!"
ERROR_OUT_OF_RANGE_BOOK_PAGE: "The given page index is out of bounds!" ERROR_OUT_OF_RANGE_BOOK_PAGE: "The given page index is out of bounds!"
ERROR_NO_BOOK_PAGE: "You must supply a page index" ERROR_NO_BOOK_PAGE: "You must supply a page index"
ERROR_GROUP_ENCRYPT_ARGUMENTS_MISSING: "You must specify a group name and key to encrypt a book!" # ------------ #
ERROR_ENCRYPTED_ALREADY: "Book is already encrypted!" # migrateBooks #
ERROR_LOAD_FAILED: "Book failed to load!" # ------------ #
ERROR_RELOAD_FAILED: | SUCCESS_MIGRATION_STARTED: "Starting book migration..."
Reload Failed! SUCCESS_MIGRATED: "Successfully migrated all books"
See console for details ERROR_MIGRATION_FAILED: "Failed to migrate all books"
ERROR_SAVE_INVALID_PATH: "Saving Failed! Unable to find the save path!" ERROR_MIGRATION_BOOK_FAILED: "Failed to migrate book: {file} Cause: {exception}"
ERROR_SAVE_FILE_SYSTEM_ERROR: "Saving Failed! If this continues to happen, consult a server admin!" # ---------- #
ERROR_SAVE_OVERWRITE_REQUIRED: "Use &e{command}&r to overwrite!" # unsignBook #
ERROR_SAVE_DUPLICATE_NAMED: "Book is already saved!" # ---------- #
ERROR_SAVE_DUPLICATE_UNNAMED: "Maximum amount of {file} duplicates reached!" SUCCESS_UNSIGNED: "Book un-signed"
ERROR_UNKNOWN_COMMAND: "Invalid command specified" ACTION_UNSIGN: "unsign"
ERROR_AUTHOR_BLANK: "You must specify an author" # ------------------------------------ #
# setBookPrice / General cost messages #
# ------------------------------------ #
SUCCESS_COST_REMOVED: "Price to create books removed!"
SUCCESS_COST_ITEM_SET: "Book creation price set to {quantity} {cost}(s)!"
SUCCESS_COST_ECONOMY_SET: "Book creation price set to {cost}!"
SUCCESS_COST_PAID: |
{cost} withdrawn to create {copies} book(s)
New balance: {balance}
ERROR_VAULT_COST_BUT_UNAVAILABLE: "&4The price was set to economy, but Vault is unavailable!"
ERROR_COST_NOT_SPECIFIED: "[Item/Eco] and [quantity] must be specified!" ERROR_COST_NOT_SPECIFIED: "[Item/Eco] and [quantity] must be specified!"
ERROR_COST_INVALID_QUANTITY: "[quantity] must be a number greater than 0!" ERROR_COST_INVALID_QUANTITY: "[quantity] must be a number greater than 0!"
ERROR_COST_INVALID_TYPE: "Price type must be \"item\" or \"economy\"!" ERROR_COST_INVALID_TYPE: "Price type must be \"item\" or \"economy\"!"
@@ -91,36 +103,93 @@ en:
ERROR_COST_INSUFFICIENT_ECONOMY: "{cost} is required for this command!" ERROR_COST_INSUFFICIENT_ECONOMY: "{cost} is required for this command!"
ERROR_COST_INSUFFICIENT_AMOUNT: "{cost} {currency}(s) are required for this command!" ERROR_COST_INSUFFICIENT_AMOUNT: "{cost} {currency}(s) are required for this command!"
ERROR_COST_INSUFFICIENT_WRITABLE_BOOK: "{cost} empty book and quill(s) are required for this command!" ERROR_COST_INSUFFICIENT_WRITABLE_BOOK: "{cost} empty book and quill(s) are required for this command!"
ERROR_BOOKSHELF_NOT_FOUND: "You are not looking at a bookshelf!" # -------------------------------------- #
ERROR_BOOKSHELF_NOT_REGISTERED: "The block you are looking at is not a registered bookshelf" # Encryption/decryption related messages #
ERROR_BOOKSHELF_NAME_REQUIRED: "You must name the bookshelf before assigning lore!" # -------------------------------------- #
ERROR_GENERATION_NOT_SPECIFIED: "You must specify the new generation for your book!" SUCCESS_DECRYPTED: "Book decrypted!"
ERROR_GENERATION_INVALID: "Invalid book generation specified!" SUCCESS_AUTO_DECRYPTED: "Book auto-decrypted!"
ERROR_LORE_EMPTY: "You must specify the new lore to set!" SUCCESS_ENCRYPTED: "Book encrypted!"
ERROR_NO_ITEM: "You must be holding an item to use this command!" ACTION_DECRYPT: "decrypt"
ERROR_TITLE_EMPTY: "You must specify the new title/display name to set!" ACTION_ENCRYPT: "encrypt"
ERROR_TITLE_LENGTH: "Book titles are capped at 32 characters!" ERROR_DECRYPT_MISSING_KEY: "No decryption password given!"
ERROR_ENCRYPT_ALREADY_SAVED: | ERROR_DECRYPT_FAILED: "Failed to decrypt book!"
An encrypted version of this book is already saved. ERROR_ENCRYPTED_DIRECTORY_EMPTY_OR_MISSING: "Could not find any encrypted files!"
Please decrypt your previously encrypted copy first. ERROR_ENCRYPTED_BOOK_UNKNOWN: "No matching encrypted book found!"
ERROR_BOOK_NOT_FOUND: "Could not find a book to replace!" ERROR_GROUP_ENCRYPT_ARGUMENTS_MISSING: "You must specify a group name and key to encrypt a book!"
ERROR_GROUP_DECRYPT_NO_PERMISSION: "You are not allowed to decrypt that book" ERROR_GROUP_DECRYPT_NO_PERMISSION: "You are not allowed to decrypt that book"
ERROR_GROUP_DECRYPT_NOT_FOUND: "Unable to find encrypted book" ERROR_GROUP_DECRYPT_NOT_FOUND: "Unable to find encrypted book"
ERROR_GROUP_DECRYPT_LOAD_FAILED: "Unable to load the unencrypted book!" ERROR_GROUP_DECRYPT_LOAD_FAILED: "Unable to load the unencrypted book!"
ERROR_MIGRATION_FAILED: "Failed to migrate all books"
ERROR_MIGRATION_BOOK_FAILED: "Failed to migrate book: {file} Cause: {exception}"
ERROR_METADATA_CREATION_FAILED: "Unable to create blank book metadata!"
ERROR_LOAD_BOOK_EMPTY: "File was blank!!"
ERROR_AUTHOR_ONLY: "You must be the author of this book to use this command!"
ERROR_ENCRYPT_BOOK_EMPTY: "Book is empty!" ERROR_ENCRYPT_BOOK_EMPTY: "Book is empty!"
ERROR_DECRYPT_NOT_FOUND: "Book not found!" ERROR_DECRYPT_NOT_FOUND: "Book not found!"
ERROR_DECRYPT_LEGACY_INVALID_KEY: "Incorrect decryption key!" ERROR_DECRYPT_LEGACY_INVALID_KEY: "Incorrect decryption key!"
ERROR_GROUP_ENCRYPT_FAILED: "Group encrypted failed!" ERROR_GROUP_ENCRYPT_FAILED: "Group encrypted failed!"
ERROR_ENCRYPT_FAILED: "Encryption failed!" ERROR_ENCRYPT_FAILED: "Encryption failed!"
ERROR_ENCRYPT_NO_KEY: "You must specify a key to encrypt a book!"
ERROR_ENCRYPT_EMPTY: "Book must have contents to encrypt!"
ERROR_ENCRYPT_ALREADY_SAVED: |
An encrypted version of this book is already saved.
Please decrypt your previously encrypted copy first.
NEUTRAL_ATTEMPTING_LEGACY_DECRYPTION: "Attempting legacy decryption" NEUTRAL_ATTEMPTING_LEGACY_DECRYPTION: "Attempting legacy decryption"
# ---------------------------------- # ERROR_ENCRYPTED_ALREADY: "Book is already encrypted!"
# Custom formatting for some output # # ------------- #
# ---------------------------------- # # setBookAuthor #
# ------------- #
SUCCESS_SET_AUTHOR: "Book author set to {author}!"
ACTION_SET_AUTHOR: "set author"
ERROR_AUTHOR_BLANK: "You must specify an author"
# ------ #
# reload #
# ------ #
SUCCESS_RELOADED: "Configuration, books and language strings reloaded!"
ERROR_RELOAD_FAILED: |
Reload Failed!
See console for details
# -------- #
# saveBook #
# -------- #
SUCCESS_SAVED: "Book Saved as &e\"{file}\"&r"
ERROR_SAVE_INVALID_PATH: "Saving Failed! Unable to find the save path!"
ERROR_SAVE_FILE_SYSTEM_ERROR: "Saving Failed! If this continues to happen, consult a server admin!"
ERROR_SAVE_OVERWRITE_REQUIRED: "Use &e{command}&r to overwrite!"
ERROR_SAVE_DUPLICATE_NAMED: "Book is already saved!"
ERROR_SAVE_DUPLICATE_UNNAMED: "Maximum amount of {file} duplicates reached!"
# -------- #
# loadBook #
# -------- #
SUCCESS_BOOK_LOADED: "Book created!"
ERROR_LOAD_FAILED: "Book failed to load!"
ERROR_LOAD_BOOK_EMPTY: "File was blank!!"
# ----------------- #
# setBookGeneration #
# ----------------- #
SUCCESS_GENERATION_CHANGED: "Book generation successfully changed!"
ACTION_CHANGE_GENERATION: "change generation"
ERROR_GENERATION_NOT_SPECIFIED: "You must specify the new generation for your book!"
ERROR_GENERATION_INVALID: "Invalid book generation specified!"
# ------- #
# setLore #
# ------- #
SUCCESS_LORE_SET: "Added lore to item!"
ERROR_LORE_EMPTY: "You must specify the new lore to set!"
# -------- #
# setTitle #
# -------- #
SUCCESS_TITLE_SET: "Title set to {title}!"
SUCCESS_DISPLAY_NAME_SET: "Display name set to {displayName}!"
ERROR_TITLE_EMPTY: "You must specify the new title/display name to set!"
ERROR_TITLE_LENGTH: "Book titles are capped at 32 characters!"
# -------------- #
# Sign responses #
# -------------- #
ERROR_SIGN_INVALID: "Invalid sign!"
ERROR_SIGN_COMMAND_INVALID: "Sign command {action} {data} is invalid"
ERROR_SIGN_NOT_FOUND: "You are not looking at a sign!"
ERROR_SIGN_BOOK_FOUND_BUT_INVALID: "The book was found, but does not contain the title author separator"
SUCCESS_SIGN_GIVE: "Received book!"
SUCCESS_SIGN_CREATED: "BwB sign created successfully!"
# ---------------------------------------- #
# Formatting for the command explanations #
# ---------------------------------------- #
NEUTRAL_COMMANDS_HEADER: | NEUTRAL_COMMANDS_HEADER: |
&nBooks without Borders help page&r &nBooks without Borders help page&r
&e[] = optional, <> = required (see each description for exceptions) &e[] = optional, <> = required (see each description for exceptions)
@@ -135,13 +204,15 @@ en:
NEUTRAL_COMMANDS_COMMAND_NO_PERMISSION_REQUIRED: "None" NEUTRAL_COMMANDS_COMMAND_NO_PERMISSION_REQUIRED: "None"
NEUTRAL_COMMANDS_COMMAND_PERMISSION: " &7{{permission}}" NEUTRAL_COMMANDS_COMMAND_PERMISSION: " &7{{permission}}"
NEUTRAL_COMMANDS_ALIASES: " &f(&b{aliases}&f)" NEUTRAL_COMMANDS_ALIASES: " &f(&b{aliases}&f)"
# ----------------------------------------- #
# Formatting for title pages (addTitlePage) #
# ----------------------------------------- #
NEUTRAL_TITLE_PAGE_TITLE_AUTHOR_FORMAT: "{title}{separator}By: {author}" NEUTRAL_TITLE_PAGE_TITLE_AUTHOR_FORMAT: "{title}{separator}By: {author}"
NEUTRAL_TITLE_PAGE_HEADER_FORMAT: "\n&n&l{header}&r" NEUTRAL_TITLE_PAGE_HEADER_FORMAT: "\n&n&l{header}&r"
NEUTRAL_TITLE_PAGE_TEXT_FORMAT: "\n\n&o{text}&r" NEUTRAL_TITLE_PAGE_TEXT_FORMAT: "\n\n&o{text}&r"
NEUTRAL_AUTHOR_PUBLIC_BOOKS_HEADER: "--- &aPublicly saved books by: &b{author}&r ---\n" # -------------------- #
NEUTRAL_AUTHOR_PLAYER_BOOKS_HEADER: "--- &aYour saved books by: &b{author}&r ---\n" # Book list formatting #
NEUTRAL_AUTHOR_BOOKS_PATH: "Select book by path" # -------------------- #
NEUTRAL_AUTHOR_BOOKS_INVALID_PAGE: "&7No such page"
NEUTRAL_BOOK_LIST_TOTAL_PAGES: "Page {current} of {total}" NEUTRAL_BOOK_LIST_TOTAL_PAGES: "Page {current} of {total}"
NEUTRAL_BOOK_LIST_PREVIOUS_PAGE: "[<] Previous" NEUTRAL_BOOK_LIST_PREVIOUS_PAGE: "[<] Previous"
NEUTRAL_BOOK_LIST_NEXT_PAGE: "Next [>]" NEUTRAL_BOOK_LIST_NEXT_PAGE: "Next [>]"
@@ -154,6 +225,16 @@ en:
NEUTRAL_BOOK_LIST_PATH_HOVER: "Select book by path" NEUTRAL_BOOK_LIST_PATH_HOVER: "Select book by path"
NEUTRAL_BOOK_LIST_BOOK_INDEX_HOVER: "Select book by index" NEUTRAL_BOOK_LIST_BOOK_INDEX_HOVER: "Select book by index"
NEUTRAL_BOOK_LIST_BOOK_INDEX_NUMBER: "[{index}]" NEUTRAL_BOOK_LIST_BOOK_INDEX_NUMBER: "[{index}]"
# --------------------------- #
# Author book list formatting #
# --------------------------- #
NEUTRAL_AUTHOR_PUBLIC_BOOKS_HEADER: "--- &aPublicly saved books by: &b{author}&r ---\n"
NEUTRAL_AUTHOR_PLAYER_BOOKS_HEADER: "--- &aYour saved books by: &b{author}&r ---\n"
NEUTRAL_AUTHOR_BOOKS_PATH: "Select book by path"
NEUTRAL_AUTHOR_BOOKS_INVALID_PAGE: "&7No such page"
# ---------------------------- #
# Bookshelf peeking formatting #
# ---------------------------- #
NEUTRAL_BOOKSHELF_HEADER_TITLE: "&nBookshelf summary\n&#FF5700Books in {title}&r&#FF5700:{lore}" NEUTRAL_BOOKSHELF_HEADER_TITLE: "&nBookshelf summary\n&#FF5700Books in {title}&r&#FF5700:{lore}"
NEUTRAL_BOOKSHELF_HEADER_LORE: "\n &d{lore}&r" NEUTRAL_BOOKSHELF_HEADER_LORE: "\n &d{lore}&r"
NEUTRAL_BOOKSHELF_HEADER_TITLE_EMPTY: "shelf" NEUTRAL_BOOKSHELF_HEADER_TITLE_EMPTY: "shelf"
@@ -174,19 +255,12 @@ en:
# --------------------------- # # --------------------------- #
# Sign headers and specifiers # # Sign headers and specifiers #
# --------------------------- # # --------------------------- #
# Warning: Changing any of these will make existing BwB signs invalid!
# --------------------------- #
SIGN_HEADER: "[BwB]" SIGN_HEADER: "[BwB]"
SIGN_ENCRYPT: "[Encrypt]" SIGN_ENCRYPT: "[Encrypt]"
SIGN_DECRYPT: "[Decrypt]" SIGN_DECRYPT: "[Decrypt]"
SIGN_GIVE: "[Give]" SIGN_GIVE: "[Give]"
# -------------- #
# Sign responses #
# -------------- #
ERROR_SIGN_INVALID: "Invalid sign!"
ERROR_SIGN_COMMAND_INVALID: "Sign command {action} {data} is invalid"
ERROR_SIGN_NOT_FOUND: "You are not looking at a sign!"
ERROR_SIGN_BOOK_FOUND_BUT_INVALID: "The book was found, but does not contain the title author separator"
SUCCESS_SIGN_GIVE: "Received book!"
SUCCESS_SIGN_CREATED: "BwB sign created successfully!"
# ------------ # # ------------ #
# Placeholders # # Placeholders #
# -------------¤ # -------------¤