v3.1.0 Block Destruction Overhaul
Curse Maven Snippet
What's new
v3.1.0 — Block Destruction Overhaul
The biggest cleanup pass to the destroy/restore pipeline since physical breaching landed. Every path that mutates blocks (breachers, sappers, camp/ladder/bridge builders) now runs through a single utility that snapshots what it touches and restores it exactly on raid end — including chest contents and sign text.
Fixed
- Sappers no longer leave permanent holes. Before v3.1.0, sapper detonations called
level.destroyBlockdirectly and never registered the removed blocks in the restore ledger. Every sapper hole was gone forever. Now every sapper removal goes through the samebreachedBlockssnapshot the breacher path uses. - TNT sapper mode is no longer a griefing hazard. The vanilla-TNT branch previously spawned real primed TNT with block-destroying interaction, so a sapper could flatten dirt, stone, chests, and player builds in radius. Replaced with a whitelist-gated scan-and-remove that keeps the boom character (cosmetic explosion + slightly larger radius) but only touches doors/gates/fences/bars/walls.
- Tile-entity NBT survives breach and repair. Breaching a chest, sign, lectern, or banner used to restore an empty version. State + block-entity NBT are now captured together and rehydrated on restore.
- Camp cleanup restores the ground it overwrote. The mod places fences, banners, campfires, planks, ladders, bridge decking. Before v3.1.0 cleanup cleared these positions to air, so a camp on a grass field left a grid of air holes and a bridge over water left a canyon of air where the water should be. The original block is now snapshotted at placement and restored at cleanup — grass, dirt, gravel, logs, water, whatever was there.
Added
- Walls are breachable (reinforced tier). Cobblestone walls, stone-brick walls, and modded wall variants join the breachable whitelist. Same time cost as iron doors. Fixes the "wall in front of the gate is invincible" exploit.
- Camp cleanup preserves player-replaced positions. If a player broke one of the mod's placed blocks and put their own block in that spot, cleanup leaves it alone. Log-only telemetry — no chat spam.
Changed
RaidState.campBlocksis nowMap<Long, CompoundTag>(wasMap<Long, String>). Load path auto-migrates pre-3.1.0 entries with an empty Original tag (treated as air, matching old behavior).- Sapper detonation now takes the RaidState so it can write to the shared ledger.
- Save format keeps the legacy flat
Blockstring alongside the newRecordtag for one-version downgrade compatibility.
Migration
Existing worlds load cleanly on v3.1.0+. No user action needed.
Config
No new keys. Existing keys (enableRestorableGateBreaching, maximumRestorableBlocks, restoreBreachedBlocks, woodenBreachSeconds, reinforcedBreachSeconds, sapperModeVanillaTnt, cleanupWarCamps) all continue to behave as documented, now with correct scope across breachers and sappers.
All Relations
- All Relations
- Embedded Library
- Optional Dependency
- Required Dependency
- Tool
- Incompatible
- Include

