Unofficial site, not affiliated with modrinth.com.What is this?
Плагины/WorldSlim

WorldSlim

A lightweight chunk save optimization plugin for Paper servers. WorldSlim reduces your world file size by automatically cleaning up chunks that players have barely visited.

33
0

WorldSlim 2.0.1

release29 апреля 2026 г.

WorldSlim 2.0.1

Minor release. Quality-of-life improvements on top of 2.0.0. Drop-in upgrade — no manual steps required from 2.0.0.

Two focused changes that make 2.x easier to operate: configs auto-update across versions, and /worldslim chunk now explains exactly why each chunk is kept or deleted.


What's New

Config Migration

Adds a config-version field to config.yml. On every plugin reload, the migrator walks the jar's default config and copies any missing keys into your on-disk file.

  • User-edited values are preserved (your min-inhabited-time: 1500 stays 1500)
  • Existing comments survive the load + save round-trip
  • New keys arrive with their default comments attached
  • Original file is backed up to config.yml.bak.v<old> before any mutation
  • If migration fails for any reason, the original is restored from backup automatically

This means future updates that introduce new config sections (e.g. v2.1 will add worlds.overrides) will not require manual edits — your existing config gets the new fields appended on first reload, with their defaults and documentation intact.

/worldslim chunk — Full Decision Tree

The previous output (one line "would be kept: yes/no") only looked at InhabitedTime and gave misleading answers. The new output shows every signal that affects the cleanup decision plus four verdicts mirroring the actual runtime behavior:

=== Current chunk decision path ===
[123, -456] @ world
--- State signals ---
managed (registry): yes
managed (PDC): no
pre-existing (PDC): no
force-save (registry): no
force-save (PDC): no
loaded (now): yes
InhabitedTime: 340 ticks (17s) < 1200 threshold
aggressive mode: OFF
--- Verdicts ---
> Current (loaded): KEEP (loaded chunks are always protected)
> Hypothetical unloaded, aggressive=OFF: DELETE (low InhabitedTime, no force-save, not loaded)
> Hypothetical unloaded, aggressive=ON:  DELETE (low InhabitedTime, no force-save, not loaded)
> ChunkUnloadListener:                   BLOCK SAVE (low InhabitedTime, NMS unsaved=false)

The decision logic is taken directly from ChunkCleaner.rewriteRegionFile and ChunkUnloadListener.onChunkUnload, so what you see here is what would actually happen at cleanup or unload time. The plugin's actual chat output is localized (Simplified Chinese in 2.0.x); the structure shown above mirrors it 1:1.


Compatibility

  • From 2.0.0: drop-in. Migration only adds the config-version: 2 marker; nothing else changes because v2.0.0 already had all the current fields.
  • From 1.x: drop-in. Migration auto-injects cleanup.aggressive, autosave-shield.*, and logging.* with their defaults and comments. Your config.yml.bak.v1 keeps the original file safe.
  • Server forks: unchanged from 2.0.0 — Paper / Purpur / Folia / Leaves / Leaf 1.21.x all supported.

Requires Minecraft 1.21.x and Java 21.


Verification

End-to-end tested on Leaf 1.21.11 with a synthesized v1 config (no config-version, no aggressive, no autosave-shield, no logging):

CheckResult
6 user-edited values preservedYes
8 missing fields injected with defaultsYes
Comments preserved on existing keysYes
Comments attached to newly-added keysYes
Backup written to config.yml.bak.v1Yes
/worldslim chunk decisions match ChunkCleaner runtimeYes

Reporting Issues

When filing a bug, please include:

  • /worldslim diagnose screenshot
  • /worldslim chunk output for an affected chunk
  • Latest log from plugins/WorldSlim/logs/
  • Server type and version (Paper / Leaf / etc.)

WorldSlim 2.0.0-beta

beta20 апреля 2026 г.

WorldSlim 2.0.0-beta

Beta release — architectural overhaul. Back up plugins/WorldSlim/ before upgrading from 1.x.

Major rewrite to properly handle MC 1.18+ chunk behavior. 1.0.x worked by intercepting chunk unloads, but modern MC keeps chunks loaded much longer and autosave writes them to disk before any unload event fires. This version rebuilds the architecture around that reality.


What's New

File-Based Chunk Registry

Managed and force-save chunk states are now stored in plugins/WorldSlim/data/ instead of the chunk's PersistentDataContainer.

Why it matters: Leaf / Moonrise silently strips Bukkit PDC data when chunks are saved — on 1.0.x this caused the cleaner to see every chunk as "pre-existing" and delete nothing. The registry survives restarts and doesn't depend on server fork behavior.

  • In-memory ConcurrentHashMap with O(1) lookups
  • Async flush every 30 seconds, synchronous flush on shutdown
  • Crash-safe: lost marks degrade to pre-existing (never accidentally deleted)
  • Works identically on Paper, Purpur, Folia, Leaves, and Leaf

AutosaveShield

A background task that periodically resets the NMS unsaved flag on loaded low-inhabited managed chunks, so autosave skips them.

  • Runs every 2 seconds by default (configurable)
  • Targets only chunks that are managed + low InhabitedTime + not force-saved
  • On supported cores (Paper, Purpur), it achieves zero disk writes for pure-exploration chunks
  • Limited effect on Moonrise (it has its own dirty tracking); pair with aggressive mode below

Aggressive Mode

Set cleanup.aggressive: true in config.yml to restore pre-1.0.6 behavior: any chunk below the InhabitedTime threshold without force-save gets cleaned, regardless of managed status.

  • Recommended for fresh servers — cleanup rate jumps back above 90%
  • Not recommended for established worlds with builds on briefly-visited chunks (signs, dust, fast stops) — those may have low InhabitedTime and would be deleted

Diagnostics

  • /worldslim diagnose [here] — full runtime snapshot (event counts, marking sources, unload decisions, cleanup breakdown, registry totals). Add here to inspect the chunk you're standing in.
  • /worldslim scan — dumps the NBT structure of your current region file so you can verify whether PDC actually persists on your server fork.
  • File logger at plugins/WorldSlim/logs/worldslim-YYYY-MM-DD.log, daily rotation, level-configurable.

Fixes

  • Paper 1.20.5+ NBT key compatibility — chunk PDC was renamed from BukkitValues to ChunkBukkitValues; 1.0.x never recognized it. The parser now accepts both.
  • Main-thread deadlockgetLoadedChunks() could block forever and latch the "cleanup in progress" state. 5-second timeout added; timeouts safely skip the world.
  • Registry / disk drift — removal marks are now deferred until the region rewrite atomically commits. Aborted rewrites no longer corrupt the registry.
  • Windows region-file loss — three-tier fallback switched to a backup-rename pattern; any failure is now recoverable.
  • NPE on post-rewrite timeout — the loaded-chunks recheck no longer crashes when the callback times out.
  • /worldslim scan server freeze — removed the synchronous World.save() call that stalled the server for seconds.
  • /worldslim cleanup misleading message — now correctly reports "cleanup skipped: another run is in progress" instead of falsely claiming completion.
  • Large-world cleanup slowdowns — removed per-region main-thread round-trip; saves hundreds of synchronization bounces per run.

Compatibility

ServerPDC PersistenceRegistryAutosaveShield
Paper 1.21.x
Purpur 1.21.x
Folia 1.21.x⚠️ partial
Leaves 1.21.x
Leaf 1.21.x❌ strippedload-bearing⚠️ limited

Requires Minecraft 1.21.x and Java 21.


Upgrade from 1.x

  1. Back up plugins/WorldSlim/ (config + any future data).
  2. Replace the jar with WorldSlim-2.0.0-beta+mc1.21.x.jar.
  3. Restart the server. The plugin will append new config fields (cleanup.aggressive, autosave-shield.*, logging.*) to your existing config.yml.
  4. On fresh worlds, set cleanup.aggressive: true for best cleanup rate.
  5. On established worlds, keep aggressive: false and trust the registry to track new chunks going forward.

Reporting Issues

When filing a bug, please include:

  • /worldslim diagnose screenshot
  • /worldslim scan output from the affected world
  • Latest log from plugins/WorldSlim/logs/
  • Server type and version (Paper / Leaf / etc.)

WorldSlim 1.0.6

release20 апреля 2026 г.

Fixed data-loss bug from v1.0.5 and earlier on existing worlds.

Fixes:

Force-save PDC flag is now permanent (was one-time, causing ChunkCleaner to delete force-saved chunks after first save cycle) Pre-existing chunks (generated before plugin install) are now permanently protected from cleanup via a new managed-chunk tag New chunks are marked via ChunkPopulateEvent and only those are subject to cleanup Known issues (addressed in v2.0.0-beta):

Leaf/Moonrise strips chunk PDC on save; managed tag was lost after restart Paper 1.20.5+ renamed BukkitValues to ChunkBukkitValues; NBT parser missed it ChunkCleaner could deadlock waiting for main-thread callback on busy servers

WorldSlim 1.0.5

release20 апреля 2026 г.

Added container-open trigger to protect looted structure chunks.

Features at this version:

InhabitedTime-based chunk cleanup (region rewrite) Force-save triggers: block place/break, entity damage, item pickup/drop, container open Configurable trigger ranges Known issue: Reports of data loss when installed on existing worlds and restarted — fixed in v1.0.6+ via pre-existing chunk protection.

WorldSlim 1.0.4

release20 апреля 2026 г.

Incremental improvement release.

Совместимость

Minecraft: Java Edition

1.21.x

Платформы

Поддерживаемые окружения

Сервер

Создатели

Детали

Лицензия:LicenseRef-All-Rights-Reserved
Опубликован:3 месяца назад
Обновлён:2 недели назад
Главная