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 AncientTom AncientTom Mar 04, 2015 at 00:05 UTC - 0 likes

    As an administrator of a server that hosts multiple Minecraft games, I'd like to suggest that when BookShelf initializes it's tables in the mySQL server, rather than using such generic names that could be stepped on by other plugins using the same database, that BookShelf prepend the table names to make them non-generic. Examples: bs_donate, bs_enable, bs_items, etc. Some plugins even give a setting like prefix: "bs_" in their batabase setup in their config.yml. This allows the game admin to set the desired prefix.

    For those who have there games on a hosting service, it might be hard or impossible for them to get multiple databases assigned to them.

    Last edited Mar 04, 2015 by AncientTom
  • Avatar of AncientTom AncientTom Mar 03, 2015 at 21:45 UTC - 0 likes

    What BookShelf commands can be run from the console?
    Is it possible to use commands from the console on a shelf using it's title?
    Example: /bsdonate <bookshelf_name>?
    I need to be able to set a bookshelf to donate once the player removes a book to keep him from removing another copy until he returns the copy he has to the shelf.

    After studying BookShelf's use of the mySQL database, I now realize that I can do all this through the database.

    Last edited Mar 04, 2015 by AncientTom
  • Avatar of DrkMatr1984 DrkMatr1984 Feb 27, 2015 at 06:18 UTC - 0 likes

    @datarat001: Go

    I am getting this error also. However, that's not the whole error homey.

    Caused by: java.lang.NullPointerException
    	at org.bukkit.craftbukkit.v1_8_R1.inventory.CraftMetaEnchantedBook.addStoredEnchant( ~[spigot-1.8.jar:git-Spigot-b73910a-726656b]
    	at me.MitchT.BookShelf.Shelves.ItemGenerator.generateEnchantedBook( ~[?:?]
    	at me.MitchT.BookShelf.Shelves.BookShelf.getInventory( ~[?:?]
    	at me.MitchT.BookShelf.Shelves.BookShelf.getInventory( ~[?:?]
    	at me.MitchT.BookShelf.BookListener.onClick( ~[?:?]
    	at sun.reflect.GeneratedMethodAccessor344.invoke(Unknown Source) ~[?:?]
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke( ~[?:1.8.0_31]
    	at java.lang.reflect.Method.invoke( ~[?:1.8.0_31]
    	at$1.execute( ~[spigot-1.8.jar:git-Spigot-b73910a-726656b]
    	... 16 more

    It seems to be caused by Enchanted Books in specifically.

    Come Check out my Server!

  • Avatar of lululombard lululombard Feb 17, 2015 at 15:12 UTC - 0 likes

    Duplication bug : if two players open the same bookshelf, both can take one item and duplicate.

  • Avatar of datarat001 datarat001 Feb 12, 2015 at 18:06 UTC - 0 likes

    I am having an issue with bookshelfs where the player has put a blue texted silk touch book into the book shelf he cannot remove the book because for some reson that specific bookshelf is inaccessible to him but all others are i am at a loss any help i appreciated thank you ! when we click on the bookshelf we get this

    Last edited Feb 12, 2015 by datarat001
  • 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.

    No nudity, even really good nudity!

  • 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.


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