We are moving out of Modrinth!
We love Modrinth, but it just does not do what we want it to do. So we made our own version of Modrinth!
You can view the full changelogs at: https://lode.gg/plugin/bookshelf/versions/v2.0.24
We are moving out of Modrinth!
We love Modrinth, but it just does not do what we want it to do. So we made our own version of Modrinth!
You can view the full changelogs at: https://lode.gg/plugin/bookshelf/versions/v2.0.23
We are moving out of Modrinth!
We love Modrinth, but it just does not do what we want it to do. So we made our own version of Modrinth!
You can view the full changelogs at: https://lode.gg/plugin/bookshelf/versions/v2.0.21
Bookshelf - v2.0.1
PLUGIN CHANGES
- Fixed a bug that never executed MongoDB operations async.
- This caused the server thread to hang until that operation was completed. Basically making the server unusable.
Bookshelf - v2.0.1
INTERNAL CHANGES
- Update to support Minecraft version:
1.21.8 - Update Bookshelf CommandAPI to
v1.0.1
API CHANGES
- Added support to cancel
PlayerMessageEvent.
PLUGIN CHANGES
- Fixed a bug that miscoded infraction events through redis.
Bookshelf - v2.0.0
INTERNAL UPDATES
- We now support Minecraft's Version:
1.21.6,1.21.7, and1.21.8! - Updated Bookshelf API to
v1.1.62
API UPDATES
- Updated
MojangProfileto includegetMojangProfileFromUUIDso developers can easily convert UUID into username. - Added
PlaceholderAPICompatthat has utility methods that are related to PlaceholderAPI. If PlaceholderAPI is not present, it tends toreturn falseorreturn null. - Updated
getTimeDurationto return "00:00" instead of "00:-01" iftotalSecondsis less than 0. - Updated
getTimeStringto support years, months, and days. - Added
parseShortTimeStringToMillisto convert string inputs like1yor1h30minto millseconds.
EVENT API UPDATES
- Added
BookshelfReloadEventfor developers to listen to whenever/bookshelf reloadgets ran.
COMMANDAPI UPDATES
- Separated our CommandAPI dependency into a different module for developers to use. It will hold any custom CommandAPI arguments we use in our plugins for you to use!
- Added
FlagArgumentto create flags like-for-s. - Added
CommandFlagArgumentthat derives off theCommandArgumentbut with Flags since it's harder to create a clean approach for autocomplete.
Great! Now that we got the developer's changelog out of the way, let's go over the 150+ commits I've done to create Bookshelf v2.0.0!
PLUGIN CHANGES
/warpnow defaults to the player's world if the warp world was not found.- This usually tend when a world gets deleted or if you ported over an EssentialsX warp.
- Separated all manager configurations into their own file.
- Warp folder is now located in
/managers/warps - Chat Manager is now located in
/managers/chat.yml - Scoreboard Manager is now located in
/managers/scoreboard.yml - Infraction Manager is now located in
/managers/infractions.yml
- Warp folder is now located in
- Bookshelf config version was reset back to
1. - Bookshelf's
config.ymlvariables have been renamed for better understanding. - Added detailed documentation for every configurable file in Bookshelf!
- Fixed a bug in
config.ymlthat created a'null'category in thecommandskey. - Made
/bookshelf versiona public command. - Updated chat bypass permission to
lodestone.bookshelf.chat_bypass. - Removed internally duplicated classes,
PrivacyCommandandUnblockCommand. - Fixed
/nightvisionnot being in the Utility category. - Fixed
/hatrequiring a player's name. - Fixed
/day,/midnight, and/nighthard coding the time values to their fixed point. (Starting at Day 0).- Instead, these commands will orient the time based off of the elapsed world time.
- Made
/socialspya toggleable command. - Fixed a bug in
/resetattributesthat gave players+1more attribute damage. (Paper bug) - Fixed a bug that allowed
/extinguishto be overrided by FastAsyncWorldEdit. - Fixed a bug with
/vanishthat allowed players who couldn't see other players to message them.
PLUGIN ADDITIONS
- Added
/time getto get the current world time. - Added
/time scroll [timezone] [<speed>]to simulate a live time scroll. - Added
/godmode listand/godmode clearcommands.- The god mode attribute is no longer stored in the player's
playerdata. Instead it is stored in thedata/players.ymlfile.
- The god mode attribute is no longer stored in the player's
- Added
/bundle [container] [<flags>]to bundle your entire inventory into a desired container. - Added
/bookshelf install [plugin]to quickly install QOL plugins that are essential for any server!- More plugins will be supported soon, they will be installed through Modrinth!
- Added
/reachto change both entity and block reach at the same time. - Added
lodestone.bookshelf.vanish.bypassso that players with that permission can use social commands even if the player is vanished.
NETWORKING SUPPORT
Bookshelf now supports cross-server communication! Meaning if you have Bookshelf under a proxy, you're able to connect Bookshelf throughout all of your servers!
By using MongoDB and Redis (for larger servers), or just Redis (for smaller servers). You're able to synchronize all player data across all of your servers!
With these changes, you are able to:
- Run commands like
/msg,/tell, or/replyacross different servers. - Persist valuable staff settings like
/vanishor/godmodeacross different servers.
As well as our new moderation commands!
We've decided to bring a piece of LiteBans into Bookshelf! Meaning that you are able to use commands like: /ban, /mute, /kick, /warn, /banip, /unmute, /unbanip, and /history to punish players with a stored background history!
With Bookshelf's Moderation feature, you're able to fully customize how you want your staff team to moderate. From creating templates, default durations, or even enforcing reasoning when issuing an infraction!
You can also prevent players from bypassing their punishment with our alt account checker!
More updates to our moderation module will come soon, things like Infraction Templates that your team can use when issuing common punishments. Thank you all for using Lodestone! We hope to bring more in the future!
ATTENTION ALL SERVER OWNERS! THIS UPDATE REQUIRES A FULL RESTART TO ALL OF YOUR CONFIGURATION FILES, PLEASE DELETE THE /plugins/Bookshelf FOLDER TO CONTINUE UPDATING!
Bookshelf Changelogs - v1.1.41
INTERNAL UPDATES
- Updated Bookshelf API to
v1.1.61 - Updated Bookshelf Events to
v1.0.1
EVENT UPDATES
PlayerChatEventnow defaults tonullwhen setting viewers. Ifviewersis null, everyone will see the message.
API UPDATES
- Add Scoreboard Manager to Bookshelf API
- By default, it can be built in to your plugin with Bookshelf's api initializer.
- Added
#rebuildtoMenu - Changed
Consumer<Void>toRunnablein Bookshelf's menu builder.
PLUGIN UPDATES
- Updated
config.ymlversion to 5 - Added
Scoreboard Managerto Bookshelf.- By default, it will be disabled upon installation.
- Added priorities to all Bookshelf listeners. Giving developers the ability to use Bookshelf events properly.
Bookshelf Changelogs for v1.1.4
INTERNAL UPDATES
- Updated to
Bookshelf API v1.1.6
API CHANGES
- Renamed all util classes with a suffix of
UtiltoHelper. - Fixed
MiniMessageHelper#serializenot stripping colors. - Added
AbstractBoard,IBoardManagerandAbstractBoardManagerto allow developers to easily integrate scoreboards with ease.- Still a WIP, no documentation on this just yet.
PLUGIN UPDATES
- Power Tool Changes
- Power tooled items now defaults as the player being the command sender.
- Power Tool now has auto completion, allowing you to access subcommands and arguments from all available commands.
- Power Tool now has auto flag completition, allowing you to add flags to your commands for quick automation.
-d [ticks]- Delays the command being executed in ticks.-c- Executes the command as console.-t [target]- Executes the command as a player.- Example usage:
-cd 100 -t Apollo30- This basically means: "Execute the command as console in 5 seconds as Apollo30"
- Removed delay in seconds from power tools, default is now ticks.
- Fixed
/maxdurabilitynot properly working because of a type casting error withint.classandInteger.class. - Added a new command named
/health. This command sets the player's health to any amount. - Starting with
v1.1.4of Bookshelf,config.ymlwill now automatically update to the latest version.
BUG FIXES
- Fixed
/killallbeing unreliable.- Added two new flags,
-fand-r.-f- Means force kill any entity. If the entity is persistent (nametags, pets, etc). They won't be killed.-r- Means remove that entity. By default, entities will be/killed. Removing the entity doesn't have a sound nor will have any drops from that entity.
- Added another argument named "world".
- If no world is specified, it will by default be set to the world the player's in. Since
/killallis per world, we've added it in case you want to run the command in another world.
- If no world is specified, it will by default be set to the world the player's in. Since
- Added two new flags,
- All commands with a flag now has a
FlagArgument. Meaning that Bookshelf will now autocomplete available flags that you can use for that command.- There are two ways to run a flag on a command:
-stor-s -t
- There are two ways to run a flag on a command:
- Fixed
/hatneeding a target player for it to equip.
Bookshelf Changelogs for v1.1.32
INTERNAL UPDATES
- Updated to
Bookshelf API v1.1.52
API CHANGES
- Moved all events from Bookshelf to a new repository and plugin. Available at Jitpack and GitHub.
- This change allows developers to separate the usage of shading Bookshelf's API and using Bookshelf's events.
- Fixed a bug that minimized the plugin's jar. Causing unused classes to never make the production jar.
- Added callbacks to the
ICooldownManagerthat runs/completes once the cooldown is up.- If an existing cooldown is set, it will replace it.
MiniMessage#deserializenow accepts an object which will automatically convert that object to a string.- Fixed nested variables not working with
VariableContext. - Removed
IAPIChatManagersupport. It's now exclusive to the Bookshelf plugin.
BUG FIXES
- Fixed a bug that registered the
/maxdurabilitycommand for1.20.x. - Fixed a massive bug that causes immense lag for servers that has high player counts.
- Fixed a bug that broke the
/maxdurabilitycommand because of theint.classandInteger.classcasting error.
Bookshelf Changelogs for v1.1.31
INTERNAL UPDATES
- Updated to
Bookshelf API v1.1.51
API CHANGES
- Added
PlayerEquipArmorEventfor developers to listen to whenever a player equips an armor in any way.
PLUGIN UPDATES
- Fixed reflection accessibility bug with
/maxdurability. - Fixed
/maxdurabilitybeing registered for versions lower than 1.21.x - Fixed a bug that stresses the server out by calling every player's
PersistentDataContainer. Causes immense lag for over 150+ players. - Fixed
/durabilitynot properly registering. - Moved config check for chat manager so you're able to reload bookshelf and disable chat manager on the fly.
- Fixed a bug that threw an error when cancelling a null sound.
Bookshelf Changelogs for v1.1.3
INTERNAL UPDATES
- Updated to
Bookshelf API v1.1.5
API UPDATES
- Most of Bookshelf's API can now be shaded into your own plugins, you are able to create a builder that can enable managers that was originally exclusive to the Bookshelf plugin.
- It's important to remember to relocate the api's path in case another plugin depends on the actual plugin.
Bookshelf Changelogs for v1.1.21
INTERNAL UPDATES
- Updated to
Bookshelf API v1.0.41.
API UPDATES
- Fixed a bug that prevented Bookshelf from accessing classes with reflection
- Added ItemBuilder#onBuildConsumer to support latest versions
- Deprecated Command.java, removed CommandAPI as dependency
- Refactored namespace from to.lodestone -> gg.lode
- Added EntityHelper courtesy of Robsutar.
- Removed Util suffix from ArgumentParser
- Added VariableContext class
- Allowing you to easily create placeholder based variables. Useful for configuration!
PLUGIN UPDATES
/vanishnow silently opens Chests and Barrels.- Added
/nightvisioncommand that can be made public for players to use. - Added
/maxdurabilitycommand that can be used to change the max durability of an item.- Only available on 1.21+!
BUG FIXES
- Fixed a bug that never loaded custom made worlds.
- Rendering
/world gototo only be useful for vanilla worlds.
- Rendering
- Added more options for the
/killallcommand. - Fixed a bug that prevented the player from killing players while on a different world.
- Fixed a bug that never heals the player despite using the
--healflag when setting their max health. - Updated
/clearpackso it completely removes all downloaded packs given from the server.- Originally, it used to just download an empty pack.
- Updated
/warpto default the warp world to the player's current world instead of throwing an error.- This is very useful especially when transferring warps made by EssentialsX
- Fixed a bug that never plays a player hurt sound when a player "dies" with god mode.
Bookshelf Changelogs for v1.1.2
DEPENDENCY UPDATES
- Shaded the following dependencies into Bookshelf, meaning you won't have to install these dependencies anymore.
INTERNAL UPDATES
- Updated to
Bookshelf API v1.0.4. - Updated to
CommandAPI v10.0.0.
API UPDATES
- Added
ItemBuilder#onBuildConsumerthat allows you to directly obtain the ItemStack before returned through#build.- Best use case for this is using new meta features from
1.21+since Bookshelf API is still native to1.20.
- Best use case for this is using new meta features from
- Downgraded Java Version to 17
PLUGIN UPDATES
- Added support for
1.21.5. - Added support for Folia as a loader.
Bookshelf Changelogs for v1.1.13
WHAT'S CHANGED?
API CHANGES
- Fixed
PlayerManager#hasGodModeusing the wrong namespace key.
GENERAL CHANGES
- All attribute commands now have an optional parameter, if no target is specified, it will automatically use you as the target.
Bookshelf Changelogs for v1.1.12
WHAT'S CHANGED?
API CHANGES
- Added two compatible classes:
LuckPermsCompat- Added for those who want to use LuckPerms as a soft dependency.AttributeCompat- Added for 1.21.1 compatibility to access attributes that aren't accessible in older versions.
INTERNAL BOOKSHELF UPDATES
- Updated Bookshelf API to
v1.1.23
PLUGIN UPDATES
- Added
/bookshelf versionfor further debugging. - Updated all 1.21.x commands with the new compat utilities.
- Fixed
ChatManagernot properly registering if LuckPerms is not installed.
Bookshelf Changelogs for v1.1.11
WHAT'S CHANGED?
API CHANGES
- Fixed
MiniMessageUtil#getCenteredMessagenot supporting different types of components.
INTERNAL UPDATES
- Updated Bookshelf API to
v1.1.23
PLUGIN UPDATES
- Added
/world goto,/world create, and/world deleteto Bookshelf. Fixed Bookshelf properly not supporting1.20.x.- Made
targetsoptional for/resetattributes
Bookshelf Changelogs for v1.1.1
WHAT'S CHANGED?
INTERNAL UPDATES
- Updated Bookshelf API to
v1.1.22
Bookshelf Changelogs for v1.1.0
WHAT'S CHANGED?
GENERAL UPDATES
- Migrated the primary version of Bookshelf to
1.21.1, please report any bugs you may find via github. - Update API version to
v1.21.1
ATTRIBUTE COMMANDS
- Added
/resetallattributesto reset all player attributes with ease. - Added the following attribute commands:
- Available for
1.20.x - 1.21.x:/knockbackresistanceand/maxhealth - Only available for
1.21.x:/blockreach,/entityreach, and/gravity.
- Available for
- Added
/durability randomto the/durabilitycommand.- This randomizes the durability of the item you're holding!
POWERTOOLS
- Implemented a very powerful system for item powertools
- Starting off, you can use
/powertool listto view active powertools on an item. - To add a powertool, you can use
/powertool add [command]with proper argument suggestions. - Introducing flags! By default, commands are ran directly as console.
- To run the command as the source (player), add
-p, --player, -s, or --sourceflag. - To run the command with target parameters, use
{target}as the placeholder, as well as the-t, or--targetflag at the end.- With this, you can look at a player, use the item on them and they will be replaced as the target.
- To run the command as the source (player), add
- Introduction of delays :clock10:
- With this system, you're able to delay the command from being ran with the
-dor--delaytag. - As an example:
/powertool add say Hello World --delay 20- Reminder that this runs after 20 ticks, not seconds. To use seconds, use
-sdor--s-delay.
- Reminder that this runs after 20 ticks, not seconds. To use seconds, use
- With this system, you're able to delay the command from being ran with the
- Starting off, you can use
FIXES
- Fixed a bug with
/durabilitythat threw an exception if the durability was too high.
API UPDATES
- Added
PlayerCraftCustomEventfor developers to listen to whenever a player uses/craft [item] - Added
ItemBuilder#trimMaterial&ItemBuilder#trimPatterntoItemBuilder - Added
StringUtil#formatto support a custom version ofString#format.- Example Usage:
StringUtil.format("{0} {1}", "Hello", "World")-> "Hello World" - Example Usage with Key, Values:
StringUtil.format("{foo} {bar}", Map.of("foo", "Hello", "bar", "World"))-> "Hello World"
- Example Usage:
Bookshelf Changelogs - v1.0.92
API Updates + Bug Fixes
BUG FIXES
- Fixed a bug with
/smitethat visually smites the command executor rather than the target.
API CHANGES
Menunow has#setItem(int col, int row, ItemStack itemStack, Consumer<InventoryClickEvent> consumer)and#setItem(int slot, ItemStack itemStack, Consumer<InventoryClickEvent> consumer).- Added multiple variants of
#notifyPlayerWithCooldowninsideICooldownManager. - Added
#getCooldowntoICooldownManager.
Bookshelf Changelogs - v1.0.91
API Changes + Bug Fixes
BUG FIXES
- Fixed a bug that prevented the
/summoncommand from having nbt attached to it.
API CHANGES
Menunow implementsInventoryHolder




