Sable: Destructive

Sable: Destructive makes Sable physics blocks actually break. Real kinetic energy, inertial penetration, density-aware self-damage, radial shockwaves on heavy hits — fast hammers dig deep into dirt, soft hammers shatter against stone, big drops radiate.

File Details

Initial Release

  • R
  • Apr 25, 2026
  • 171.23 KB
  • 18
  • 1.21.1
  • NeoForge

File Name

sabledestructive-1.0.0.jar

Supported Versions

  • 1.21.1

Curse Maven Snippet

NeoForge

implementation "curse.maven:sable-destructive-1524595:7982809"
Curse Maven does not yet support mods that have disabled 3rd party sharing

Learn more about Curse Maven

First public release of Sable: Destructive — a NeoForge 1.21.1 add-on for Sable that finally lets physics blocks break.

Core mechanics

  • Universal collision callback wired into every Sable physics block.
  • Real kinetic-energy model (mass × v²) decides the outcome of every impact.
  • Two destruction modes:
    • DETACH (~90%) — affected blocks break off as a smaller independent physics sub-level and keep flying.
    • VANISH (~10%) — blocks pulverize into particles + sound when energy exceeds the material's pulverize threshold.
  • Outcome is biased by physics: energy ratio, brittleness, and a safety speed ceiling — chances only set the baseline tendency.
  • Cluster detach: blocks can break off in chunks, not strictly one at a time.

Block data

  • Full mass + toughness table for all 1.21.1 vanilla blocks.
  • Modded blocks default to a fragile clay-tier (clamped to 80–1500 kg, ≤6 m/s break speed) so unknown blocks never become indestructible bricks.
  • F3 + H tooltip shows "Mass: X kg" and "Impact strength: Y m/s".

Explosions and terrain

  • TNT, creepers, end crystals and other vanilla explosions now damage Sable sub-levels through the same path.
  • World terrain is also affected, but only via VANISH (never DETACH), so the world never turns into a runaway physics sim.
  • Bedrock, barriers, unbreakable blocks and block entities are skipped on the terrain path.
  • Toggle terrain damage with the affectOnlySubLevelBlocks config flag.

Visual + audio (fancy VANISH effect)

  • 3-layer particles: block-dust with the actual block texture, POOF, and CRIT chips.
  • Block break sound + soft "whump".
  • Per-tick budgets: 600 particles, 32 effects.
  • Spatial + temporal dedup so big simultaneous breaks don't audio-clip.
  • Auto-scaling under backpressure; falls back to vanilla levelEvent(2001) if overloaded.
  • Toggle with effects and fancyVanishEffect config flags.

Stability and crash safety

  • Lock-free offer queue with atomic size counter and epoch-XOR dedup ring (8192 entries).
  • Per-tick offer cap (1024) to keep the hot path bounded.
  • DETACH is always deferred to a safe inter-tick window — never executed while Sable's physics system is mid-step (this was the historic native-crash trigger).
  • Snapshot + rollback, global crash guard, shutdown hook, emergency disable.
  • NaN / Inf sanitisation on all impact data and kick velocities.
  • Cluster BFS strictly stays within one parent sub-level — no cross-boundary clusters.
  • Lifecycle reset on server start / stop / level unload.

Runtime control (op level 2)

  • /sable-dv on | off | toggle | status
  • /sable-dv config list
  • /sable-dv config get <name>
  • /sable-dv config set <name> <value>
  • /sable-dv config reset <name>
  • All tunables are reflected automatically with type coercion and tab-suggest.

Defaults

  • enabled = true
  • chanceDetach = 0.90, chanceVanish = 0.10, physicsBiasStrength = 0.6
  • pulverizeEnergyRatio = 6.0, cleanDetachEnergyRatio = 1.5
  • minBreakSpeed = 6.0, absoluteMaxSpeed = 350, detachSafeSpeedCeiling = 100
  • maxDetachesPerSecond = 8, maxActiveDetachedSubLevels = 48, detachCooldownMs = 25
  • affectOnlySubLevelBlocks = false
  • effects = true, fancyVanishEffect = true

Requirements

  • Minecraft 1.21.1
  • NeoForge 21.1.227+
  • Sable 1.1.3+

Credits

  • Code: Xylos_Official
  • Visuals: Viaquelt
  • Built on top of Sable by ryanhcode

License

  • MIT