Skip to content

Release 3.4.1 - #137

Merged
tastybento merged 24 commits into
masterfrom
develop
Sep 25, 2026
Merged

tastybento merged 24 commits into
masterfrom
develop

Conversation

@tastybento

Copy link
Copy Markdown
Member

Release 3.4.1: a patch release. It fixes a crash that could stop Boxed from enabling on first boot and makes /boxadmin place ... NO_MOBS work. It also bumps BentoBox to 3.17.0 and cleans up the code for SonarCloud.

Draft release notes: https://github.com/BentoBoxWorld/Boxed/releases (draft 3.4.1)

Included

🤖 Generated with Claude Code

tastybento and others added 24 commits June 3, 2026 08:08
Brings the supported-versions list in line with the other addons (1.21.5-1.21.11, 26.1, 26.1.1, 26.1.2).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Update Modrinth game-versions to current MC range
Adds a README section explaining the three practical ways to get custom
terrain into player boxes (match an existing world's seed, edit the seed
world by hand, or drop in your own world as the seed), plus a cross-link
from the World Seed note.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
BentoBox 3.16.1 reclaims island disk space natively via the housekeeping
region-file sweep (added 3.15.0), so Regionerator is no longer required.
Replace the "Using Regionerator" section with "Reclaiming Disk Space",
covering the deleted-sweep/age-sweep config keys, /boxadmin purge deleted,
and the fact that the sweep never touches Boxed's seed worlds. Note that
deletion.keep-previous-island-on-reset is now ignored, keep Regionerator
as a legacy/optional path, and update the custom-map cross-links.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Update bentobox.version 3.13.0 -> 3.17.0 so the build matches the latest
release and the native region-file deletion behaviour now documented in
the README. Update the README BentoBox requirement accordingly. All 167
tests pass against 3.17.0.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Keep the project note in sync with the pom dependency bump.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Publish the jar attached to each GitHub release to CurseForge via the shared
BentoBoxWorld/.github reusable workflow, downloading the release asset instead of
rebuilding from source. Mirrors the BentoBox core setup.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Pin bentoboxworld/.github publish-platforms.yml to commit e0c5d98f5e6ef9ea7c9a28afad05f4c07bcde898 (Sonar
githubactions:S7637) and set the Hangar slug so releases publish to Hangar
alongside CurseForge.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…944b98b9

Picks up the split into independent CurseForge and Hangar jobs so neither
platform can block the other.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Add CurseForge publish workflow (publishes the release asset)
…e4b1f0

ci: bump pinned reusable workflow to fe4b1f0
…ca2dcd1

ci: bump pinned publish-platforms.yml to ca2dcd1
The pinned SHA predates BentoBoxWorld/.github#13, which moved the CurseForge
metadata and Hangar versionUpload JSON out of inline curl -F values and into
files. curl treats a ';' in an inline -F value as the start of a type=
attribute, so a release body containing a semicolon truncates the JSON and
both platforms reject the upload.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SAQ3YQkcfRoCZEwa6SPJcp
ci: bump publish-platforms pin to the multipart-JSON fix
Blockers
- AdvancementListenerTest: add assertions to the four onPortal tests.

Critical
- AbstractSeedBiomeProvider: rename enum constants to UPPER_CASE, replace
  the deeply nested erosion/ridge if-chains with switch expressions over
  shared helpers (peaks, slopes/grove, plateau, swamp, erosion-5 cases),
  and drop the three duplicate near-inland/coast methods. Also fixes a
  missing-parentheses precedence bug in the erosion-5 humidity check.
- NewAreaListener: MINECRAFT constant, split onPlayerMove/removeJigsaw,
  remove unused static fields, rename `record` lambda vars, drop dead
  null check and commented code, merge nested if.
- EnderPearlListener: NO_TELEPORT_OUTSIDE constant, extract pearl landing
  handling, remove always-true getTo() null checks.
- AdminPlaceStructureCommand: split canExecute into parse helpers, drop
  unused params/import, log instead of printStackTrace.
- BoxedBlockPopulator / BoxedChunkGenerator: extract helpers.
- AbstractBoxedChunkGenerator: `size` is now an instance field with an
  instance repeatCalc(int) plus a pure static repeatCalc(int, int);
  callers use the generator instance. Constructor is protected.

Major / minor / info
- Replace deprecated Registry.BIOME / Biome.CUSTOM / Biome.valueOf with
  RegistryAccess + NamespacedKey lookups; unknown/CUSTOM biomes map to
  null ("use vanilla") as before.
- Remove deprecated isUsesNewChunkGeneration override (no consumer left
  in BentoBox 3.16.1+); update CLAUDE.md.
- Settings: add missing @OverRide annotations.
- BoxedSeedChunkGenerator: return empty lists instead of null.
- Remove commented-out code and TODO comments across the codebase.
- Tests: drop redundant public modifiers, useless eq(), unused helper
  methods, deprecated CHORUS_FRUIT/PlayerDeathEvent usages, and the
  superfluous throws clause on CommonTestSetup.setUp().

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RgbmBTXKJzbhGKMuGKfaBm
- Extract inline mock creations to local variables (S9016).
- Guard OfflinePlayer#getLocation() nullability before getIslandAt (S2637).
- Remove unused java.util.Map import in BoxedBlockPopulator (S1128).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RgbmBTXKJzbhGKMuGKfaBm
Fix open SonarCloud issues (blockers through info)
Level 2.29.0 tracks deaths per island itself. Update the config comments
so admins can see that team-join-reset and reset-on-new only affect
BentoBox's own death counter and placeholder, while counted and max
still gate what Level records.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SxX9oscerhv1nsozPbT5aX
…-2.29

docs: clarify which deaths settings affect Level 2.29.0 island levels
Vanilla continentalness noise can fall below the nominal -1.2 lower
bound (e.g. when an explorer map in an unpacked loot chest searches for
structures far outside the seed area), which made ContLoc.getCont throw
and caused BentoBox to skip Boxed during enable. Make both outer bands
open-ended.

Fixes #135

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Fix 'contloc out of spec' crash when continentalness < -1.2
@sonarqubecloud

Copy link
Copy Markdown

@tastybento
tastybento merged commit 6a94d1a into master Sep 25, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant