## 📦 [Bookshelf - 4.0.0](https://github.com/mcbookshelf/bookshelf/releases/tag/v4.0.0)
> **🧹 The Tiny Sweep Update!**
>
> *First release for Minecraft's new date-based versioning, dropping support for previous versions.*
>
> **⚠️ BREAKING CHANGES**: This version has breaking changes!
Bookshelf is now based on **Minecraft 26.1**.
### `🧱 bs.block`
- ⚠️ **[#509](https://github.com/mcbookshelf/bookshelf/issues/509)** - Removed multi-tick fill operations (`fill_block`, `fill_type`, `fill_random`). Use the new `bs.generation` module for async iteration with callbacks.
- ⚠️ **[#523](https://github.com/mcbookshelf/bookshelf/issues/523)** - Removed deprecated functions and tags from previous versions.
- ⚠️ **[#525](https://github.com/mcbookshelf/bookshelf/issues/525)** - Removed NBT concatenation from block output. State and NBT are now returned as separate fields.
- ⚡ **[#509](https://github.com/mcbookshelf/bookshelf/issues/509)** - Simplified `fill_block` to use the vanilla `fill` command (single-tick execution).
- ⚡ **[#509](https://github.com/mcbookshelf/bookshelf/issues/509)** - Simplified `fill_type` with a cleaner recursion model (single-tick execution).
### `🔬 bs.dump`
- 🐛 **[#524](https://github.com/mcbookshelf/bookshelf/issues/524)** - Updated `#bs.dump:var` for compatibility with Minecraft 26.1.
### `⛰️ bs.environment`
- 🐛 **[#527](https://github.com/mcbookshelf/bookshelf/issues/527)** - Fixed the different features of the module for Minecraft 26.1.
Please, note that between previous Minecraft version and this one, the number of elapsed days has been reset to 0.
### `🌱 bs.generation`
- ⚠️ **[#509](https://github.com/mcbookshelf/bookshelf/issues/509)** - Complete module rework. Replaced `gen_shape_2d`, `gen_fractal_shape_2d`, and `gen_simplex_shape_2d` with a generic iteration system.
- ✨ **[#509](https://github.com/mcbookshelf/bookshelf/issues/509)** - Added `on_cuboid` for 3D iteration over a cubic region with configurable direction, spacing, and tick limit.
- ✨ **[#509](https://github.com/mcbookshelf/bookshelf/issues/509)** - Added `on_rectangle` for 2D iteration over a rectangular region with configurable direction, spacing, and tick limit.
- ✨ **[#509](https://github.com/mcbookshelf/bookshelf/issues/509)** - Added predefined callbacks: `set_block`, `set_block_type`, `set_random_block`, `fractal_noise_2d`, and `simplex_noise_2d`.
- 🐛 **[#435](https://github.com/mcbookshelf/bookshelf/issues/435)** - Configurable iteration direction now allows accommodating mask offsets when blocks are updated during iteration.
### `🎯 bs.hitbox`
- ⚠️ **[#523](https://github.com/mcbookshelf/bookshelf/issues/523)** - Removed deprecated functions and tags from previous versions.
- ⚠️ **[#532](https://github.com/mcbookshelf/bookshelf/pull/532)** - Removed fluids from the `intangible` block tag to simplify the use of hitbox providers.
- ✨ **[#532](https://github.com/mcbookshelf/bookshelf/pull/532)** - Updated entity hitboxes for Minecraft 26.1.
### `🏃 bs.move`
- ⚠️ **[#523](https://github.com/mcbookshelf/bookshelf/issues/523)** - Removed deprecated arguments from previous versions.
### `🔦 bs.raycast`
- ⚠️ **[#531](https://github.com/mcbookshelf/bookshelf/pull/531)** - Removed deprecated `bs:out raycast` and `bs:lambda raycast` storage data.
- ⚠️ **[#531](https://github.com/mcbookshelf/bookshelf/pull/531)** - Renamed `on_hit_point` callback to `on_entry_point`. Added new `on_exit_point` callback.
- ⚠️ **[#531](https://github.com/mcbookshelf/bookshelf/pull/531)** - Renamed `$raycast.distance` to `$raycast.entry_distance`. Added `$raycast.exit_distance`.
- ⚠️ **[#531](https://github.com/mcbookshelf/bookshelf/pull/531)** - Replaced `$raycast.pierce_distance` (delta) with `$raycast.prev_entry_distance` and `$raycast.prev_exit_distance` (absolute values). Compute deltas manually for more flexibility (e.g., `entry - prev_entry`).
- ✨ **[#531](https://github.com/mcbookshelf/bookshelf/pull/531)** - Added `$raycast.entry_point.[x,y,z]` and `$raycast.exit_point.[x,y,z]` lambda scores for precise hit positions relative to the target.
- ✨ **[#531](https://github.com/mcbookshelf/bookshelf/pull/531)** - Added `$raycast.targeted_block.[x,y,z]` lambda scores for targeted block coordinates.
- 📝 **[#531](https://github.com/mcbookshelf/bookshelf/pull/531)** - Improved documentation with comprehensive "How to use" section including examples for callbacks, filtering, piercing, and hitbox providers.