Skip to content

Release 1.21.0

Latest

Choose a tag to compare

@tastybento tastybento released this 27 Jun 23:44
915da50

Release Highlights

  • πŸ”Ί Vanilla cave world generation β€” The overworld now delegates to Minecraft's own 1.18+ noise generator, so islands are carved through genuine cheese, spaghetti, lush, dripstone and deep-dark caves, complete with vanilla ores, decorations, structures and underground biomes. The sky is capped with stone so the world stays solid rock from bedrock to the roof.
  • πŸ’Ž Reworked nether & end ore veins β€” Nether and End keep the fill-and-decorate approach with a new vein populator that places properly sized ore blobs (ancient debris, quartz, obsidian, glowstone and more).
  • πŸ”Ί Paper 1.21.11 & Java 21 β€” CaveBlock now builds against the Paper API on Java 21 and targets the BentoBox 3.14 API.
  • πŸ”‘ MiniMessage locales β€” All locale files have been converted from legacy colour codes to the MiniMessage format.
  • βš™οΈ Config cleanup β€” World generation settings were reworked and dead options removed.
  • πŸ§ͺ Full test suite β€” A JUnit 5 + MockBukkit test suite was added to guard generation, height limits and addon lifecycle.

Compatibility

βœ”οΈ BentoBox API 3.14+
βœ”οΈ Paper Minecraft 1.21.5 – 26.2
βœ”οΈ Java 21

Upgrading

  1. As always, take backups just in case. (Make a copy of everything!)
  2. Stop the server.
  3. Replace the CaveBlock jar with this one.
  4. Make sure your server runs Paper Minecraft 1.21.5–26.2 on Java 21 and BentoBox 3.14 or newer.
  5. Review your config.yml β€” regenerate it or merge the new world-generation options (see callout below).
  6. Restart the server.
  7. You should be good to go!

πŸ”Ί World generation changed: Newly generated overworld chunks now use vanilla noise caves instead of solid-fill carving. Already-generated chunks are untouched, but new terrain at the edges of your world will look different from older areas. Test on a copy first if this matters to you.

βš™οΈ Config note: The dead netherBlocks, endBlocks and debug settings were removed and world-generation options were reworked. Back up your existing config.yml before letting the addon write the new defaults.

πŸ”‘ Locale note: Locale files were migrated to MiniMessage and a height-limit message key was renamed to caveblock.general.errors.cave-limit-reached. Regenerate your locale files if you have customised them.

Legend

  • πŸ”‘ locale files may need to be regenerated or updated.
  • βš™οΈ config options have been removed, renamed, or added.
  • πŸ”Ί special attention needed.

New Features

πŸ”Ί Vanilla cave world generation

[PR #105]

The overworld generator was rewritten to delegate entirely to vanilla 1.18+ noise generation. This brings the full modern cave system β€” cheese caves, spaghetti caves, lush caves, dripstone caves, the deep dark and aquifer water pockets β€” along with vanilla ore distribution, cave decorations (dripstone, moss, glow berries, sculk) and structures such as mineshafts, dungeons, trial chambers, amethyst geodes and ancient cities. After vanilla terrain is generated, every column is capped with stone so there is no open sky, keeping CaveBlock's signature "solid rock" feel while the caves themselves are authentic. Underground biomes are placed naturally by the vanilla biome engine.

πŸ’Ž Reworked nether and end ore generation

[PR #105] [PR #106]

The Nether and End continue to use a fill-and-decorate approach, now driven by a new NewMaterialPopulator and per-environment generators. Ore veins are placed with configurable sizes so resources such as ancient debris, nether quartz, obsidian and glowstone appear as proper veins rather than single blocks.

πŸ§ͺ JUnit 5 test suite

[PR #105]

A complete JUnit 5 + MockBukkit test suite was added covering the chunk generator, the custom height-limit listener, world creation and the addon lifecycle, raising confidence for future changes.


Bug Fixes

Height limit checked the wrong world

[PR #101]

The custom height-limit listener compared against the player's current (from) world instead of the destination (to) world, which could misjudge cross-world movement. It now checks the destination world.

Nether/End ores generated as specks

[PR #106]

The ore populator ignored each ore's configured blob size, so every Nether and End ore generated as a 1–4 block speck. Veins are now sized from the configured value so ores generate as proper clusters.

Config reload did not refresh generators

[PR #107]

After a /caveblock reload, the generators kept the settings captured at startup, so changes to world depth, roof/floor and main blocks did not apply to newly generated chunks until a full restart. The generators now re-read settings on reload.


Other Improvements

  • βš™οΈ Removed dead settings (netherBlocks, endBlocks, debug) and reworked world-generation config defaults.
  • πŸ”‘ Converted all locale files from legacy colour codes to MiniMessage.
  • Added new cave blueprints and updated the existing cave configurations.
  • Switched the build from Spigot to Paper 1.21.11 on Java 21 and updated the BentoBox API to 3.14.
  • Updated all Maven plugins to their latest versions and pinned MockBukkit to Maven Central 4.110.0.
  • Updated the copyright year and added CLAUDE.md developer guidance.

What's Changed

  • πŸ”Ί World generation overhaul, Paper 1.21.11 / Java 21, MiniMessage locales and config cleanup (Release 1.21.0) by @tastybento in #105
  • Check world based on to location not from location by @tastybento in #101
  • πŸ’Ž Honor Ore.blob() vein size in nether/end ore generation by @tastybento in #106
  • Refresh generators on config reload by @tastybento in #107

Full Changelog: 1.20.1...1.21.0