Releases: BentoBoxWorld/AOneBlock
Release list
Release 1.26.1
🎁 What's new
This is a bug-fix release for the 1.26.0 phase index, driven directly by admin feedback. In 1.26.0, upgrading servers received the stock phases_index.yml, which references the current jar's file names — but existing phases/ folders hold older or customized layouts. Phases silently failed to load, Sulfur Caves never appeared on upgraded servers, and the /oba phases panel showed a preset instead of the server's reality.
The phases folder is now the source of truth. On every start (and every panel save), the index is reconciled with the files actually on disk, so what you see in /oba phases is what your server really runs. This release also adds phase length editing to the admin panel and makes numeric file names/keys optional for custom phases.
✨ Highlights
🔺 Self-healing phase index (PR #541)
The index is reconciled with the phases/ folder on every load:
- An index entry whose file was renamed across addon versions (e.g. your
11000_deep_dark.ymlvs. the jar's10500_deep_dark) is re-pointed at your file by phase name — the phase loads again. - An entry whose file is missing but shipped in the jar (e.g.
15000_sulfur_caves.yml, which is never copied into an existing folder) is restored automatically. Sulfur Caves now appears on upgraded 26.2 servers. - Custom phase files dropped into the folder are added to the index automatically — numeric keys slot in at their legacy start block, anything else is appended at the end for you to arrange in the GUI.
- Entries whose files are gone for good are removed with a warning, so the panel never shows phases that don't exist.
- When repair was needed, phase lengths are recomputed from your files' legacy start-block keys, preserving the layout your server actually ran before the index existed (e.g. a 7000→8000 Desert stays 1000 blocks, not the preset's 500).
🔡 Set phase lengths in /oba phases (PR #541)
- Shift-left-click a phase to set its length: the panel closes and a chat prompt shows the current length. Type a whole number to apply it (starts recompute immediately and the panel reopens), or
cancelto keep it. Invalid input re-prompts; the prompt times out after 60 seconds. - ⚙️ The first length edit writes
adminLengths: trueintophases_index.yml. From then on, reconciliation never recomputes lengths, so your values survive later file additions, renames, or upgrades.
📄 Numbers in phase files are now optional (PR #541)
- Custom phase files no longer need a numeric start block in the file name or as the YAML section key —
desert.ymlwith adesert:section works. Chest files pair by file name (<file>_chests.yml), so they work unchanged. - The numbers in the shipped files are historical: with the index in charge, the panel's start/length values are the truth. Numeric keys remain useful as they tell reconciliation where a file belongs and how long it was.
🖱️ Panel polish from your feedback
- Phase icons fall back to the phase's first block instead of showing stone when no icon is configured.
- 🔡 The "How to use" book wraps onto four lines instead of one screen-wide line, and the per-phase lore is shorter for small monitors.
⚙️ Compatibility
✔️ BentoBox API 3.15.0+
✔️ Minecraft 1.21.5 or later — the Sulfur Caves phase itself activates on Minecraft 26.2+
✔️ Java 21
🔺 Updating — important notes
🔺 Your phases_index.yml will likely be rewritten on the first boot to match the files in your phases folder. Watch the log for lines starting with Phase index: — they tell you exactly what was re-pointed, restored, added, or removed, followed by Updated phases_index.yml to match the files in the phases folder. Phases that vanished after the 1.26.0 upgrade come back on their own, including Sulfur Caves on 26.2+ servers.
🔺 To remove a phase permanently, delete its files (or toggle it off in /oba phases). Deleting only its index entry no longer works — reconciliation will re-add any phase file it finds in the folder.
🔡 New and changed locale keys for the length prompt and the reworked panel text — regenerate or update translated locale files.
📥 How to update
- Stop the server. Make a backup just in case.
- Copy this jar over the old one.
- Restart the server.
- Check the startup log for the
Phase index:lines and confirm/oba phasesshows your real phase order, starts, and lengths. - You should be good to go!
Legend
- 🔡 locale files may need to be regenerated or updated
- ⚙️ config options have been removed, renamed, or added
- 🔺 special attention needed
What's Changed
- 🔺 fix: reconcile the phase index with the phases folder on load by @tastybento in #541
Full Changelog: 1.26.0...1.26.1
Release 1.26.0
🎁 What's new
This release adds the Sulfur Caves phase for servers running Minecraft 26.2, and — because shipping a 26.2-only phase to a plugin that also runs on 1.21.x needed real version handling — it introduces a phase index that controls which phases load, in what order, and on which server versions. Phases (and even individual blocks, mobs, and chest items) from a newer Minecraft version are now skipped cleanly with a log line instead of throwing stack traces on older servers. On top of the index sits a new admin GUI, /oba phases, that lets you reorder, insert, and toggle phases by clicking them around an inventory panel.
✨ Highlights
🌋 Sulfur Caves phase (PR #539)
- New phase at the 15000 spot: sulfur and cinnabar layered through typical underground blocks, with Sulfur Cubes, cave spiders, and friends at the wiki's exact spawn weights, plus themed chests that can drop the Bounce music disc.
- The end-of-game loop moves from 15000 to 15500.
- The phase declares
requiredMinecraftVersion: '26.2'— it appears automatically on 26.2+ servers and is skipped with a single info log on older ones (Jagged Peaks simply runs to the loop point instead).
🔺 Phase index — phases_index.yml
- New file next to the
phasesfolder, now the source of truth for phase order, length, enabled state, and required Minecraft version. Start blocks are the running sum of the lengths above, so phases can be moved freely and a skipped phase collapses out of the progression. - The index is read before any phase file is parsed, so version-gated phases never touch the YAML parser — this kills the
Tried to load invalid item/ConfigurationSerializationstack traces that newer-version items used to cause on older servers. - Existing installs are migrated automatically: the index is generated from your current phase files on first start. A malformed index falls back to the old direct file loading, so nothing can get stuck.
- Chest files are now read item by item — an item this server version doesn't know (e.g.
pink_harnesson 1.21.5) is skipped with one log line and the rest of the chest loads. - Block and mob entries accept an object form with a per-entry version, used for
DRIED_GHAST(1.21.6) in The Nether:DRIED_GHAST: weight: 25 requiredMinecraftVersion: '1.21.6'
🖱️ Phase order editor — /oba phases
- 🔡 New admin panel (permission
aoneblock.admin.phases, OP by default) showing every phase in order with its computed start block, length, and state. - Click a phase to pick it up — the rest shrink left. Click where it should go to shove the others right and drop it, or use the drop-at-end slot. Click anywhere else (or close the panel) to put it back without saving. Right-click toggles a phase on or off.
- Drops and toggles save the index and reload the phases immediately. Disabled phases show as gray glass, version-locked ones as barriers — both can still be reordered.
⚙️ Compatibility
✔️ BentoBox API 3.15.0+
✔️ Minecraft 1.21.5 or later — the Sulfur Caves phase itself activates on Minecraft 26.2+
✔️ Java 21
🔺 Updating — important notes
🔺 A phases_index.yml will be generated on first start from the phase files in your data folder, and from then on it controls phase order and lengths. Worth a quick review after the first boot — especially if you have hand-edited phases.
🔺 Existing installs don't get the new phase files automatically. As always, files in addons/AOneBlock/phases/ are never overwritten. To add Sulfur Caves to an existing install, copy 15000_sulfur_caves.yml and 15000_sulfur_caves_chests.yml from the jar into your phases folder and add its entry to phases_index.yml (or start with a fresh data folder).
🔡 New locale keys were added for the phase order editor — regenerate or update translated locale files.
📥 How to update
- Stop the server. Make a backup just in case.
- Copy this jar over the old one.
- Restart the server.
- Check the startup log — you should see
Created phases_index.yml from the existing phase files.on the first boot. - You should be good to go!
Legend
- 🔡 locale files may need to be regenerated or updated
- ⚙️ config options have been removed, renamed, or added
- 🔺 special attention needed
What's Changed
- 🔺 Sulfur Caves phase (MC 26.2), version-gated phase index, and phase order GUI by @tastybento in #539
Full Changelog: 1.25.2...1.26.0
Release 1.25.2
What's new
This is a bug-fix release.
- Jobs Reborn infinite-reward exploit closed. When the Magic Block flag denied a player from breaking the magic block, plugins that listen for block breaks — such as Jobs Reborn — still saw the break as successful and paid out rewards. Because the block instantly respawns, this allowed visitors to mine the same valuable block indefinitely for infinite job rewards. The denied break is now cancelled before other plugins process it, so no rewards are paid. Fixes #534.
actionbar: falsein config.yml now actually disables the action bar. Previously, if the boss bar was enabled, the action bar progress display kept showing even withactionbar: falseset (and the same applied in reverse to the boss bar). Both settings are now respected. This fix also stops the progress displays from being updated twice per block break when both were enabled. Fixes #537.
Compatibility
✔️ BentoBox API 3.15.0+
✔️ Minecraft 1.21.5 or later
✔️ Java 21
Upgrading
- Stop the server. Make a backup just in case.
- Copy this jar over the old one.
- Restart the server.
- You should be good to go!
What's Changed
- Cancel denied magic-block break early to stop Jobs reward exploit by @tastybento in #535
- Respect actionbar/bossbar config settings in BossBarListener by @tastybento in #538
- Bump pinned publish-platforms.yml to ca2dcd1 by @tastybento in #533
Full Changelog: 1.25.1...1.25.2
Release 1.25.1
What's new
This is a bug-fix release.
- Miner minions can mine the magic block again. Breaking the magic block with a JetsMinions Miner minion threw a
NullPointerExceptionand left the block gone until it was manually restored with/ob respawnblock. The minion break path no longer runs the player-only magic-block protection check that caused the crash, so the block cycles and respawns as expected. This regression had been present since 1.22.0. Fixes #525. my_island_*placeholders fixed for visiting team members. When a player who belongs to a team visited another island, themy_island_*placeholders resolved to the visited island's team data instead of the player's own island. They now always resolve to the player's own island.
Compatibility
✔️ BentoBox API 3.15.0+
✔️ Minecraft 1.21.5 or later
✔️ Java 21
Upgrading
- Stop the server. Make a backup just in case.
- Copy this jar over the old one.
- Restart the server.
- You should be good to go!
What's Changed
- Fix
my_island_*placeholders resolving to team island when player is visiting as a member by @Copilot in #519 - Add MC 26.1.2 to Modrinth game-versions by @tastybento in #521
- Add CurseForge publish workflow by @tastybento in #522
- Pin publish workflow to SHA and enable Hangar by @tastybento in #523
- Bump pinned reusable workflow to fe4b1f0 by @tastybento in #524
- Fix NPE when a minion breaks the magic block by @tastybento in #526
- Resolve SonarCloud issues and Javadoc cleanup by @tastybento in #527
- Bump JaCoCo to 0.8.15 for Java 25 support by @tastybento in #528
- Bump version to 1.25.1 by @tastybento in #529
- Add PhasesPanel test suite (5% → 85% coverage) by @tastybento in #530
Full Changelog: 1.25.0...1.25.1
Release 1.25.0
What's new
- Populated bee nest in Plenty. The Plenty phase already drops honey blocks, honeycomb blocks, and honey bottles, but never a hive to farm them from. Plenty now spawns a
bee_nest(3 bees inside,honey_level=0) at the same density as the other honey items, closing the honey-farming gap. - Magic block client-side resync after mob rolls. When the magic block rolled a mob, the server cancelled the break event but never told the client — leaving the block looking transparent until the next chunk resync (typically on relog). The block state is now resent to the mining player immediately after the cancel.
- CraftEngine startup-order fix. AOneBlock's
onEnableruns before CraftEngine has populated its block registry, which previously caused a flood of falseBad custom blockerrors for every validtype: craftengineentry.CraftEngineCustomBlock.fromMap()no longer consults the registry when the YAML explicitly declarestype: craftengine; runtime placement still validates the ID gracefully. - Stricter CraftEngine block-ID validation at config load. Blank IDs and IDs missing the
namespace:keyform are now rejected at config-load time instead of silently accepted and failing at placement. - Configurable chest particles no longer crash on non-DUST types. Particle types whose data type is non-
Void(e.g.ITEM,BLOCK,ENTITY_EFFECT) used to throwIllegalArgumentExceptionbecause no particle data was being constructed. They are now detected, logged as a warning, and skipped.DUSTand void-data particles (e.g.FLAME) work unchanged.
Compatibility
✔️ BentoBox API 3.15.0+
✔️ Minecraft 1.21.5 or later
✔️ Java 21
Upgrading
- Stop the server. Make a backup just in case.
- Copy this jar over the old one.
- (Optional) Remove the phases folder so it can be regenerated. If you have customized your phases, don't do this. Just see the new entry and add it if you want.
- Restart the server.
- You should be good to go!
What's Changed
- Fix false "Bad custom block" errors for CraftEngine blocks on startup by @Copilot in #511
- feat: drop populated bee nest in Plenty phase by @tastybento in #513
- fix: resync magic block to client after entity-spawn cancel by @tastybento in #514
- fix: skip chest particles that require typed data instead of crashing by @tastybento in #516
- fix: validate CraftEngine block ID format in fromMap at config-load time by @Copilot in #517
Full Changelog: 1.24.0...1.25.0
Release 1.24.0
What's new
- 🔺 CraftEngine custom block support. Phases can now spawn CraftEngine blocks alongside the existing ItemsAdder and Nexo integrations. Refactored to delegate to BentoBox's new
CraftEngineHook, so AOneBlock no longer tracks CraftEngine's API directly — this requires BentoBox 3.15.0 or later. - ⚙️ Configurable chest particles per rarity. The particle type and color shown above UNCOMMON/RARE/EPIC chests are now fully configurable in
config.ymlunderworld.chest-particles. Set a particle toNONEto disable that rarity. CHEST_WITH_Xfixed-block notation. Phase YAMLfixedBlocksnow accept entries likeCHEST_WITH_WATER_BUCKET, which place a chest pre-filled with that item. Used to give Plains players a guaranteed water bucket as the last block before the Underground transition.- Plains phase starter sequence updated. The first six blocks are now a deterministic grass + oak log sequence so new players always get logs before stone, and the test sponge entry has been replaced with the water-bucket chest above.
- ⚙️
OBSIDIAN_SCOOPINGnow off by default. Holding a bucket no longer instantly scoops obsidian magic blocks on fresh installs. Existing servers with the flag explicitly set are unaffected. - 🔡 Placeholder defaults for islandless players.
%aoneblock_my_island_phase%,%aoneblock_my_island_count%, and%aoneblock_my_island_percent_done%now return sensible defaults (Unknown,0,0%) instead of empty strings when the player has no island. New locale keyaoneblock.placeholders.my-island-phase-default. - 🔡 Missing actionbar/placeholder translations added across all locales.
- Documentation overhaul for MythicMobs, ItemsAdder, and Nexo custom block configuration in the README, including a
start-commandsworkaround for MythicMobs skill issues. - Code-quality sweep: 36 SonarCloud MEDIUM issues addressed, S2637 nullability warnings resolved, JaCoCo coverage now reports to SonarCloud, modrinth-publish action pinned to commit SHA.
Compatibility
✔️ BentoBox API 3.15.0+
✔️ Minecraft 1.21.5 or later
✔️ Java 21
Changelog
Legend
- 🔡 locale files may need to be regenerated or updated.
- ⚙️ config options have been removed, renamed, or added.
- 🔺 special attention needed.
Upgrading
- Stop the server. Make a backup just in case.
- Update BentoBox to 3.15.0 or later first — this release will not load against older BentoBox versions.
- Copy this jar over the old one.
- Restart the server.
- (Optional) Review
config.ymlfor the newworld.chest-particlesblock if you want to customise chest particle effects. - (Optional) If you relied on the previous
OBSIDIAN_SCOOPING: truedefault, re-add it explicitly. - You should be good to go!
🔺 BentoBox 3.15.0 required. The CraftEngine refactor depends on
CraftEngineHookintroduced in BentoBox 3.15.0. Older BentoBox versions will fail to load this addon.
⚙️ Config note: Fresh installs get six new keys under
world.chest-particlesandOBSIDIAN_SCOOPING: false. Existing config files keep their current values — copy the new section in if you want to use the configurable particles.
What's Changed
- Add CraftEngine custom block support by @tastybento in #496
- docs: strengthen README documentation for MythicMobs, ItemsAdder, and Nexo custom blocks by @tastybento in #498
- 🔡 Return defaults for empty placeholders when player has no island by @tastybento in #501
- 🔺 refactor: use BentoBox CraftEngineHook instead of direct API calls by @tastybento in #503
- ⚙️ Disable OBSIDIAN_SCOOPING by default by @tastybento in #505
- Add CHEST_WITH_X fixed-block shorthand and set Plains phase starter sequence by @tastybento in #506
- ⚙️ feat: make chest particle type and color configurable per rarity by @tastybento in #507
Full Changelog: 1.23.0...1.24.0
Release 1.23.0
New in this release
- Nexo custom block support! AOneBlock now supports Nexo custom blocks in phase definitions, alongside the existing ItemsAdder support.
- HEX / MiniMessage color support in the action bar. The
/ob actionbartext now correctly renders HEX colors and full MiniMessage formatting. - Russian locale updated to MiniMessage format with grammar corrections.
- Several action bar locale/translation bug fixes.
Compatibility
✔️ BentoBox API 3.10.0+
✔️ Minecraft 1.21.5 or later
✔️ Java 21
Changelog
Legend
- 🔡 locale files may need to be regenerated or updated.
- ⚙️ config options have been removed, renamed or added.
- 🔺 special attention needed.
Upgrading
- Stop the server. Make a backup just in case.
- Copy this jar over the old one.
- Restart the server.
- You should be good to go!
What's Changed
- Fix hex colors in the /ob actionbar command by @tastybento in #469
- 🔡⚙️🔺 Add Nexo custom block support by @tastybento in #474
- 🔡 Update Russian locale to MiniMessage format with grammar corrections by @tastybento in #479
- 🔡 Fix ONEBLOCK_ACTIONBAR translation not appearing in settings by @tastybento in #480
- Fix wrong locale keys in AdminSanityCheck by @tastybento in #481
- Fix action bar color codes stripped by getTranslationNoColor by @tastybento in #482
Full Changelog: 1.22.0...1.23.0
Release 1.22.0
New in this release
- Action Bar status! Use
/ob actionbarto toggle the action bar status on or off. Working independently of the Boss Bar. Admins can customize the text in the locale file. (This didn't make it into the last release due to a version error!) - Locales have been updated with this change too.
Compatibility
✔️ BentoBox API 3.0.0+
✔️ Minecraft 1.21.5 or later
✔️ Java 21
Changelog
Legend
- 🔡 locale files may need to be regenerated or updated.
- ⚙️ config options have been removed, renamed or added.
- 🔺 special attention needed.
Upgrading
- Stop the server. Make a backup just in case.
- Copy this jar over the old one
- Restart the server
- You should be good to go!
What's Changed
- 🔡⚙️ Provides Actionbar command and settings by @tastybento in #464
- Update tests to Mockito 5 and remove PowerMockito by @tastybento in #466
- Test additions by @tastybento in #467
- Version 1.22.0 by @tastybento in #465
Full Changelog: 1.21.1...1.22.0
Release 1.18.0
This release is for 1.21.3 and later and will not run on earlier versions, sorry!
Compatibility
✔️ BentoBox API 2.7.1 only
✔️ Minecraft 1.21.3 or later only
✔️ Java 17
Changelog
Legend
- 🔡 locale files may need to be regenerated or updated.
- ⚙️ config options have been removed, renamed or added.
- 🔺 special attention needed.
Upgrading
- 🔺Make sure you are running 1.21.3 or later!
- Stop the server. Make a backup just in case.
- Copy this jar over the old one
- Restart the server
- You should be good to go!
What's Changed
- 🔺2.3.1 compatibility by @tastybento in #404
- Release 1.18.0 by @tastybento in #408
- Added text about the tipped arrow (commit: 2aef6a7)
- ⚙️Updated SNOWMAN to SNOW_GOLEM (commit: 252fe35)
- Remove holograms even if they are not cached (commit: 8ae0b83)
Full Changelog: 1.17.0...1.180
Release 1.21.1
New in this release
- Suspicious gravel and sand will now yield loot if brushed.
Action Bar status! Use(This didn't make it into this release due to a version error. It'll be in the next one)/ob actionbarto toggle the action bar status on or off. Working independently of the Boss Bar. Admins can customize the text in the locale file.
Compatibility
✔️ BentoBox API 3.0.0+
✔️ Minecraft 1.21.5 or later
✔️ Java 21
Changelog
Legend
- 🔡 locale files may need to be regenerated or updated.
- ⚙️ config options have been removed, renamed or added.
- 🔺 special attention needed.
Upgrading
- Stop the server. Make a backup just in case.
- Copy this jar over the old one
- Restart the server
- You should be good to go!
What's Changed
- Add ActionBar support #450 by @tastybento in #455
- Release 1.21.0 by @tastybento in #456
- Fix for suspicious sand/gravle by @tastybento in #457
- Release 1.21.1 by @tastybento in #458
Full Changelog: 1.21.0...1.21.1