Releases: BentoBoxWorld/CaveBlock
Release list
Release 1.23.1
CaveBlock 1.23.1
A bugfix release that closes the structure-suppression hole introduced in 1.23.0. Recommended for all servers running 1.23.0 that disable vanilla structures in a cave world.
🔺 Bug Fixes
- Disabled structures no longer freeze the server — On a CaveBlock overworld, disabling a vanilla structure (e.g. Trial Chambers, Ancient Cities) only cancelled its placement, not its placement rules. Structure searches —
/locate, Eyes of Ender, explorer/treasure maps, dolphins and villager map trades — kept proposing candidate positions that were all cancelled, scanning out to the radius cap and freezing the main thread. A newStructuresLocateEventhandler now removes disabled structures from the search up front (and cancels the search outright when nothing remains), so it returns "not found" instantly instead of hanging. Fixes #116. [PR #117] - Structures no longer slip through in the spawn area — The structure-suppression listener is now registered early in
createWorlds(), before the initial spawn chunks generate. Previously the first structures around spawn were generated before the addon's island-world reference was assigned, so a disabled structure (such as Trial Chambers) could still appear near spawn. Fixes #116. [PR #118]
Compatibility
✔️ BentoBox API 3.14+
✔️ Minecraft 1.21.x
✔️ Java 21
Upgrading from 1.23.0
- Stop your server.
- Replace the old
CaveBlockjar inplugins/BentoBox/addons/with this one. - Start your server. No config or locale changes are required.
Legend
- 🔺 Special attention — fixes a main-thread freeze; upgrading is strongly recommended for 1.23.0 servers.
What's Changed
- 🔺 Stop /locate freezing the server for disabled structures (#116) by @tastybento in #117
- 🔺 Suppress structures in the spawn area too (#116) by @tastybento in #118
- Release 1.23.1 by @tastybento in #119
Full Changelog: 1.23.0...1.23.1
Release 1.23.0
CaveBlock 1.23.0
This release builds on the reworked overworld cave generation from 1.22.0 by handing server admins direct control over what fills their cave worlds. You can now switch off individual vanilla structures, thin out the dense 1.18+ cave network, and turn off the big carver ravines and tunnels — all from config.yml.
Highlights
- ⚙️ Configurable overworld structures — Toggle individual vanilla structures (Ancient Cities, Trial Chambers, Mansions, Mineshafts, Strongholds and more) on or off in the overworld cave world. The largest, world-filling structures are disabled by default. Fixes #112.
- ⚙️ Overworld cave density control — A new
overworld-cave-fillsetting re-solidifies a fraction of the vanilla cave network so worlds feel less like "nothing but passageways", while keeping biomes, ores, decorations and structures intact. Fixes #111. - ⚙️ Carver cave toggle — A new
overworld-carverssetting lets you remove vanilla ravines and wide tunnels while keeping the noise caves.
What's New
⚙️ Configurable Overworld Structures
A new structures: section in config.yml lets you control which vanilla structures generate in the overworld cave world. Set any structure to false to stop it generating; structures not listed generate as normal. Use the vanilla structure key, for example ancient_city, trial_chambers, mineshaft, stronghold, mansion, monument, village_plains, and so on.
Large structures such as Ancient Cities and Trial Chambers can fill or unbalance a solid cave world, so they are disabled by default. This only affects the overworld.
structures:
ancient_city: false
trial_chambers: false
mansion: false
mineshaft: true
stronghold: true⚙️ Overworld Cave Density & Carvers
Vanilla generates a dense 1.18+ cave network (cheese and spaghetti caves) which, on a solid cave world, can feel like endless passageways. Two new settings let you tune this:
overworld-cave-fill(0.0–1.0, default0.0) — re-solidifies a fraction of the cave air after generation using a low-frequency noise field, so whole regions close up into separate chambers rather than punching random single holes.0.0keeps every vanilla cave (the original behaviour);1.0fills nearly all caves. Try0.4–0.6to thin them out. Underground biomes, ores, decorations and structures are preserved either way.overworld-carvers(defaulttrue) — generate vanilla carver caves (big ravines and long round tunnels) on top of the noise caves. Set tofalseto remove the ravines and wide tunnels while keeping the noise caves.
Both settings only affect newly generated chunks.
⚙️ Config note: These settings are added automatically to
config.ymlon first run after upgrading. Defaults preserve the existing 1.22.0 cave-generation behaviour, except that the largest structures are now off by default.
🔺 Note:
overworld-carverscannot be changed mid-game — BentoBox does not support altering it on an existing world. If you need to change it, do a full reset of your worlds and databases.
Compatibility
✔️ BentoBox API 3.14.1
✔️ Minecraft 1.21.x (Paper 1.21.11)
✔️ Java 21
Upgrading
- Stop your server.
- Replace the old
CaveBlock.jarin yourplugins/BentoBox/addonsfolder with this release. - Start the server — the new
structures,overworld-cave-fill, andoverworld-carversoptions are written toconfig.ymlautomatically. - Adjust the new options to taste and reload. Note these settings only affect newly generated chunks, so already-explored areas are unchanged.
Legend
- ⚙️ Config options have been added — review the new settings in
config.yml. - 🔺 Special attention needed.
What's Changed
- ⚙️ Add configurable structure toggles for the overworld by @tastybento in #113
- ⚙️ Add overworld cave-density controls by @tastybento in #115
Full Changelog: 1.22.0...1.23.0
Release 1.22.0
🎁 What's new
This release rebuilds how the Nether and The End are generated. Previously both dimensions were a solid block of rock that the populator peppered with random single blocks — including stray fire, which floated in mid-air and caused noticeable lag — and there were no real caves. Now both dimensions are solid worlds carved through by proper noise-generated cave systems, the Nether has natural biome regions across each island, and cave floors and ceilings are dressed with biome-appropriate decorations.
✨ Highlights
- 🔺 Nether & End generation overhaul — solid dimensions with connected, noise-carved caves instead of a random block soup.
- Nether lava sea — the lowest cave voids fill with lava rather than open air; the floor and roof stay solid so the world remains enclosed.
- Natural Nether biomes — the five Nether biomes are shared into natural, roughly equal-area regions, so several biomes appear within a single island.
- Biome-aware decorations — crimson/warped nylium, roots, fungi and vines; soul sand valleys with soul fire and bones; basalt deltas with columns and magma fires; glowstone ceiling patches; end rods and chorus in The End.
- No more laggy floating fire — fire is now sparse and grounded on netherrack/magma, so it stays lit without the old lag.
Compatibility
✔️ BentoBox API 3.14+
✔️ Minecraft 1.21.x
✔️ Java 21
Upgrading
- As always, take backups just in case. (Make a copy of everything!)
- Stop the server.
- Replace the CaveBlock jar with this one.
- Restart the server.
- You should be good to go!
🔺 Nether/End note: The new generator only affects newly generated chunks. Nether and End chunks that were already generated with the old generator will look different from new ones, so you may see a seam where old meets new. If you want a consistent look, regenerate the Nether and End (or start fresh worlds) after upgrading.
Legend
- 🔺 special attention needed.
New Features
🔺 Nether & End generation overhaul
Both dimensions are now filled solid and then carved by a 3D Simplex noise cave generator (intersecting folded noise fields for winding tunnels, plus a lower-frequency field for larger chambers), keeping a solid margin against the floor and roof. The Nether gains a lava sea at the bottom of its caves. A new biome provider distributes the five Nether biomes (wastes, crimson forest, warped forest, soul sand valley, basalt deltas) into natural, roughly equal-area regions so several biomes appear within one island. A biome-aware decoration pass then dresses cave floors and ceilings — nylium, roots, fungi, vines, soul fire, bones, basalt columns, glowstone, end rods and chorus flowers — always resting on solid ground so nothing floats. The old random single-block fill (including the laggy floating fire, scattered cave-air and stray lava) has been removed; ore and rock veins remain embedded in the walls.
Other Improvements
- Update API version, bump the build version, and save air in blueprints [cdd15e3]
- Add Modrinth publish workflow [d7bf7f8]
What's Changed
- 🔺 Redo nether and end generation: noise caves, biomes and decorations by @tastybento in #109
- Update API version and increment build version, save air in blueprints by @tastybento in cdd15e3
- Add Modrinth publish workflow by @tastybento in d7bf7f8
Full Changelog: 1.21.0...1.22.0
Release 1.21.0
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
- As always, take backups just in case. (Make a copy of everything!)
- Stop the server.
- Replace the CaveBlock jar with this one.
- Make sure your server runs Paper Minecraft 1.21.5–26.2 on Java 21 and BentoBox 3.14 or newer.
- Review your
config.yml— regenerate it or merge the new world-generation options (see callout below). - Restart the server.
- 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,endBlocksanddebugsettings were removed and world-generation options were reworked. Back up your existingconfig.ymlbefore 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
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.mddeveloper 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
tolocation notfromlocation 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
Version 1.20.1
Bug fix release.
Compatibility
✔️ BentoBox API 2.7.1 - not backwards compatible
✔️ Minecraft 1.21.3 - not backward compatible
✔️ Java 17
Changelog
Legend
- 🔡 locale files may need to be regenerated or updated.
- ⚙️ config options have been removed, renamed or added.
- 🔺 special attention needed.
What's Changed
- Check world based on to location not from location by @tastybento in #101
- Version 1.20.1 by @tastybento in #102
Full Changelog: 1.20.0...1.20.1
Version 1.20.0
This release updates to the latest API's and adds a few config.yml settings for multiple caves and teams.
Compatibility
✔️ BentoBox API 2.7.1 - not backwards compatible
✔️ Minecraft 1.21.3 - not backward compatible
✔️ Java 17
Changelog
Legend
- 🔡 locale files may need to be regenerated or updated.
- ⚙️ config options have been removed, renamed or added.
- 🔺 special attention needed.
What's Changed
- 🔺MC 1.21.3 updates and codemc updates by @tastybento in #94
- Version 1.20.0 by @tastybento in #96
Full Changelog: 1.19.0...1.20.0
Release 1.19.0
This release updates to the latest API's and adds a few config.yml settings for multiple caves and teams.
Compatibility
✔️ BentoBox API 2.5.0
✔️ Minecraft 1.20.2 - 1.21.x
✔️ Java 17
Changelog
Legend
- 🔡 locale files may need to be regenerated or updated.
- ⚙️ config options have been removed, renamed or added.
- 🔺 special attention needed.
What's Changed
- Release 1.19.0 by @tastybento in #92
- Avoid min and max y settings for ores. Fixes #91 [commit: 9e51156]
- Return the Pladdon that was created. [commit: 3694f86]
- ⚙️Add config settings for latest BentoBox API [commit: 30534ec]
- ⚙️Update config.yml [commit: 0513f71]
Full Changelog: 1.18.0...1.19.0
Release 1.18.0
Compatibility
✔️ BentoBox API 1.23.0.
✔️ Minecraft 1.19
✔️ Java 17
Changelog
Legend
- 🔡 locale files may need to be regenerated or updated.
- ⚙️ config options have been removed, renamed or added.
- 🔺 special attention needed.
What's Changed
- Update to BentoBox 1.21 and 1.23 API changes
- Update DE by @gitlocalize-app in #84
- Update RU by @gitlocalize-app in #85
- Caveblock TR locale by @gitlocalize-app in #87
- Return to plugin.yml by @BONNe in #89
Full Changelog: 1.17.0...1.18.0
Release 1.17.0
Compatibility
✔️ BentoBox API 1.21.0.
✔️ Minecraft 1.19
✔️ Java 17
Changelog
Legend
- 🔡 locale files may need to be regenerated or updated.
- ⚙️ config options have been removed, renamed or added.
- 🔺 special attention needed.
What's Changed
- Fixes a crash when entities are placed into the world.
- Fixes an issue when ores were not generated in the correct form #77
- Fixes the grass layer issue that cripples server performance if bedrock ceiling were enabled.
Full Changelog: 1.16.0...1.17.0
Release 1.16.0
Compatibility
✔️ BentoBox API 1.19.0.
✔️ Minecraft 1.18.1
✔️ Java 16
Changelog
Legend
- 🔡 locale files may need to be regenerated or updated.
- ⚙️ config options have been removed, renamed or added.
- 🔺 special attention needed.
What's Changed
- ⚙️New config option
natural-surface- generates surface that is natural(-ish). Currently, it may be just grass and dirt layers. - ⚙️New config option
natural-caves- generate caves inside the world. - ⚙️New config option
natural-bedrock- generates natural looking bedrock pattern. - Fixes bugs with floor and ceiling options not working.
- Fixes bugs with incorrect ore generation #77
Full Changelog: 1.15.0...1.16.0