## Build 2872 — 2026-09-23
**Branch:** `update/paper-26.0.x`
Performance + stability pass based on Spark profiles from a busy production server. No cargo/android behavior changes.
### Fixed
- **Sound crash:** Legacy `sounds.yml` Bukkit enum names are now migrated to valid namespaced sound keys.
- **Deferred inventories:** Entries are now removed when blocks are destroyed and moved correctly when blocks move.
- **Auto-reporter noise:** Skips addon linkage errors and plugin lifecycle failures.
- **Daily reporter limit:** Maximum **2 automatic reports / rolling 24h** per server.
### Performance
- **BlockStorage:** `getRawStorage()` now uses a lazy cached snapshot instead of rebuilding the entire world map every call.
- **Cargo:** Avoids unnecessary tile-entity/container state copies on hot paths.
- **Cargo filters:** Removes debug varargs allocations when debug logging is disabled.
- **Cargo distribution:** Reuses `ItemStackWrapper` until the stack amount changes, avoiding unnecessary `ItemMeta` clones.
### Investigated
- Cargo filter routing and Woodcutter/Programmable Android ticking are legitimate workload; no safe optimization found without changing behavior.
- Reverted unsafe `distributeItem` wrapper hoist because it could freeze stack amounts and change machine slot selection.
**Result:** Lower allocations and server-thread overhead while preserving existing cargo, android, and machine behavior.
Developer information
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle.
maven { name = "Modrinth"; url = "https://api.modrinth.com/maven" }