## 📦 [Bookshelf - 3.0.0](https://github.com/mcbookshelf/bookshelf/releases/tag/v3.0.0) > **🚂 The Pipeline Update!** > > *This release overhauls the project structure with Beet, focusing on modularity and isolation of each module. It also introduces a new version loader that resolves conflicts between multiple versions.* > > **⚠️ BREAKING CHANGES**: This new version has a few breaking changes! Bookshelf is now based on **Minecraft 1.21.5**. Each module of Bookshelf is now shipped as a separate datapack for people wanting to use only a single module. Introduced bundles to better group modules, replacing **Bookshelf** and **Bookshelf Dev** datapacks: **Bookshelf Runtime**, **Bookshelf Dev**, **Bookshelf Prefabs**, and **Bookshelf Suite**. - ⚠️ **[#281](https://github.com/mcbookshelf/bookshelf/issues/281)** - Merged the `bs.biome` and `bs.weather` modules into a single `bs.environment` module. - 📦 **[#323](https://github.com/mcbookshelf/bookshelf/pull/323)** - Introduced bundles to better group modules, replacing **Bookshelf** and **Bookshelf Dev** datapacks: **Bookshelf Runtime**, **Bookshelf Dev**, **Bookshelf Prefabs**, and **Bookshelf Suite**. - 🎉 **[#272](https://github.com/mcbookshelf/bookshelf/issues/272)** - Added an automatically generated `bs.load` module, removing the need for manual `load` and `unload` tags. Bookshelf now also uses **LanternLoad**. - **[#285](https://github.com/mcbookshelf/bookshelf/pull/285)** - Removed the need for `__help__` functions and `help` tags. These are now generated. - 📝 **[#285](https://github.com/mcbookshelf/bookshelf/pull/285)** - Migrated the documentation to **mcbookshelf.dev** and reworked the contribution guide to explain the new **Beet** pipeline. - ⚙️ **[#285](https://github.com/mcbookshelf/bookshelf/pull/285)** - Created a GitHub organization and transitioned from the **Jupyter Notebook** to **Beet**. Updated the metadata format, added new issue templates, and introduced workflows for automatic deployment to **Modrinth** and **Smithed**. Modules now also require a `README.md` and a `pack.png`. - 📥 **[#333](https://github.com/mcbookshelf/bookshelf/issues/333)** - Bookshelf now has its own [download manager](https://mcbookshelf.dev), allowing users to select modules along with their dependencies and create custom bundles. - 📥 **[#336](https://github.com/mcbookshelf/bookshelf/issues/336)** - Bookshelf is now available on **PyPI** for use with the **Beet** toolchain. ### `🧱 bs.block` - ⚠️ **[#375](https://github.com/mcbookshelf/bookshelf/pull/375)** - Changed `get_block` and `get_type` to only return existing data. Empty strings for state or NBT are no longer possible; if absent, the field is omitted instead. - **[#279](https://github.com/mcbookshelf/bookshelf/issues/279)** - Introduced `play_block_sound`, a function for playing block sounds. - 🐛 **[#320](https://github.com/mcbookshelf/bookshelf/issues/320)** - Fixed functions that were previously unusable outside the Overworld. - **[#375](https://github.com/mcbookshelf/bookshelf/pull/375)** - Added default values to `emit_block_particle` and new parameters (`mode`, `viewers`). - **[#363](https://github.com/mcbookshelf/bookshelf/issues/363)** - Enhanced `fill_block`, `fill_type`, `fill_random`, `set_block`, and `set_type` to accept `strict` as a `mode` parameter, allowing control over whether the operation triggers block updates. - **[#349](https://github.com/mcbookshelf/bookshelf/issues/349)** - Added the `on_finished` argument to fill operations. If specified, the provided command runs automatically when the operation completes. - **[#287](https://github.com/mcbookshelf/bookshelf/issues/287)** - Updated `replace_type` to return whether a type was found and replaced. ### `⛰️ bs.environment` - 🐛 **[#320](https://github.com/mcbookshelf/bookshelf/issues/320)** - Fixed functions that were previously unusable outside the Overworld. ### `🌱 bs.generation` - ⚠️ **[#296](https://github.com/mcbookshelf/bookshelf/issues/296)** - Renamed the `bs.generate` module to `bs.generation`. - ⚠️ **[#282](https://github.com/mcbookshelf/bookshelf/issues/282)** - Renamed scores used in callbacks to use the new `bs.lambda` objective. - ⚠️ **[#296](https://github.com/mcbookshelf/bookshelf/issues/296)** - Renamed the `bs.generate:fractal_shape_2d` function to `bs.generation:gen_fractal_shape_2d`. - ⚠️ **[#296](https://github.com/mcbookshelf/bookshelf/issues/296)** - Renamed the `bs.generate:shape_2d` function to `bs.generation:gen_shape_2d`. - ⚠️ **[#296](https://github.com/mcbookshelf/bookshelf/issues/296)** - Renamed the `bs.generate:simplex_shape_2d` function to `bs.generation:gen_simplex_shape_2d`. ### `❤️ bs.health` - ⚠️ **[#396](https://github.com/mcbookshelf/bookshelf/issues/396)** - Updated the `get_max_health` function to only return the base value, excluding all modifiers. - 🐛 **[#348](https://github.com/mcbookshelf/bookshelf/pull/348)** - Fixed an issue where running the heal command in a tick loop caused empty hearts to visually disappear. ### `🎯 bs.hitbox` - ⚠️ **[#318](https://github.com/mcbookshelf/bookshelf/issues/318)** - Introduced `collision_shape` for block hitboxes and renamed `shape` to `interaction_shape`. - ⚠️ **[#318](https://github.com/mcbookshelf/bookshelf/issues/318)** - Removed `is_in_block` and `is_entity_in_block(s)` functions in favor of `is_in_block_` and `is_entity_in_block(s)_`. - ⚠️ **[#297](https://github.com/mcbookshelf/bookshelf/issues/297)** - Replaced the `is_composite` block tag with `is_full_cube` for better clarity. - **[#299](https://github.com/mcbookshelf/bookshelf/pull/299)** - Moved the `#bs.hitbox:can_pass_through` block tag from the move module and documented it. - **[#285](https://github.com/mcbookshelf/bookshelf/pull/285)** - Introduced the `#bs.hitbox:is_sized` tag for better hitbox management. - 🐛 **[#320](https://github.com/mcbookshelf/bookshelf/issues/320)** - Fixed functions that were previously unusable outside the Overworld. ### `🖱️ bs.interaction` - **[#300](https://github.com/mcbookshelf/bookshelf/issues/300)** - Added `bs.interaction.hovered` tag to check if an interaction is currently hovered. ### `📄 bs.log` - ⚠️ **[#369](https://github.com/mcbookshelf/bookshelf/issues/369)** - Migrated the `bs.log` module to use SNBT instead of JSON for log messages. ### `🏃 bs.move` - ⚠️ **[#282](https://github.com/mcbookshelf/bookshelf/issues/282)** - Updated `on_collison` callback: scores now use the `bs.lambda` objective, and the input requires a full command instead of a function path. Additionally, `on_collision/*` functions have been renamed to `callback/*`. - **[#318](https://github.com/mcbookshelf/bookshelf/issues/318)** - Added optional `hitbox_shape` parameter to `apply_vel` functions, selecting between `collision` and `interaction` hitboxes. - **[#298](https://github.com/mcbookshelf/bookshelf/issues/298)** - Predicate `bs.move:has_vel` is now properly documented. hitbox_shape - 🐛 **[#316](https://github.com/mcbookshelf/bookshelf/issues/316)** - Fixed entities clipping into blocks during collision resolution. ### `🔦 bs.raycast` - **[#358](https://github.com/mcbookshelf/bookshelf/issues/358)** - Added additional lambda values to callbacks. - **[#318](https://github.com/mcbookshelf/bookshelf/issues/318)** - Added the `hitbox_shape` argument to `run`, allowing selection between `collision` and `interaction` shapes. ### `⏲️ bs.schedule` - ⚠️ **[#282](https://github.com/mcbookshelf/bookshelf/issues/282)** - Changed the `schedule` function signature for better consistency with others that use callbacks. ### `📰 bs.sidebar` - **[#367](https://github.com/mcbookshelf/bookshelf/issues/367)** - Optimized the module for the 1.21.5 version of Minecraft. - 🐛 **[#301](https://github.com/mcbookshelf/bookshelf/pull/301)** - Fixed the issue where `bs.sidebar:create` was not functioning correctly. ### `🔠 bs.string` - 🎉 **[#283](https://github.com/mcbookshelf/bookshelf/pull/283)** - Added a new `bs.string` module for managing strings. ### `🧣 bs.spline` - 🎉 **[#241](https://github.com/mcbookshelf/bookshelf/issues/241)** - Added a new `bs.spline` module for working with splines. ### `⌚ bs.time` - 🐛 **[#379](https://github.com/mcbookshelf/bookshelf/issues/379)** - Fixed get time for the 1.21.5 version of Minecraft. ### `👀 bs.view` - **[#318](https://github.com/mcbookshelf/bookshelf/issues/318)** - Added the `hitbox_shape` argument to raycast related functions, allowing selection between `collision` and `interaction` shapes. - **[#299](https://github.com/mcbookshelf/bookshelf/pull/299)** - Block tag `can_see_through` is now properly documented. - 🐛 **[#319](https://github.com/mcbookshelf/bookshelf/issues/319)** - Fixed `can_see_ata` max distance computation.