Adventure was the one gamemode nothing corrected: the policy never sanctioned it, but no enforcement point acted on that, so it stuck until the player's next login. onGameModeChange now cancels it in the worlds listed under restrict_adventure_worlds. Minigame worlds stay off that list because BuildBattle-OG, Duels-OG, and Spleef-OG put their players in adventure deliberately. config.yml is the only description of what this plugin reads. The defaults map was a second copy of that list in code, kept in step by hand, so the bundled config.yml is now the schema the deployed one is checked against. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
GameModeInventories-OG
Allow players to have separate inventories for each game mode (Creative, Survival and Adventure).
This is a TrueOG Network maintained soft fork of eccentricdevotion/GameModeInventories.
Changes from Upstream
- Build system migrated from Maven to Gradle (Kotlin DSL), Gradle 8.14.3, Shadow 8.3.9, Spotless with TrueOG Network's eclipse-based Java Formatting.
config.ymlis read-only at runtime — the plugin no longer mutates or rewrites it. A defaultconfig.ymlis copied into the plugin folder on first run if missing.- Compatible with NoClip-OG (1.3.0+). When
restrict_spectatoris enabled, players holding thenoclip.usepermission are exempt from the restriction so NoClip's creative/spectator toggle works without being cancelled or spamming chat. - Gamemode rules live in one place,
api/GameModePolicy, which every enforcement point in the plugin asks. It is published for other plugins so they enforce the same rule instead of reimplementing it: fetch it from the Bukkit services manager, or reflectively viaGameModeInventories#getGameModePolicy().mayUse(player, gameMode, location)answers for any gamemode; survival is always allowed, adventure never is. - Login is deferred to Spawn-OG when it is installed. It normalizes gamemode inside a safety transaction that also relocates the player, so forcing survival underneath it would race that transaction. Without Spawn-OG, GameModeInventories-OG still forces survival on join for creative players outside a creative region.
- Dropped LogBlock integration. Block-removal logging now runs exclusively through CoreProtect / CoreProtect-OG.
- Targets Purpur API 1.19.4 (Java 17, GraalVM toolchain).
This plugin (and the GMIDatabaseConverter plugin) are available for download as a single ZIP file from the GameModeInventories page on BukkitDev.
Warning
This version of GameModeInventories uses a different storage format when saving inventories from the legacy one. Before installing this version, you should first run the GMIDatabaseConverter plugin on your CraftBukkit 1.6.4 server to update your GameModeInventories database.
How do I update my GMI database?
Before upgrading your server to CraftBukkit 1.7.x and installing GameModeInventories version 2.x, you should run GMIDatabaseConverter on your 1.6.4 server.
- Install GMIDatabaseConverter.jar to the server's plugins folder
- Start the server
- The plugin will attempt to find and backup your old GameModeInventories database file
- It will then read the existing inventory data
- The existing data will be converted to the new format
- The new data will be written back to the database
- Once conversion is complete, you can update your GameModeInventories plugin to version 2.x and restart the server
- If you are satisfied that GameModeInventories version 2.x is functioning correctly, you can safely remove GMIDatabaseConverter
Why did you change the storage format?
The format change is a result of code changes removing the reliance on using net.minecraft.server and org.craftbukkit code directly within the plugin (instead of using only the Bukkit API). This led to the plugin breaking with every Minecraft/CraftBukkit update. These code changes mean the plugin should no longer break between versions.