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.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
MojangProfile
to includegetMojangProfileFromUUID
so developers can easily convert UUID into username. - Added
PlaceholderAPICompat
that has utility methods that are related to PlaceholderAPI. If PlaceholderAPI is not present, it tends toreturn false
orreturn null
. - Updated
getTimeDuration
to return "00:00" instead of "00:-01" iftotalSeconds
is less than 0. - Updated
getTimeString
to support years, months, and days. - Added
parseShortTimeStringToMillis
to convert string inputs like1y
or1h30m
into millseconds.
EVENT API UPDATES
- Added
BookshelfReloadEvent
for developers to listen to whenever/bookshelf reload
gets 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
FlagArgument
to create flags like-f
or-s
. - Added
CommandFlagArgument
that derives off theCommandArgument
but 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
/warp
now 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.yml
variables have been renamed for better understanding. - Added detailed documentation for every configurable file in Bookshelf!
- Fixed a bug in
config.yml
that created a'null'
category in thecommands
key. - Made
/bookshelf version
a public command. - Updated chat bypass permission to
lodestone.bookshelf.chat_bypass
. - Removed internally duplicated classes,
PrivacyCommand
andUnblockCommand
. - Fixed
/nightvision
not being in the Utility category. - Fixed
/hat
requiring a player's name. - Fixed
/day
,/midnight
, and/night
hard 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
/socialspy
a toggleable command. - Fixed a bug in
/resetattributes
that gave players+1
more attribute damage. (Paper bug) - Fixed a bug that allowed
/extinguish
to be overrided by FastAsyncWorldEdit. - Fixed a bug with
/vanish
that allowed players who couldn't see other players to message them.
PLUGIN ADDITIONS
- Added
/time get
to get the current world time. - Added
/time scroll [timezone] [<speed>]
to simulate a live time scroll. - Added
/godmode list
and/godmode clear
commands.- The god mode attribute is no longer stored in the player's
playerdata
. Instead it is stored in thedata/players.yml
file.
- 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
/reach
to change both entity and block reach at the same time. - Added
lodestone.bookshelf.vanish.bypass
so 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/reply
across different servers. - Persist valuable staff settings like
/vanish
or/godmode
across 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
PlayerChatEvent
now defaults tonull
when setting viewers. Ifviewers
is 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
#rebuild
toMenu
- Changed
Consumer<Void>
toRunnable
in Bookshelf's menu builder.
PLUGIN UPDATES
- Updated
config.yml
version to 5 - Added
Scoreboard Manager
to 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
Util
toHelper
. - Fixed
MiniMessageHelper#serialize
not stripping colors. - Added
AbstractBoard
,IBoardManager
andAbstractBoardManager
to 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
/maxdurability
not properly working because of a type casting error withint.class
andInteger.class
. - Added a new command named
/health
. This command sets the player's health to any amount. - Starting with
v1.1.4
of Bookshelf,config.yml
will now automatically update to the latest version.
BUG FIXES
- Fixed
/killall
being unreliable.- Added two new flags,
-f
and-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
/killall
is 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:
-st
or-s -t
- There are two ways to run a flag on a command:
- Fixed
/hat
needing 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
ICooldownManager
that runs/completes once the cooldown is up.- If an existing cooldown is set, it will replace it.
MiniMessage#deserialize
now accepts an object which will automatically convert that object to a string.- Fixed nested variables not working with
VariableContext
. - Removed
IAPIChatManager
support. It's now exclusive to the Bookshelf plugin.
BUG FIXES
- Fixed a bug that registered the
/maxdurability
command for1.20.x
. - Fixed a massive bug that causes immense lag for servers that has high player counts.
- Fixed a bug that broke the
/maxdurability
command because of theint.class
andInteger.class
casting error.
Bookshelf Changelogs for v1.1.31
INTERNAL UPDATES
- Updated to
Bookshelf API v1.1.51
API CHANGES
- Added
PlayerEquipArmorEvent
for developers to listen to whenever a player equips an armor in any way.
PLUGIN UPDATES
- Fixed reflection accessibility bug with
/maxdurability
. - Fixed
/maxdurability
being 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
/durability
not 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
/vanish
now silently opens Chests and Barrels.- Added
/nightvision
command that can be made public for players to use. - Added
/maxdurability
command 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 goto
to only be useful for vanilla worlds.
- Rendering
- Added more options for the
/killall
command. - 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
--heal
flag when setting their max health. - Updated
/clearpack
so it completely removes all downloaded packs given from the server.- Originally, it used to just download an empty pack.
- Updated
/warp
to 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#onBuildConsumer
that 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.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 version
for further debugging. - Updated all 1.21.x commands with the new compat utilities.
- Fixed
ChatManager
not properly registering if LuckPerms is not installed.
Bookshelf Changelogs for v1.1.11
WHAT'S CHANGED?
API CHANGES
- Fixed
MiniMessageUtil#getCenteredMessage
not supporting different types of components.
INTERNAL UPDATES
- Updated Bookshelf API to
v1.1.23
PLUGIN UPDATES
- Added
/world goto
,/world create
, and/world delete
to Bookshelf. Fixed Bookshelf properly not supporting1.20.x
.- Made
targets
optional for/resetattributes
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
/resetallattributes
to reset all player attributes with ease. - Added the following attribute commands:
- Available for
1.20.x - 1.21.x
:/knockbackresistance
and/maxhealth
- Only available for
1.21.x
:/blockreach
,/entityreach
, and/gravity
.
- Available for
- Added
/durability random
to the/durability
command.- 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 list
to 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 --source
flag. - To run the command with target parameters, use
{target}
as the placeholder, as well as the-t
, or--target
flag 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
-d
or--delay
tag. - As an example:
/powertool add say Hello World --delay 20
- Reminder that this runs after 20 ticks, not seconds. To use seconds, use
-sd
or--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
/durability
that threw an exception if the durability was too high.
API UPDATES
- Added
PlayerCraftCustomEvent
for developers to listen to whenever a player uses/craft [item]
- Added
ItemBuilder#trimMaterial
&ItemBuilder#trimPattern
toItemBuilder
- Added
StringUtil#format
to 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
/smite
that visually smites the command executor rather than the target.
API CHANGES
Menu
now has#setItem(int col, int row, ItemStack itemStack, Consumer<InventoryClickEvent> consumer)
and#setItem(int slot, ItemStack itemStack, Consumer<InventoryClickEvent> consumer)
.- Added multiple variants of
#notifyPlayerWithCooldown
insideICooldownManager
. - Added
#getCooldown
toICooldownManager
.
Bookshelf Changelogs - v1.0.9
New Addition, Changes, and Fixes + Improved Chat Manager! 🎉
NEW ITEMS
- Added "Mob Deleter" stick, this allows you to delete any mob from the game if they are hit with it.
FIXES
- Bookshelf now waits for LuckPerms to load.
- Added chat cooldowns to Bookshelf's chat manager.
- Added anti-spam to Bookshelf's chat manager.
- Updated Bookshelf's profanity filter to a more up-to-date and strict checks.
- Removed join and quit messages while in vanish.
/tellraw
now supports JSON or Arrays containing JSON./smite
now visually strikes the proper targets/clone
now properly allowing you to clone your items or inventory to other players.
NEW COMMANDS
- Added a custom
/summon
command that works alongside the vanilla/summon
./summon [mob] [<amount>]
/summon [mob] at [target] [<amount>]
- Added
/reply
command to quickly message incoming messages!
COMMAND CHANGES
- Added fallback messages to console if it tries to use a player only command.
/sudo
,/night
,/midnight
,/day
,/godmode
now works through console, command blocks, players, etc...- Added
/top [player] -n
to teleport to the nearest to highest position. - Switched arguments for
/fly [boolean] [players]
->/fly [players] [boolean]
API CHANGES
MenuBuilder
now has an#update
method that allows you to rebuild the menu in case of any updates.- Refactored
IGameManager
toIServerManager
- Deprecated "premium servers" inside
PremiumManager
- Added more methods inside
Configuration
,