Tags
Creators
Details
12.1.2
Compatibility
Changes
SimplexTrimmer 12.1.2
Major v11 rewrite, safer startup trimming, live MCA Selector progress & cleaner shutdown handling
SimplexTrimmer 12.1.2 is the current standalone release and a major redesign compared with the supplied 11.0-ULTIMATE build.
Important: This is a destructive world-maintenance tool. Make a complete, usable backup before every trim. The plugin does not create or verify backups for you.
🚀 Major changes from 11.0-ULTIMATE
- Replaced the old live-server trimming workflow with startup-only trimming.
- The legacy build kicked players, disabled world autosave, saved/unloaded chunks, ran MCA Selector, and then attempted a restart.
- Version 12 stores a one-shot maintenance job, shuts the server down normally, and performs destructive world edits during the next full startup before normal world loading continues.
- Added persistent v12 operational storage under
plugins/SimplexTrimmer/data-v12/. - Added persistent job state, archived jobs, per-target raw MCA Selector logs, administrator sessions and up to the configured number of history entries.
- Added recovery mode for failed or interrupted jobs instead of silently continuing as if everything completed successfully.
- Added world/session locking and an external ProcessGuard supervisor to reduce the risk of another process touching the same world while MCA Selector is running.
- Added legacy, split-Bukkit and modern namespaced dimension discovery.
- Added individual dimension targeting instead of treating every discovered
regionfolder as one generic world operation. - Added explicit terrain, POI and entity paths for MCA Selector.
- Added path validation and rejection of unsafe symbolic-link targets during automatic discovery.
- Added configurable extra world roots through
world-trimmer.additional-world-roots. - Added disk-space preflight checks, MCA Selector runtime/version checks and subprocess timeouts.
- Added a configurable MCA Selector heap and process-thread limit.
- Reworked the MCA Selector updater:
- Uses the official
Querz/mcaselectorGitHub release. - Verifies the GitHub-published SHA-256 digest before installing the tool.
- Installs the download atomically instead of directly replacing the active tool while it is still being downloaded.
- Uses the official
- Removed the old built-in bStats telemetry path. SimplexTrimmer 12.1.2 contains no telemetry module.
🎮 Interface & administration
- The complete SimplexTrimmer interface is now English:
- Java inventory menus
- Native Bedrock/Floodgate forms
- Command feedback
- Default maintenance messages
- Console output
- Bundled documentation
- Added optional native Bedrock forms through Floodgate while keeping Floodgate fully optional for Java-only servers.
- Added paginated dimension and history interfaces.
- Added persistent per-administrator selections and settings.
- Added
/trimworldadministration commands for scanning, updating MCA Selector, history, status, custom thresholds, cancellation, clearing selections, recovery and configuration reloads. - Existing
trimmer.adminpermission remains the primary administration permission and defaults to OP. - Added aliases
/simplextrimmerand/strimmer.
⏱️ Thresholds, countdowns & maintenance flow
- Preset thresholds remain available for 30 seconds, 1 minute, 3 minutes, 5 minutes and 10 minutes of
InhabitedTime. - Custom thresholds can be set with:
/trimworld ticks <20-1728000>
- The deletion filter remains strictly:
InhabitedTime < threshold- Chunks equal to the selected threshold are retained.
- Added immediate, 1-minute, 3-minute and 5-minute maintenance starts.
- Added public countdown messages, title overlays, sounds and countdown cancellation.
- Backup confirmation expires and is invalidated when relevant settings change or the server restarts.
🔒 12.1.1 — Paper STARTUP lock fix
- Fixed startup trimming failing with:
Could not acquire the world lock exclusively
- Paper may already own
session.lockin the same JVM when aSTARTUPplugin runs. This is now recognized as the expected protected state instead of being treated as an external lock failure. - Truly external world locks are still rejected.
- Locks acquired by SimplexTrimmer are kept for the complete destructive phase.
- ProcessGuard can continue supervising the MCA Selector child process and world-lock state if the parent process changes state.
- Added a dedicated guard lock to prevent duplicate trimmer supervisors from running at the same time.
- Jobs that failed in 12.1.0 from this exact preflight-only lock bug can be safely retried automatically when no target had started and no active guard remains.
📊 12.1.2 — Live console progress
- Added live MCA Selector progress reporting to the Paper/server console.
- Console progress can show:
- Active world/dimension
- Percentage
- Current/maximum region count when available
- Current
.mcaregion filename when available
- MCA Selector's carriage-return progress bar is normalized into clean one-line English console messages.
- Duplicate redraws are suppressed so the console does not get flooded by identical progress lines.
- A heartbeat/status line is emitted after a quiet period when MCA Selector is still working without a new visible percentage update.
- Full, unmodified MCA Selector output continues to be stored in the per-target log files under
data-v12/logs/for troubleshooting. - Target completion output now includes reclaimed space and elapsed time.
Example console output:
[MCA Selector 1/3] world | 12% | 24/200 regions | r.-3.2.mca
[MCA Selector 1/3] world | 42% | 84/200 regions | r.-2.5.mca
[MCA Selector 1/3] world | 100% | 200/200 regions | r.4.3.mca
[Trim 1/3] Completed | world | Reclaimed: 6.81 GiB | Elapsed: 2m 14s
🛑 12.1.2 — Manual-stop fallback
- Added a shutdown/restart watchdog.
- After a maintenance job is safely queued, SimplexTrimmer requests the configured normal server stop/restart.
- If Bukkit has not begun normal plugin shutdown within
world-trimmer.shutdown-warning-seconds(default: 30 seconds), the console prints a clear English warning:
SERVER STOP REQUIRED
The server could not be stopped automatically. Please stop it manually from your hosting panel or server console.
The trim job is already saved and will start automatically on the next full server startup.
- The watchdog is daemon-only and cannot keep an otherwise successful JVM shutdown alive.
- If normal Bukkit shutdown has already started, the warning is not emitted just because saving a large server takes longer.
🧰 Commands
| Command | Purpose |
|---|---|
/trimworld |
Open the automatic Java/Bedrock administration menu |
/trimworld java |
Force the Java inventory menu |
/trimworld scan |
Rescan dimensions and sizes |
/trimworld update |
Download and verify the latest supported official MCA Selector release |
/trimworld ticks <20-1728000> |
Set a custom InhabitedTime threshold |
/trimworld clear |
Clear the current administrator's dimension selection |
/trimworld history |
Open saved trim history |
/trimworld status |
Show the current maintenance state; console supported |
/trimworld cancel |
Cancel an active countdown before shutdown |
/trimworld recovery CONFIRM |
Release recovery after manual inspection |
/trimworld reload |
Reload configuration while the trimmer is idle |
Permission: trimmer.admin — defaults to OP.
⚠️ Upgrade notes
- Stop the server completely before replacing the plugin JAR.
- Remove the old SimplexTrimmer JAR before installing
SimplexTrimmer-12.1.2.jar. - Keep a full backup of all worlds and plugin data.
- Existing v11 operational state is not migrated into
data-v12/. - Bukkit preserves an existing
config.yml; newly added settings therefore use current defaults unless you copy them into your configuration manually. - Reinstall/update MCA Selector from the new SimplexTrimmer interface after upgrading from old v11 data.
- If SimplexAdminSuite also contains an integrated world trimmer, disable that module so two trimmers cannot manage the same worlds.
- The default
STOPmode is recommended for hosting panels. Your panel must start the server again after the stop.RESTARTdelegates to Spigot's configured restart mechanism. - Allow a long enough startup/health-check timeout. Large worlds can require significant time to trim.
- Never force-kill MCA Selector during a destructive run unless you are prepared to inspect/restore the affected world from backup.
⚠️ Important limitations
InhabitedTimeis accumulated chunk activity. It is not a claim, building, spawn or importance detector.- There is no automatic Lands, WorldGuard, GriefPrevention or other claim-system protection.
- The plugin does not create backups and cannot guarantee a specific amount of reclaimed disk space.
- A failed run may be partially completed if earlier targets were already processed. Review the logs and restore your backup when necessary.
- Native Bedrock LevelDB worlds are not supported. Bedrock players can use the plugin menus on a Java server through Geyser/Floodgate.
- Folia, Fabric, Forge and proxy-only environments are not supported as trimming targets.
- MCA Selector is a separate external tool and is not bundled inside SimplexTrimmer.
🔧 Compatibility notes
- Loader: Paper / Paper-derived Bukkit servers where the required APIs are available.
- MCA Selector: 2.9 or newer is required by the current workflow.
- MCA Selector 2.9: requires Java 21 or newer.
- The SimplexTrimmer plugin classes are compiled to Java 17 bytecode, but the Java requirement of your Paper server takes precedence.
- Floodgate is optional and only required for native Bedrock forms.
Credits
World editing is performed locally by MCA Selector, developed by Querz and contributors:
https://github.com/Querz/mcaselector
SimplexTrimmer does not upload your world data to an external trimming service.
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:P1jef5fq:41uRKVd2"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:P1jef5fq:41uRKVd2"
}

