## 📦 [Bookshelf - 3.1.0](https://github.com/mcbookshelf/bookshelf/releases/tag/v3.1.0) > **💫 The Spatial Update!** > > *Introduces Moon and Sun position features, as well as fully customizable hitboxes that integrate across the entire Bookshelf ecosystem.* Bookshelf is now based on **Minecraft 1.21.8**. ### `🧱 bs.block` - 🐛 **[#469](https://github.com/mcbookshelf/bookshelf/issues/469)** - Fixed missing `execute in minecraft:overworld` when running location-based loot tables. ### `🔬 bs.dump` - 🐛 **[#441](https://github.com/mcbookshelf/bookshelf/issues/441)** - Fixed `#bs.dump:var` incorrectly appending `undefined` to output. ### `⛰️ bs.environment` - **[#14](https://github.com/mcbookshelf/bookshelf/issues/14)** - Added `#bs.environment:get_sun_angle` to get the sun's angle at a specific time on the Y axis relative to the horizon, in degrees. - **[#14](https://github.com/mcbookshelf/bookshelf/issues/14)** - Added `#bs.environment:get_moon_angle`to get the moon's angle at a specific time on the Y axis relative to the horizon, in degrees. - **[#14](https://github.com/mcbookshelf/bookshelf/issues/14)** - Added `#bs.environment:get_current_sun_angle` to get the current sun's angle on the Y axis relative to the horizon, in degrees. - **[#14](https://github.com/mcbookshelf/bookshelf/issues/14)** - Added `#bs.environment:get_current_moon_angle` to get the current moon's angle on the Y axis relative to the horizon, in degrees. - **[#14](https://github.com/mcbookshelf/bookshelf/issues/14)** - Added `#bs.environment:get_moon_phase` to get the current moon phase as a string identifier following Minecraft's 8-day lunar cycle. - **[#14](https://github.com/mcbookshelf/bookshelf/issues/14)** - Added `#bs.environment:look_at_sun` to orient the executing entity to look at the sun. - **[#14](https://github.com/mcbookshelf/bookshelf/issues/14)** - Added `#bs.environment:look_at_moon` to orient the executing entity to look at the moon. - **[#475](https://github.com/mcbookshelf/bookshelf/issues/475)** - Added time-based predicates: `is_day_time`, `is_night_time`, `is_sunrise_time`, `is_sunset_time` for determining current time of day. - **[#475](https://github.com/mcbookshelf/bookshelf/issues/475)** - Added villagers behavior predicates: `is_villager_working_time`, `is_villager_socializing_time`, `is_villager_sleeping_time` for detecting villager activity phases. - **[#475](https://github.com/mcbookshelf/bookshelf/issues/475)** - Added beds usage predicate: `is_bed_time` for determining when players can use beds based on weather and time conditions. - **[#475](https://github.com/mcbookshelf/bookshelf/issues/475)** - Added mobs behavior predicates: `is_undead_burning_time`, `is_monster_spawning_time` for detecting mob behavior condition according to weather and time. - **[#475](https://github.com/mcbookshelf/bookshelf/issues/475)** - Added bees behavior predicate: `is_bee_sleeping_time` for detecting time when bees are in their nests/hives. - **[#475](https://github.com/mcbookshelf/bookshelf/issues/475)** - Added creakings spawning predicate: `is_creaking_spawn_time` for detecting time when creakings can spawn. ### `❤️ bs.health` - 🐛 **[#466](https://github.com/mcbookshelf/bookshelf/issues/466)** - Fixed a bug where healing on Paper servers always set players' health to maximum. ### `🎯 bs.hitbox` - **[#465](https://github.com/mcbookshelf/bookshelf/pull/465)** - Added support for custom hitboxes. `#bs.hitbox:get_entity` now also returns `depth` in addition to `width`. For most dynamic entities `depth` equals `width`, except for static entities (e.g. item frames, paintings) and custom hitboxes. ### `🖱️ bs.interaction` - 🐛 **[#463](https://github.com/mcbookshelf/bookshelf/issues/463)** - Fixed an issue where left/right click events could incorrectly target previously clicked entities instead of the current one. ### `🏃 bs.move` - **[#465](https://github.com/mcbookshelf/bookshelf/pull/465)** - Optimized bounding box computation for moving entities and added support for baked and custom hitboxes. ### `🧭 bs.position` - 🐛 **[#455](https://github.com/mcbookshelf/bookshelf/issues/455)** – Replaced `/rotate` with `/tp` in `bs.position` to fix jitter and momentum issues. ### `🎲 bs.random` - **[#286](https://github.com/mcbookshelf/bookshelf/issues/286)** - Added support for **normal distribution** generation to `bs.random` module. - 🐛 **[#469](https://github.com/mcbookshelf/bookshelf/issues/469)** - Fixed missing `execute in minecraft:overworld` when running location-based loot tables. ### `🔦 bs.raycast` - **[#465](https://github.com/mcbookshelf/bookshelf/pull/465)** - Added support for baked and custom entity hitboxes. - **[#445](https://github.com/mcbookshelf/bookshelf/issues/445)** - `#bs.raycast:run` now computes all lambda data before invoking callbacks. - 🐛 **[#457](https://github.com/mcbookshelf/bookshelf/issues/457)** - Fixed raycasts not stopping at the nearest hit when detecting both blocks and entities. ### `🧣 bs.spline` - **[#417](https://github.com/mcbookshelf/bookshelf/issues/417)** - Added full support for **linear splines**.