All versions
3.1.0
Release
Dimension Toggle 3.1.02 weeks ago 76
Compatibility
Minecraft: Java Edition
26.3
26.2
26.1.x
1.21.x
Platforms
Paper
Purpur
Changes
DimensionToggle 3.1.0
A big stability, performance and usability update since 3.0 โ built and tested for servers with up to 300 concurrent players.
โจ New & improved
- Redesigned in-game editor (
/dt editor): gradient titles, small-caps headers, consistent status colors (green โ on, gray โ off, gold for warnings/values), and glowing buttons for active toggles. The main menu is now a clean 4-row layout. - Custom maintenance time now uses a real anvil: rename the paper to e.g.
1h30mand click the result. - Schedule times are more forgiving:
"22:00",22:00without quotes,8:00and"24:00"(midnight) all work. Invalid times are reported once in the console. - PvP toggle is now saved and survives restarts.
- End Gateways show their own "gateway blocked" message.
- Blocked-portal messages are limited to once every 2 seconds instead of spamming players standing in a portal.
- New messages
gateway-blockedandplayers-only(EN + DE), added to existing language files automatically.
๐ Bug fixes
- Schedule didn't fire when times were written without quotes, or when a lag spike skipped the exact second.
- Schedule no longer lifts a lockdown: scheduled openings are skipped while a lockdown is active.
- Crash-safe saving: a crash during saving could wipe
data.yml, so disabled dimensions reopened and lockdowns disappeared. Files are now written atomically, and an unreadabledata.ymlis backed up asdata.yml.corrupt-<date>instead of being overwritten. - Item duplication in the editor: items could be dragged out of menus, and menus stayed open (unprotected) after a plugin reload. Both fixed.
- Menus no longer switch inside the click event (no more ghost items).
- Mob cleanup no longer removes mounts with a player on them โ no more falling into lava when a strider vanishes.
- Soft-lock with
broadcast-scope: "dimension"now notifies the players inside (it notified nobody before). - The portal listener respects portals already blocked by other plugins.
- Huge maintenance durations no longer cause an internal error.
- The player list and maintenance menu no longer throw errors with older GUI configs.
- The world border "maximum" preset now actually works.
- Update checker: no more thread leak or duplicate notifications, and
/dt reloadapplies its settings.
โก Performance (300 players)
- All file writes (data, config edits, logs) run off the main thread.
- Lockdown, maintenance and schedule move players out in batches (20 per tick) instead of all in one tick.
- Broadcasts are parsed once and reused for every player, and editor texts are cached.
- Cheaper player and chunk counting, a single entity pass for mob cleanup, staggered background tasks, and dashboard stats computed only while the dashboard is open.
โ ๏ธ Notes
- Requires Paper (or Purpur) 1.21.x with Java 21. Spigot/Bukkit are not supported.
- New top-level config sections are added automatically. New options inside existing sections are not, so compare with the default config if you want to use them.
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:lhiNWAYH:1IIu2ADO"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:lhiNWAYH:1IIu2ADO"
}

