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

Changes bookshelf peeking to require sneaking
Makes sure plain books are displayed in the book list
This commit is contained in:
Kristian Knarvik 2023-06-24 12:03:37 +02:00
parent 1158820f97
commit c389c6fbcb
3 changed files with 20 additions and 5 deletions

View File

@ -139,4 +139,4 @@ The **_decrypt_** sign must have **\[Decrypt]** on its second line. The third li
| Author_Only_Save | Whether to only allow saving a player's own books with /savebook | | Author_Only_Save | Whether to only allow saving a player's own books with /savebook |
| Format_Book_After_Signing | Whether to automatically format every book when it's signed | | Format_Book_After_Signing | Whether to automatically format every book when it's signed |
| Change_Generation_On_Copy | Whether to display "COPY" or "COPY_OF_COPY" instead of "ORIGINAL" when a book is copied. This also uses the vanilla behavior where a copy of a copy or tattered book cannot be copied further. | | Change_Generation_On_Copy | Whether to display "COPY" or "COPY_OF_COPY" instead of "ORIGINAL" when a book is copied. This also uses the vanilla behavior where a copy of a copy or tattered book cannot be copied further. |
| Enable_Book_Peeking | Whether to enable hitting a chiseled bookshelf to see the shelf's contents. Sneaking is required to destroy a bookshelf if this is enabled. | | Enable_Book_Peeking | Whether to enable hitting a chiseled bookshelf while sneaking to see the shelf's contents. |

View File

@ -32,9 +32,9 @@ public class BookshelfListener implements Listener {
public void onBookshelfClick(PlayerInteractEvent event) { public void onBookshelfClick(PlayerInteractEvent event) {
Player player = event.getPlayer(); Player player = event.getPlayer();
// If left-clicking a chiseled bookshelf and not sneaking, display contents // If left-clicking a chiseled bookshelf and sneaking, display contents
if (!event.hasBlock() || !(event.getClickedBlock().getState() instanceof ChiseledBookshelf chiseledBookshelf) || if (!event.hasBlock() || !(event.getClickedBlock().getState() instanceof ChiseledBookshelf chiseledBookshelf) ||
event.getAction() != Action.LEFT_CLICK_BLOCK || player.isSneaking()) { event.getAction() != Action.LEFT_CLICK_BLOCK || !player.isSneaking()) {
return; return;
} }
@ -69,11 +69,27 @@ public class BookshelfListener implements Listener {
builder.append(getBookDescription(bookMeta)); builder.append(getBookDescription(bookMeta));
} else if (meta instanceof EnchantmentStorageMeta enchantmentStorageMeta) { } else if (meta instanceof EnchantmentStorageMeta enchantmentStorageMeta) {
builder.append(getEnchantedBookDescription(enchantmentStorageMeta)); builder.append(getEnchantedBookDescription(enchantmentStorageMeta));
} else if (meta != null) {
builder.append(getPlainBookDescription(meta));
} }
} }
return builder.toString(); return builder.toString();
} }
/**
* Gets the description of a plain (enchant-able) book
*
* @param itemMeta <p>The metadata for the book to describe</p>
* @return <p>The description of the book</p>
*/
private String getPlainBookDescription(ItemMeta itemMeta) {
String name = itemMeta.getDisplayName();
if (name.isEmpty()) {
name = "Plain book";
}
return name;
}
/** /**
* Gets the description of a book * Gets the description of a book
* *

View File

@ -30,6 +30,5 @@ Options:
# Whether to display "COPY" or "COPY_OF_COPY" instead of "ORIGINAL" when a book is copied. This also uses the # Whether to display "COPY" or "COPY_OF_COPY" instead of "ORIGINAL" when a book is copied. This also uses the
# vanilla behavior where a copy of a copy cannot be copied further. # vanilla behavior where a copy of a copy cannot be copied further.
Change_Generation_On_Copy: false Change_Generation_On_Copy: false
# Whether to enable hitting a chiseled bookshelf to see the shelf's contents. Sneaking is required to destroy a # Whether to enable hitting a chiseled bookshelf while sneaking to see the shelf's contents.
# bookshelf if this is enabled.
Enable_Book_Peeking: false Enable_Book_Peeking: false