Skip to content

Release 3.23.3 - #3099

Merged
tastybento merged 14 commits into
masterfrom
develop
Oct 3, 2026
Merged

tastybento merged 14 commits into
masterfrom
develop

Conversation

@tastybento

Copy link
Copy Markdown
Member

Release 3.23.3. See the draft release notes for details.

Changes since 3.23.1: #3093, #3094, #3096, #3098, and the Multiverse auto-load fix for #3097.

🤖 Generated with Claude Code

tastybento and others added 14 commits September 26, 2026 15:41
Addons that keep their own death counts (Level tracks deaths per island
since 2.29.0) had no way to know when an admin changed a player's deaths,
so /<admin> deaths set|add|remove|reset silently did nothing to them.

The four admin deaths commands now fire PlayerDeathsChangedEvent with the
world, player, action, requested amount, and old/new counts. It is not
fired for natural deaths or the automatic new-island/team-join resets.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Fire PlayerDeathsChangedEvent from admin deaths commands
- Hide the vanilla "Interact with Spawn Egg: Sets Mob Type" tooltip on
  spawner icons by adding minecraft:block_entity_data to the hidden
  tooltip components of every panel item. Paper has no constant for it,
  so it is looked up in the data component registry.
- Command Ranks no longer lists sub-commands the viewer has no permission
  for (e.g. /ob border when it is denied). Top-level commands were
  already filtered; the recursive walk into sub-commands was not.
- The settings panel remembers the Basic/Advanced/Expert mode again, and
  one mode is shared by the Protection and Settings tabs. It is stored in
  the existing Players.flagsDisplayMode field, which went unused after
  #2343, and saved only when the player changes it. A tab that has nothing
  to show in the chosen mode still skips ahead for display, without
  changing the saved choice. The admin panel keeps opening in Expert and
  does not touch the admin's preference.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
buildVersion moved to 3.23.3 with no 3.23.2 release, so the flags
display mode accessors from #3094 first ship in 3.23.3.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The Command Ranks panel, opened from the COMMAND_RANKS flag, is now laid
out by panels/command_ranks_panel.yml. The template is installed to the
BentoBox data folder, and a game mode can override it with its own copy.

- New CommandRanksPanel with COMMAND (paged command list), NEXT and
  PREVIOUS button types. A command button can override the icon, the
  name layout and the lore layout; tooltips are appended.
- The default template reproduces the old look (map icons, no filler,
  rows sized to fit), and pages at 45 instead of silently dropping every
  command after the 49th.
- CommandRankClickListener opens it through the game mode's player
  command and keeps the old PanelBuilder layout as the fallback when
  there is none or the template can't be loaded. getCommands and a
  template-aware getPanelItemBuilder are now public.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
SonarCloud flagged duplicated lines on #3096:

- SettingsPanel and CommandRanksPanel carried the same lifecycle code
  (refresh after every click, close tracking, click cooldown, actionable
  slots, game mode template lookup). It now lives in
  AbstractRefreshingPanel, which both extend. Subclasses supply
  prepareRefresh(), and optionally titleParameters() and onClosed();
  SettingsPanel's deferred island saves end in onClosed(). Inserting the
  superclass keeps SettingsPanel binary compatible.
- BentoBox.loadSettings wrote each default panel template with its own
  copy of the same block; it now loops over DEFAULT_PANELS.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…el-3095

Template-editable Command Ranks panel (#3095)
Since 3.22.0 the Multiverse hook forced auto-load: false on every BentoBox
world on every startup, including worlds Multiverse already knew. An admin
who set auto-load back to true, so that plugins enabling after Multiverse
could use the worlds during their own startup, had it reverted on the next
boot.

Auto-load is now turned off only when BentoBox first imports the world. An
existing Multiverse entry is left as the admin configured it. The default is
unchanged: BentoBox still loads its own worlds unless an admin opts in.

The MV4 hook gets the same rule: addWorld() returns false for a known world,
so setAutoLoad(false) used to run on every boot there too.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The lava bucket is handed out one tick after the interact event, but
that deferred step re-checked nothing. Mining the obsidian inside that
tick gave the player both the obsidian and the lava, and moving the
bucket out of the hand let the lava be given without using a bucket.

givePlayerLava now confirms the player is online, the block is still
obsidian and the hand still holds an empty bucket, reading the bucket
fresh from the hand slot. The scooping message and sound move into it
so they only play when lava is actually given.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…date

Fix obsidian scoop lava/obsidian dupe by re-validating before giving lava
@tastybento
tastybento merged commit 07e7b64 into master Oct 3, 2026
4 checks passed
@sonarqubecloud

sonarqubecloud Bot commented Oct 3, 2026

Copy link
Copy Markdown

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