📦 Bookshelf - 3.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 - Fixed missing
execute in minecraft:overworld
when running location-based loot tables.
🔬 bs.dump
- 🐛 #441 - Fixed
#bs.dump:var
incorrectly appendingundefined
to output.
⛰️ bs.environment
- ✨ #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 - 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 - 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 - 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 - Added
#bs.environment:get_moon_phase
to get the current moon phase as a string identifier following Minecraft's 8-day lunar cycle. - ✨ #14 - Added
#bs.environment:look_at_sun
to orient the executing entity to look at the sun. - ✨ #14 - Added
#bs.environment:look_at_moon
to orient the executing entity to look at the moon. - ✨ #475 - Added time-based predicates:
is_day_time
,is_night_time
,is_sunrise_time
,is_sunset_time
for determining current time of day. - ✨ #475 - Added villagers behavior predicates:
is_villager_working_time
,is_villager_socializing_time
,is_villager_sleeping_time
for detecting villager activity phases. - ✨ #475 - Added beds usage predicate:
is_bed_time
for determining when players can use beds based on weather and time conditions. - ✨ #475 - Added mobs behavior predicates:
is_undead_burning_time
,is_monster_spawning_time
for detecting mob behavior condition according to weather and time. - ✨ #475 - Added bees behavior predicate:
is_bee_sleeping_time
for detecting time when bees are in their nests/hives. - ✨ #475 - Added creakings spawning predicate:
is_creaking_spawn_time
for detecting time when creakings can spawn.
❤️ bs.health
- 🐛 #466 - Fixed a bug where healing on Paper servers always set players' health to maximum.
🎯 bs.hitbox
- ✨ #465 - Added support for custom hitboxes.
#bs.hitbox:get_entity
now also returnsdepth
in addition towidth
. For most dynamic entitiesdepth
equalswidth
, except for static entities (e.g. item frames, paintings) and custom hitboxes.
🖱️ bs.interaction
- 🐛 #463 - Fixed an issue where left/right click events could incorrectly target previously clicked entities instead of the current one.
🏃 bs.move
- ✨ #465 - Optimized bounding box computation for moving entities and added support for baked and custom hitboxes.
🧭 bs.position
- 🐛 #455 – Replaced
/rotate
with/tp
inbs.position
to fix jitter and momentum issues.
🎲 bs.random
- ✨ #286 - Added support for normal distribution generation to
bs.random
module. - 🐛 #469 - Fixed missing
execute in minecraft:overworld
when running location-based loot tables.
🔦 bs.raycast
- ✨ #465 - Added support for baked and custom entity hitboxes.
- ✨ #445 -
#bs.raycast:run
now computes all lambda data before invoking callbacks. - 🐛 #457 - Fixed raycasts not stopping at the nearest hit when detecting both blocks and entities.
🧣 bs.spline
- ✨ #417 - Added full support for linear splines.