Release 1.19.2 - #64
Open
tastybento wants to merge 12 commits into
Open
Conversation
…a2dcd1 ci: bump pinned publish-platforms.yml to ca2dcd1
Running InvSwitcher alongside Multiverse-Inventories (or PerWorldInventory, MultiInv, etc.) makes both plugins save and restore the player on every world change, so they overwrite each other's data. The symptom is disappearing items with nothing logged, and it is independent of the InvSwitcher version. Documents the Multiverse-Inventories case, including the two dead ends admins usually hit first - inventory groups do not control whether MV-I handles a world, and `/mv remove` is undone when Multiverse-Core re-registers the worlds on the next restart - plus the working bypass-permission fix. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01YXnYDGiASdSUZFtNyS4jbc
…icts docs: warn against running a second inventory manager
The shipped `worlds:` list had not kept up with the game modes BentoBox now has, so SkyGrid, Raft, Brix and Parkour were absent. On a fresh install InvSwitcher silently did not manage those worlds, and because nothing is logged for a world that was never hooked, there is no signal that coverage is missing until items start leaking between worlds. This surfaced on a server running Multiverse-Inventories alongside InvSwitcher. After granting `mvinv.bypass.world.parkour_world` to stop MV-I handling the world, `parkour_world` was left with no inventory manager at all - it was not in InvSwitcher's world list either - and items carried straight out of the parkour world into the lobby. World names verified against each game mode's own config: skygrid-world (SkyGrid), raft_world (Raft, from Settings.java), brix_world (Brix), parkour_world (Parkour). Existing entries are untouched, and only new installs pick up the additions. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01YXnYDGiASdSUZFtNyS4jbc
…gamemodes fix: add missing game mode worlds to the default config
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
…hutdown Two fixes, released as 1.19.2. Economy command permissions were never declared. The commands set permissions like "invswitcher.balance", which CompositeCommand prefixes with the parent game mode's permission prefix, giving e.g. "bskyblock.invswitcher.balance". addon.yml had no permissions section, so those nodes were never registered with a default and hasPermission() was false for every non-op player - /<gm> balance and /<gm> pay failed with a permission error. Declare them in addon.yml using BentoBox's [gamemode] placeholder, which AddonsManager expands into every game mode's prefix. User commands default to true, admin eco commands to op. Shutdown saves are now synchronous. BentoBox closes its database immediately after addons are disabled and only kicks players afterwards, so the async write issued from saveOnShutdown() lost the race and was silently dropped, and the PlayerQuitEvent that would otherwise save fired after the database was closed. Everything a player did since their last world change went unsaved on server stop, and because onPlayerJoin re-applies the stored inventory, the stale snapshot then overwrote their real inventory on the next login. Route both save paths through a persist() helper that writes synchronously when shutting down. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0183f7bfWoU9rmXxRCRwvrAs
JaCoCo 0.8.12 cannot read class file major version 69, so instrumenting the classes Mockito generates at runtime failed with "Error while instrumenting ... Unsupported class file major version 69" whenever the build ran on a JDK 25 toolchain - which is what the CodeMC CI agent (OpenJDK_25) uses. 0.8.15 adds Java 25 class file support. Verified on JDK 25: mvn test now runs all 128 tests green with the agent attached, and jacoco:report analyzes the bundle and writes the report. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0183f7bfWoU9rmXxRCRwvrAs
…-shutdown-save fix: register economy command permissions and save synchronously on shutdown (1.19.2)
Pre-emptive, following the same audit as the other game mode worlds. As with those, an existing config.yml on disk is not rewritten, so this only affects fresh installs. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0183f7bfWoU9rmXxRCRwvrAs
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.



Release PR for InvSwitcher 1.19.2.
What's in it
🐛 Inventories no longer roll back for players online at shutdown
[PR #63]
BentoBox closes its database immediately after addons are disabled and only kicks players afterwards, so the asynchronous write issued from
saveOnShutdown()lost the race and was silently dropped — and thePlayerQuitEventthat would otherwise have saved the player fired after the database was already closed. Everything a player who was still online did since their last world change went unsaved, and becauseonPlayerJoinre-applies the stored inventory on login, the stale snapshot then overwrote their real inventory. Only players online at the moment the server stopped were affected —saveOnShutdown()iteratesBukkit.getOnlinePlayers(), and anyone who had already quit was saved normally while the database was still open. Shutdown saves are now synchronous.💰 Economy commands work for normal players
[PR #63]
/<gamemode> balanceand/<gamemode> payfailed with a permission error for every non-op player. The commands set permissions likeinvswitcher.balance, whichCompositeCommandprefixes with the parent game mode's prefix, butaddon.ymlhad nopermissions:section — so those nodes were never registered with a default. They are now declared using BentoBox's[gamemode]placeholder: user commands default totrue, adminecocommands toop.⚙️ Missing game mode worlds added to the default config
[PR #61]
skygrid-world,raft_world,brix_worldandparkour_worldwere absent from the shippedworlds:list, so on a fresh install InvSwitcher silently did not manage them — with no log line to signal the gap. Existing configs are untouched, so servers already running these game modes need to add the entries by hand.📄 Documentation: do not run two inventory managers
[PR #60]
README section covering the disappearing-items symptom caused by running InvSwitcher alongside Multiverse-Inventories, PerWorldInventory or MultiInv, including the Multiverse-Inventories bypass-permission workaround and the two things that commonly mislead admins.
🏗️ Build and CI
[PR #63] [PR #62] [PR #59]
JaCoCo updated 0.8.12 → 0.8.15. 0.8.12 cannot read class file major version 69, so instrumentation failed with
Unsupported class file major version 69on the JDK 25 CI agent. The pinnedpublish-platforms.ymlreusable workflow was also bumped twice.Testing
mvn test— 128 tests, all passing on JDK 25 with the JaCoCo agent attached. Three newStoreTestcases cover the shutdown save path.🤖 Generated with Claude Code
https://claude.ai/code/session_0183f7bfWoU9rmXxRCRwvrAs