Skip to content

Release 3.14.1#2937

Merged
tastybento merged 16 commits intomasterfrom
develop
Apr 11, 2026
Merged

Release 3.14.1#2937
tastybento merged 16 commits intomasterfrom
develop

Conversation

@tastybento
Copy link
Copy Markdown
Member

No description provided.

tastybento and others added 16 commits April 10, 2026 14:09
Updated the README to enhance the description of BentoBox and its features, added game modes, and included installation instructions.
Add comprehensive JUnit 5 tests for ItemParser (4% → 94.5% line coverage)
covering null/blank input, material parsing, quantity clamping, potions
(old and new format), banners, player heads, and custom model data.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add 65 new tests covering: getIsland/getIslands overloads, getOwnedIslands,
hasIsland, isOwner, inTeam, setHomeLocation/getHomeLocation overloads,
removeHomeLocation, renameHomeLocation, getHomeLocations, isHomeLocation,
getNumberOfHomesIfAdded, clearSpawn, removePlayer overloads, isSaveTaskRunning,
setJoinTeam, getIslandById, isIslandId, resetAllFlags, resetFlag,
getNumberOfConcurrentIslands, getPrimaryIsland, isIslandAt, loadIsland,
deleteIslandId, getIslandCount, getIslandsASync, and online player scenarios.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add 16 new tests covering: isLocaleAvailable, getAvailablePrefixes with
various user locales, get/getOrDefault with server default language
fallback, user locale translation priority, locale sorting edge cases,
loadLocalesFromFile with invalid BCP-47 tags and merging, and copyFile
non-overwrite behavior.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add 30 new tests covering: serialize (null, UUID, World, Location, Keyed,
Enum, plain objects), objectExists, loadObject with various field types
(String, int, Enum, Map, Set, List, dot-encoded keys, missing fields),
loadObjects from filesystem, saveObject (null, shutdown sync path,
collections, auto-generated uniqueId), deleteObject, deleteID (with/without
.yml suffix, null, nonexistent folder), and close.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Tests addon lookup, state filtering, enable/disable lifecycle,
allLoaded error handling, compatibility checks, and permissions.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Tests bundle loading, saving, duplicate detection, paste error paths,
extract defaults, rename edge cases, and loading flag behavior.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Tests blockFaceToFloat, isVersionCompatible, parseGitHubDate,
getLocationString, broadcast, runCommands, and bukkitToAdventure.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Tests Builder validation (null entity/location/world), Builder setters,
tryToGo safe/portal paths, getChunksToScan, checkBlock, scanChunk,
and portal mode bestSpot stashing.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Tests copy edge cases (null world, no positions, with/without origin),
setPos1/setPos2 height clamping and null world defaults, isFull state,
fluent setBlueprint, and getVectors edge cases.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Tests constructor with GitHub disabled, getter methods (catalogs,
contributors), requestGitHubData no-op path, and additional
isNewerVersion edge cases.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Adds Flag.Builder.minimumRank(int) so addons can declare a minimum
selectable rank for a PROTECTION flag (default VISITOR_RANK). The
auto-assigned CycleClick listener is wired with the configured minimum
so the click cycle skips ranks below it. defaultRank is clamped up to
minimumRank to keep the flag's default value selectable.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
User.convertToLegacy split mixed MiniMessage/legacy strings on '\n'
before parsing, so a multi-line tag span like
"<green>foo\nbar</green>" was processed as two independent lines —
the second line "bar</green>" had a closing tag with no opening, and
MiniMessage rendered "</green>" as literal text. Parse the whole
string at once instead; Adventure preserves newlines through
text.content().

Also drop the now-unnecessary <green>...</green> wrapper around
[description] in the description-layout, menu-layout, and
setting-layout flag templates across all bundled locale files.
Descriptions bring their own colors after the MiniMessage migration,
and the wrapper was the trigger for this specific bug.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add three subsections covering rules learned while fixing the
</green> tooltip leak: parse multi-line translations as a single
unit, never wrap [placeholder]s in MiniMessage tags inside locale
templates, and watch for same-color run collapse when downstream
code splits a legacy string on a literal character.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
MiniMessage has no <orange> named color, so the obsidian scooping tip
hologram rendered the tags as literal text. Switched to <gold>, the
closest Minecraft named color.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@sonarqubecloud
Copy link
Copy Markdown

@tastybento tastybento merged commit 5548502 into master Apr 11, 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