Sueta

【ChatManager 448 [Skript]】- Admin Commands | GUI | Easier Cu

1.3.0-[Beta]

Fully Customizable System to properly control the Chat System! Supports 1.8-1.18 [High Quality]

·Plugin

By the way! Check out my server at play.sunknights.fun!

Consider donating!
It helps me keep on supporting my plugins while keeping them free! DM me and I'll put your name here! Click me!


About
Ever wondered why bookshelves in Minecraft cannot be used to store books? Well, now you can!
With this plugin, you will be able to open bookshelves like chests and store books inside them.

Pictures

Show Screenshots


^The Bookshelf interface with the default 2 rows

^The Particle effect when a player is opening it, the plugin chooses randomly between a yellow and a purple particle to play

Features
1. The bookshelves!
- Right-click bookshelves to open a chest-like inventory

- Bookshelves emit particles when a player is opening it (togglable in config) [1.13 or above]
- Customize the number of rows each bookshelf has (default to 2 rows in config)
- Plays a book placing sound when a player place or remove an item in a bookshelf
- Limit the type of item that can be placed into bookshelves (Default to only books-like items in config)

- Supports moving bookshelves with pistons and sticky pistons

- Supports named bookshelves! (Similar to when you name a chest and place it down, the inventory retains the chest's item name)

- Support Droppers (Need to be enabled in config)

- Experimental support Hoppers and Hoppers Minecarts (Need to be enabled in config)
(Note that it is quite resource intensive if you have too many bookshelves)

- Supports creative shift-middle-click block to copy bookshelf with items inside

2. Enchantment Table Boosting! [1.11 or above]
- Boost Enchantment Tables with surrounding it with bookshelves containing enchantment books with the enchantment of your choice!
- More books, higher chance!
- For example, if every slot of all bookshelf is Sharpness 5 books you will be guaranteed a sharpness enchantment!
- The feature can be toggled in the config as always

Supported Plugins
- Supports LWCX Protections (Requires the latest version)
- Supports BlockLocker Container Locking
- Supports
WorldGuard regions (Requires at least version 7.0.0)
- Supports GriefPrevention land claim protections

- Supports RedProtect land claim protections
- Supports Residence land claim protections
- Supports Towny land claim protections
- Supports ASkyBlock island protections
- Supports BentoBox island protections
- Supports
SuperiorSkyblock2 island protections
- Supports PlotSquared plot protections (Requires v4 or v5)
- Supports OpenInv silent chest
- Supports Essentials player vanish
- Supports CMI player vanish
- Supports SuperVanish player vanish
- Supports PremiumVanish player vanish
- Supports InteractionVisualizer bookshelf interact animations


(Bookshelves are seen just like chests in most of these plugins)

Installation
1. Put Bookshelf.jar into the plugins folder
2. Start the server
3. Edit the config (if you need to)
4. Restart the server (if you changed something in the config in step 3)

Commands
/bookshelf reload - Reloads the plugin
/bookshelf update - Check for updates

Q&A
Hoppers and Droppers do not work! What do I do?
You have to enable "EnableHopperSupport" and/or "EnableDropperSupport" in the config!
(Note that it is quite resource intensive if you have too many bookshelves)

Enchantment Table Boosting does not work, and there are no errors, and I've already enabled it in the config, why is that?
If you are running Minecraft version 1.8 - 1.10.2, unfortunately, enchantment table boosting feature is unsupported on these versions.
If you are running Minecraft version 1.11 or above, double check your settings and permissions or contact me!

The shift + pick block with NBT function does not work, I already gave myself permission, what's wrong?
Currently, the feature is only tested in Minecraft 1.15 - 1.15.2. If it doesn't work in another version, it is normal and is being worked on. Thank you for being patient!


Permissions

bookshelf.use - Allow players to use a bookshelf [default: false]
bookshelf.reload - Reload the plugin [default: op]
bookshelf.copynbt - Allows you to shift-middle-click to copy bookshelf with items inside in creative [default: op]
bookshelf.update - Allow you to receive update messages [default: op]

Default Config

Show Config
Options:
  #The number of rows for a bookshelf (Allows 1-5)
  BookShelfRows: 2

  #Whether to use the item whitelist or not
  UseWhitelist: true

  #Items which is allowed to be placed into a bookshelf
  #See this for item names: https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Material.html
  Whitelist:
    - BOOK
    - WRITABLE_BOOK
    - WRITTEN_BOOK
    - ENCHANTED_BOOK
    - KNOWLEDGE_BOOK

  #The default inventory name for an unnamed bookshelf
  Title: "Bookshelf"

  NoPermissionToReloadMessage: "&cYou do not have permission use this command!"
  NoPermissionToUpdateMessage: "&cYou do not have permission use this command!"

  #Play particles or not when open
  ParticlesWhenOpened: true

  #Whether to allow bookshelves to work with hoppers
  EnableHopperSupport: false

  #Whether to allow bookshelves to work with droppers
  EnableDropperSupport: false

  #Whether to enable enchantment table boosting
  EnableEnchantmentTableBoosting: true
  #Max percentage of the enchantment table boosting feature
  #Accepts integer from 0 - 100
  EnchantmentTableBoostingMaxPercentage: 80


  #Enable update notifications for admins
  Updater: true

API
Bookshelf does provide an API for developers to customize or use its functions
- When hoppers or hopper minecarts exchange items with bookshelves
InventoryMoveItemEvent will fire, just listen to it just like any other bukkit events
- When a player opens or closes a bookshelf, PlayerOpenBookshelfEvent or PlayerCloseBookshelfEvent will fire. If a player does not have permission to access that bookshelf (includes protection from other plugins, it will fire as cancelled (After priority LOWEST)

https://github.com/LOOHP/Bookshelf/tree/master/src/com/loohp/bookshelf/API
More info through the link above

Here is a simple method that opens the inventory of a bookshelf for a player without the player to clicking the bookshelf:

Show Code Example
public void openBookshelForPlayer(Block bookshelfBlock, Player player) {
    //Get the location of the bookshelf Block
    Location location = bookshelfBlock.getLocation();
    //Check if the bookshelf is loaded through the API
    if (BookshelfAPI.isBookshelfLoaded(location)) {
        //Get the inventory of that bookshelf through the API
        Inventory inventory = BookshelfAPI.getBookshelfInventory(location);
        //Open the bookshelf
        player.openInventory(inventory);
    }
}

Limitations
- Bookshelves do not output a redstone signal via a redstone comparator, I will attempt to add that once I find a method that works :/
- Bookshelves transactions are not picked up by block loggers such as coreprotect, I will try to add that or create my own logging system in the future.

Notes:
I only guarantee that the plugin works perfectly and with full features in the latest version of spigot and paper
Mainly because I am a student and my time is limited, sadly you can't live with just doing what you like, writing plugins, life just doesn't work like what we all wanted :(
Older versions are just "supported", so they might be missing a few features or hooks, but generally should work just fine.
Nevertheless, do your own testing to be sure, just like any other plugin in this forum.

Report problems in the discussion, not in a review. Thanks :)

Similar projects

Plugin →