Current Version:
3.8 (Release)

What is it for?

This plugin allows players to store books, maps, and more into those once useless bookshelves - just like chests! It encourages players to write books and store them in shelves, and can build onto your economy with libraries and bookstores by using the built in Vault support. Unlimited bookshelves make rule walls a thing of the past; store rule books inside an unlimited shelf, and every player can have one! Book Shelves are opened like a chest, by right clicking on the shelf. This opens a chest-like inventory that only allows the storage of books, maps, records, and paper. The items are stored in an SQLite database, so no setup is required to use this plugin! MySQL support is optional. These are just a few of the many features of BookShelf.

What are the Features?

  • Store books, maps, records (music discs), and paper in bookshelves!
  • Right click on shelves to open a familiar chest-like inventory!
  • Configurable top/bottom access. Disable it, and hide the shelves in your floor!
  • Create unlimited shelves that give out infinite copies! - Great for rule books, libraries, newspapers, city maps, and more!
  • Create shop shelves that work with any Economy! (Using Vault)
  • Combine unlimited and shop shelves to create a shop that has unlimited copies! - Great for server stores!
  • Create a donation shelf type that allows the owner to add/remove books, while other players can only add books! Good for library submissions!
  • You can only store books, maps, paper, and records.
  • Items maintain their position in the shelf; none of that "auto-sorting" business.
  • Runs on SQLite - No setup!
  • Can be configured to use MySQL instead of SQLite!!
  • Configurable shelf sizes! (Rows of 9, Max 6 rows)
  • Configurable default shelf names!
  • Each shelf can be individually named - Great for naming library sections!
  • Configure what types of books can be put into shelves!
  • When the shelf is broken, books drop like a chest - nothing is lost!
  • Reloading does not break the plugin!!
  • Support for LWC!
  • Support for Towny!
  • Support for WorldEdit!
  • Support for WorldGuard!
  • Simple Permissions!
  • Easy-to-remember Commands!
  • Signs can be placed on shelves!
  • Enable/disable certain shelves, all shelves with the same name, or Enable/Disable all shelves by default!
  • Multiple players can access the same shelf at the same time!
  • Disable selling books/paper to villagers!
  • Allow books/maps/paper/etc to only be stored in shelves! (No chests!)
  • Shelves have ownership!! Ops are owners of every shelf.


Check out other videos by bizburns01 (Luigi_Vampa)!

Usage and FAQ

Click here to learn about the Config, Permissions, Commands, Economy, and read the FAQ!

Parlez-vous français?

Cliquez ici! (Merci, nefald!)

Last notes

Thanks to Deathmarine for his awesomeness and code samples he let me learn off of!

Thanks to all the awesome people who made videos about BookShelf!

Thanks to lvk and softvelvet for the donations!

Source Code (BitBucket):

You must login to post a comment. Don't have an account? Register to get one!

  • Avatar of Mr_Simba Mr_Simba Jan 16, 2015 at 21:45 UTC - 0 likes

    Is there a way to set it so a player gets paid when their books are bought from a shelf? Sort of like ChestShop, so when their books are bought they get money.

  • Avatar of luigi_vampa luigi_vampa Jan 13, 2015 at 22:54 UTC - 0 likes

    Hey. One thing I've just noticed about the plugin. When I put a book on the shelf that has custom data on it the data is gone when I take the book off again.

  • Avatar of jjm_223 jjm_223 Jan 11, 2015 at 23:02 UTC - 0 likes

    @MitchTalmadge: Go

    Thank you for taking a look!

  • Avatar of MitchTalmadge MitchTalmadge Jan 11, 2015 at 16:41 UTC - 0 likes

    @jjm_223: Go

    I have never used Courier, so I would not have known about this issue. I will install it and check out why it's not saving correctly. I am pretty sure it's a problem with my plugin, not Courier. Thanks for the heads up! :)

    Author of BookShelf - Store books, maps, and more into those once useless bookshelves - just like chests!

  • Avatar of jjm_223 jjm_223 Jan 11, 2015 at 15:35 UTC - 0 likes

    On our server, we have a plugin called the Courier plugin. It sends messages in the form of maps. For some reason, these maps do not save when placed in a bookshelf. However, they save in every other container.

    Not sure if this is an issue with this plugin, the Courier plugin, or if it is even an issue in your mind at all.

  • Avatar of MitchTalmadge MitchTalmadge Jan 10, 2015 at 00:30 UTC - 0 likes

    @chozo4: Go

    This is a really cool idea I hadn't thought of! Thanks! I'll see if it's possible to add this in, I think it is!

    Thanks for the heads up about the overview page, lol, oops.

  • Avatar of chozo4 chozo4 Jan 06, 2015 at 11:19 UTC - 0 likes

    There is only one thing that bugs me on occasion that would be nice to implement. Is it possible to make it so books from certain bookshelves cannot be traded to villagers? This way we wont have to put a cost on the book to offset the likely hood of players getting them from unlimited shelves @ the community library and using them for emerald-fodder.  Unless I'm totally off my crock - the current implementation with bookshelves prevents trading of all books in existence on the server to villagers. By implementing a hash-based check one could allow book trading and only deny books intended for unlimited distribution on a per release basis.

    To toggle books as un/tradeable with /bs trade [command example]:
    1) Add an option to mark specific bookshelves as 'anti-trade' so all books taken from it cannot be traded to villagers
    2) Hold the book in hand and type the command to set a book to being untradeable before putting them into the shelves for distribution.

    By doing this it would handle making books untradeable in one of the following ways.
    1) Add a flag into the metadata of the book so it gets distributed as untradeable in this way for any future books. Will not affect existing matching copies in the world however and will leave such books as untradeable prior to them being marked tradeable again.
    2) Create a hash from the books combined title,author, and contents to mark ALL copies and future copies as untradeable until marked tradeable again. Add this hash into a database and check the hash every time a written book is attempted to be traded with a villager. If the hash is in the database simply reject the trade and present a customizable message to the user stating as such.

    A further idea would be to combine the two so if the book is marked as not being tradeable also add the or some other ID (also in database) to the metadata. This way a hash would not have to be built again for verification unless the the book is missing said flag either due to a plugin, some other source, or it being an already existing copy beforehand. Simply update the metadata accordingly as needed to avoid rehashing and only check it during book trades.

    edit: Also to note, the overview you forgot to update the latest version notation to 3.8 as it still shows 3.7.

    Last edited Jan 07, 2015 by chozo4
  • Avatar of MitchTalmadge MitchTalmadge Jan 01, 2015 at 03:37 UTC - 0 likes

    @chozo4: Go

    Thank you so much for the feedback! It's very helpful!

  • Avatar of chozo4 chozo4 Jan 01, 2015 at 02:56 UTC - 0 likes

    All is well on our end. Plugin seems to be working fine thus far. Will update if any issues arise.

  • Avatar of MitchTalmadge MitchTalmadge Dec 31, 2014 at 21:50 UTC - 0 likes

    @SXRWahrheit: Go

    Very good to hear! Thank you!


Date created
Aug 07, 2012
Last update
Dec 31, 2014
Development stage
GNU General Public License version 2 (GPLv2)
Curse link
Recent files