nineMinecraft is a joke site.
nineMinecraft is in no way affiliated with Modrinth or 9minecraft. (And frankly, who wants to be affiliated with the latter?)
Filter loader...
Filter versions...
Filter channels...

Bookshelf - v2.0.3

The Big 1.21.11 Update!

NEW MODULE

  • Introducing Bookshelf-Velocity v1.0.0
    • Network-wide ban checking for Velocity proxy.
    • Infraction synchronization across servers.

API UPDATES

  • Added Command Tree Merging Utilities to Bookshelf-CommandAPI
    • CommandMerger: Fluent utility for merging vanilla commands with custom branches.
    • MergeableCommand: Drop-in CommandAPICommand replacement with .merge() method.
    // Merge custom branches with vanilla /give
    new MergeableCommand("give")
        .withArguments(new LiteralArgument("custom"))
        .executes(info -> info.sender().sendMessage("Custom branch"))
        .merge("myplugin");
    
  • Added MergeableToggleableCommand base class for commands that merge with vanilla instead of replacing.
  • Added resetPlayerAttributes method to Bookshelf-API.
  • Added PlayerMessageEvent for custom message handling.

INTERNAL UPDATES

  • Updated Bookshelf-CommandAPI to v1.0.33.
  • Updated API version to 1.21.
  • Added Brigadier dependency for merge functionality.
  • Plugin version now dynamically reads from plugin.yml instead of hardcoded value.
  • Added context variable for sender name support in messages.

PLUGIN UPDATES

  • Implemented Command Merging
    • /time now merges with vanilla, preserving all vanilla subcommands while adding custom ones:
      • /time freeze - Toggle daylight cycle on/off.
      • /time scroll <day|night|midnight> [speed] - Smoothly scroll time to target.
  • Introducing Chat Channels
    • Create and tune into different chat channels dedicated for players who inherit the permission.
    • Introduced chat prefixes so chat manager still works with LuckPerms.
  • Added /alts command to lookup multiple IPs for a player
  • Added /skull <player> command to get player heads
  • Added /workbench command for easy access to crafting tables without placing them
  • Added /teleportofflinehere to teleport offline players to your location.
  • Added /say alias for announcements.
  • Added /alts to give you a list of active players with alt accounts.
  • Added ability to vanish other players with /vanish <player>.
  • Added checks for existing infractions in /ban, /mute, /unban, and /unmute commands.
  • Updated /title command to support JSON strings alongside MiniMessage.
  • Updated /killall to support additional entity types.
  • Updated /velocity to affect multiple entity types.
  • Updated /vanish with boolean argument for direct vanish control.
  • Updated player interaction with new event handling.
  • Operators can now /back multiple players at once.

PLUGIN CHANGES

  • Removed /inventorysee in favor of InvSeePlusPlus plugin integration.
  • Removed /title @a full subcommand. Replaced with /title @a [title] [subtitle] ...

PLUGIN FIXES

  • Fixed a bug where PathFinderItem caused block de- Fixed /teleportoffline to actually work properly and support username lookup with async UUID resolution. cay/drops when selecting pathfinding destinations.
  • Fixed dependency resolution issues with Bookshelf-Events version mismatch.
  • Fixed /ping command to handle command sender and target player correctly.
  • Fixed messages being sent off the main thread.
  • Fixed death event not saving back location properly.
  • Fixed channels only showing those the player has permission for.

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, and 1.21.8!
  • Updated Bookshelf API to v1.1.62

API UPDATES

  • Updated MojangProfile to include getMojangProfileFromUUID 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 to return false or return null.
  • Updated getTimeDuration to return "00:00" instead of "00:-01" if totalSeconds is less than 0.
  • Updated getTimeString to support years, months, and days.
  • Added parseShortTimeStringToMillis to convert string inputs like 1y or 1h30m 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 the CommandArgument 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
  • 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 the commands key.
  • Made /bookshelf version a public command.
  • Updated chat bypass permission to lodestone.bookshelf.chat_bypass.
  • Removed internally duplicated classes, PrivacyCommand and UnblockCommand.
  • 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 the data/players.yml file.
  • 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 to null when setting viewers. If viewers 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 to Menu
  • Changed Consumer<Void> to Runnable 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 to Helper.
  • Fixed MiniMessageHelper#serialize not stripping colors.
  • Added AbstractBoard, IBoardManager and AbstractBoardManager 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 with int.class and Integer.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.
  • 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
  • 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 for 1.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 the int.class and Integer.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

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.
  • 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 to 1.20.
  • 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#hasGodMode using 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 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 supporting 1.20.x.
  • Made targets optional 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 /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.
  • 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.
    • 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.

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 to ItemBuilder
  • Added StringUtil#format to support a custom version of String#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"

External resources


Project members

Lodestone

Lodestone

Organization

johnaqu1no

Owner & Developer


Technical information

License
ARR
Project ID