Skip to content

Releases: mcbookshelf/bookshelf

Release v3.1.0 (Minecraft 1.21.6-1.21.8)

18 Jul 18:18
0cac411
Compare
Choose a tag to compare

📦 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 appending undefined 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_angleto 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 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 - 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 in bs.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.

Nightly v3.1.0 (Minecraft 1.21.6-1.21.8)

17 Jul 21:28
ae7bfa6
Compare
Choose a tag to compare

📦 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 appending undefined 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_angleto 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 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 - 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 in bs.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.

Release v3.0.2 (Minecraft 1.21.5)

04 May 19:27
ca2bc29
Compare
Choose a tag to compare

📦 Bookshelf - 3.0.2

🩹 A Quick Hotfix!

This is a hotfix for version 3.0.1.

  • 🐛#431 - Improve compatibility by using deflate instead of bzip2 for compression.

❤️ bs.health

  • 🐛 #428 - Ensure player health updates correctly when using percentage-based max health attributes.

🔬 bs.dump

  • 🐛 #432 - Fix dump failing on compounds with single-letter keys.

Release v3.0.1 (Minecraft 1.21.5)

02 May 15:17
bfe4eef
Compare
Choose a tag to compare

📦 Bookshelf - 3.0.1

🩹 Simple Hotfix!

This is a hotfix for version 3.0.0.

  • 📝 #314 - Add the Lifestring example, linking players' health using the bs.health module.

❤️ bs.health

  • 🐛 #410 - Ensure player health updates consistently.
  • 🐛 #426 – Players are now correctly killed when their health drops below 0, unless they are in Creative or Spectator mode.

🧣 bs.spline

  • 🐛 #423 - Fix module tag incorrectly set to default, now set to runtime to ensure the module is properly included in bundles.
  • 🐛 #412 - Fix Hermite spline tangents to use absolute space instead of relative.
  • #409 - Improve performance of sampling and streaming functions.

🔠 bs.string

  • 🐛 #423 - Fix module tag incorrectly set to default, now set to runtime to ensure the module is properly included in bundles.

👀 bs.view

  • 🐛 #424 - Fix #bs.view:at_block_placement that was incorrectly using hit normal data from the previous call instead of the current one.

Release v3.0.0 (Minecraft 1.21.5)

06 Apr 11:15
c082a7f
Compare
Choose a tag to compare

📦 Bookshelf - 3.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 - Merged the bs.biome and bs.weather modules into a single bs.environment module.
  • 📦 #323 - Introduced bundles to better group modules, replacing Bookshelf and Bookshelf Dev datapacks: Bookshelf Runtime, Bookshelf Dev, Bookshelf Prefabs, and Bookshelf Suite.
  • 🎉 #272 - Added an automatically generated bs.load module, removing the need for manual load and unload tags. Bookshelf now also uses LanternLoad.
  • #285 - Removed the need for __help__ functions and help tags. These are now generated.
  • 📝 #285 - Migrated the documentation to mcbookshelf.dev and reworked the contribution guide to explain the new Beet pipeline.
  • ⚙️ #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 - Bookshelf now has its own download manager, allowing users to select modules along with their dependencies and create custom bundles.
  • 📥 #336 - Bookshelf is now available on PyPI for use with the Beet toolchain.

🧱 bs.block

  • ⚠️ #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 - Introduced play_block_sound, a function for playing block sounds.
  • 🐛 #320 - Fixed functions that were previously unusable outside the Overworld.
  • #375 - Added default values to emit_block_particle and new parameters (mode, viewers).
  • #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 - Added the on_finished argument to fill operations. If specified, the provided command runs automatically when the operation completes.
  • #287 - Updated replace_type to return whether a type was found and replaced.

🧱 bs.environment

  • 🐛 #320 - Fixed functions that were previously unusable outside the Overworld.

🌱 bs.generation

  • ⚠️ #296 - Renamed the bs.generate module to bs.generation.
  • ⚠️ #282 - Renamed scores used in callbacks to use the new bs.lambda objective.
  • ⚠️ #296 - Renamed the bs.generate:fractal_shape_2d function to bs.generation:gen_fractal_shape_2d.
  • ⚠️ #296 - Renamed the bs.generate:shape_2d function to bs.generation:gen_shape_2d.
  • ⚠️ #296 - Renamed the bs.generate:simplex_shape_2d function to bs.generation:gen_simplex_shape_2d.

❤️ bs.health

  • ⚠️ #396 - Updated the get_max_health function to only return the base value, excluding all modifiers.
  • 🐛 #348 - Fixed an issue where running the heal command in a tick loop caused empty hearts to visually disappear.

🎯 bs.hitbox

  • ⚠️ #318 - Introduced collision_shape for block hitboxes and renamed shape to interaction_shape.
  • ⚠️ #318 - Removed is_in_block and is_entity_in_block(s) functions in favor of is_in_block_<collision|interaction> and is_entity_in_block(s)_<collision|interaction>.
  • ⚠️ #297 - Replaced the is_composite block tag with is_full_cube for better clarity.
  • #299 - Moved the #bs.hitbox:can_pass_through block tag from the move module and documented it.
  • #285 - Introduced the #bs.hitbox:is_sized tag for better hitbox management.
  • 🐛 #320 - Fixed functions that were previously unusable outside the Overworld.

🖱️ bs.interaction

  • #300 - Added bs.interaction.hovered tag to check if an interaction is currently hovered.

📄 bs.log

  • ⚠️ #369 - Migrated the bs.log module to use SNBT instead of JSON for log messages.

🏃 bs.move

  • ⚠️ #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 - Added optional hitbox_shape parameter to apply_vel functions, selecting between collision and interaction hitboxes.
  • #298 - Predicate bs.move:has_vel is now properly documented.
    hitbox_shape
  • 🐛 #316 - Fixed entities clipping into blocks during collision resolution.

🔦 bs.raycast

  • #358 - Added additional lambda values to callbacks.
  • #318 - Added the hitbox_shape argument to run, allowing selection between collision and interaction shapes.

⏲️ bs.schedule

  • ⚠️ #282 - Changed the schedule function signature for better consistency with others that use callbacks.

📰 bs.sidebar

  • #367 - Optimized the module for the 1.21.5 version of Minecraft.
  • 🐛 #301 - Fixed the issue where bs.sidebar:create was not functioning correctly.

🔠 bs.string

  • 🎉 #283 - Added a new bs.string module for managing strings.

🧣 bs.spline

  • 🎉 #241 - Added a new bs.spline module for working with splines.

⌚ bs.time

  • 🐛 #379 - Fixed get time for the 1.21.5 version of Minecraft.

👀 bs.view

  • #318 - Added the `h...
Read more

Release v2.2.2 (Minecraft 1.21.4-1.21.1)

23 Dec 15:41
29519f0
Compare
Choose a tag to compare

📦 Bookshelf - 2.2.2

🐛 Fixes

  • #293 Entity creaking_transient was removed from Minecraft 1.21.4, causing bs.hitbox to stop working for entities.

Release v2.2.1 (Minecraft 1.21.4-1.21.1)

21 Dec 16:34
af118d9
Compare
Choose a tag to compare

📦 Bookshelf - 2.2.1

Bookshelf is now based on Minecraft 1.21.4.

🐛 Fixes

  • #288 Fix bs.move collisions.
  • #290 Add missing blocks in bs.block registries.

Release v2.2.0 (Minecraft 1.21.3-1.21.1)

26 Nov 18:51
Compare
Choose a tag to compare

📦 Bookshelf - 2.2.0

🪐 The dimensional update!

This release features new modules for random distribution and terrain generation, refinements to existing modules, performance enhancements, and minor bug resolutions. Additionally, this update aims to ensure all functions work seamlessly across all dimensions.

Bookshelf is now based on Minecraft 1.21.3.

🎉 Added modules

  • #1 / #220 Added the bs.random module, which includes:
    • Random distributions: uniform, binomial, geometric, and Poisson.
    • Noise generation functions: white, simplex, and fractal.
    • Random selection of an element from a list.
  • #6 Added the bs.generate module for terrain generation. Currently supports 2D shape algorithms, enabling texture and heightmap-based terrain generation.
  • #193 Added the bs.interaction module, which proposes interactions to listen to different players' events: left click, right click, hover (enter, leave and continuous).

✨ Added features

  • #222 Added #bs.block:fill_random for filling regions with randomly selected blocks.
  • #258 Added #bs.block:emit_block_particle to emit block particles in specific locations.
  • #245 Added piercing and callback options to #bs.raycast:run.
  • #203 Added #bs.hitbox:is_entity_in_block and #bs.hitbox:is_entity_in_blocks to verify if an entity is within a block.
  • #233 Introduced new link management functions:
    • #bs.link:remove_link to remove specific links.
    • #bs.link:as_children, #bs.link:as_parent, #bs.link:at_children, and #bs.link:at_parent to handle parent-child link relationships.
  • #171 Added logging functions #bs.log:history and #bs.log:clear_history for viewing and clearing log history.

🔁 Tweaks

  • #251 Enhanced bs.block fill functions to accept from and to inputs as either [x, y, z] lists or as stringified coordinates (e.g., ~ ~5 25).
  • #247 Improved the default bs.log format for clarity.
  • #252 Optimized bs.hitbox module for improved performance.
  • #265 Optimized bs.schedule module for improved performance.
  • #265 Enabled bs.move module to function effectively at higher coordinate ranges. Collision detection has also been improved and should be more robust.
  • #265 Load tags do not load modules in isolation anymore. This can now be done using the exclusive_load tag.
  • #276 Add new hitboxes (new babies and salmon variants).

🐛 Fixes

  • #254 Resolved execution loop interruptions caused by #bs.schedule:schedule callbacks.
  • #243 Fixed unload functions for bs.health and bs.move.
  • #264 Resolved compatibility issues with the schedule module outside the overworld.
  • #255 Fixed bs.move local velocity collisions.
  • #262 Resolved collision issues with paintings for bs.raycast and bs.move.
  • #256 Fixed XP progress boundary issues at 0% and 100%.
  • #265 Corrected hitbox for player in spectator mode.
  • #270 Enabled all modules to function across any dimension.

Release v2.1.1 (Minecraft 1.21)

06 Aug 16:23
b1126dd
Compare
Choose a tag to compare

📦 Bookshelf - 2.1.1

🔁 Tweaks

  • (238) Load tags now load modules in isolation.
  • (237) Enhanced speed of bs.block module.
  • (218) Enhanced speed of factorial function in bs.math.

🐛 Fixes

  • (236) Fix bs.block, bs.id and bs.math load functions.
  • (235) Fix bs.block inputs that required extra escaping.

📄 Documentation

  • (215) There is now documentation about the documentation (kind of metadocumentation?).

Release v2.1.0 (Minecraft 1.21)

13 Jun 18:06
3efe83f
Compare
Choose a tag to compare

📦 Bookshelf - 2.1.0

Bookshelf is now based on Minecraft 1.21.

🎉 Addition

  • (187) Add #bs.block:map_type and #bs.block:mix_type functions.

🐛 Fixes

  • (211) Add missing help function tag in bs.link.
  • (211) Add missing help function tag in bs.vector.
  • (211) Add missing help function tag in bs.xp.

📄 Documentation

  • (206) Add new related datapacks and mods.
  • (208) Add missing documentation for feature bs.position:get_pos_and_rot.
  • (208) Add missing documentation for feature bs.position:set_pos_and_rot.
  • (208) Add missing documentation for feature bs.position:add_pos_and_rot.

📋 Conventions

  • (#200) We throw away the old feature function header to a new one with only the licence. This header is now mandatory for all functions. All the metadata that was present inside the old one have been moved to the feature function tag.
  • (#52, #175) Each module has now its own metadata that should be specified manually. The metadata of the features and modules are used to generate more metadata, including the dependencies. These metadata can be used by bots like the incomming Bookshelf Manager. More information here.

⚙️ Github and CI

  • Added a template for pull requests.
  • Added templates for issues.
  • (#199) The different metadata (the manually specified one and the generated one) are now automatically verified at each commit inside a pull request. This prevents them from being forgotten. More information here.