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

Addon API + Persistent Config + Inertial Penetration

  • R
  • Apr 25, 2026
  • 188.30 KB
  • 11
  • 1.21.1
  • NeoForge

File Name

sabledestructive-1.1.0.jar

Supported Versions

  • 1.21.1

Curse Maven Snippet

NeoForge

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

Learn more about Curse Maven

This is a big quality-of-life pass on top of 1.0.0. The destruction system now feels meaningful instead of cosmetic: a heavy hammer actually digs into the ground, dirt yields deeper craters than stone, modded blocks have a clean integration path, and every tunable you change at runtime survives a server restart.

New — Inertial Penetration

  • Impacts no longer stop at the first block. The attacker's kinetic energy is drained block-by-block along the motion direction by each consumed block's break cost (0.5 · m_def · v_threshold²).
  • An obsidian hammer punches a deep crater into dirt and only chips the surface of stone — automatically, no per-block scripting.
  • Chain-broken blocks always VANISH. Only the FIRST contact block may DETACH, because spawning new sub-levels mid-walk is the historic native-crash trigger and is intentionally forbidden here.
  • Stops on tile entities, indestructible blocks, world bounds, energy exhaustion, or maxPenetrationDepth.
  • New knobs: inertialPenetrationEnabled (default true), maxPenetrationDepth (16), penetrationEnergyMultiplier (1.0), defaultAttackerMassKg (2000.0).

New — Public Addon API

  • com.destroynautics.sabledestructive.api.SableDestructiveAPI lets other mods register their own blocks into the destruction system with custom mass and toughness — no more falling back to the fragile clay-tier default for unknown modded blocks.
  • Register by Block instance (type-safe) or by ResourceLocation (works even if the target Block class isn't loaded — ideal for optional cross-mod compat).
  • Tier presets matching the internal scale: PAPER, LEAF, EARTH, CLOTH, SOFT, CLAY, WOOD, STONE, HARD_STONE, METAL_SOFT, METAL, GEM, OBSIDIAN, NETHERITE, REINFORCED, UNBREAKABLE.
  • registerUnbreakable(Block / ResourceLocation) — bedrock-equivalent shortcut.
  • Read-only queries: getMassKg, getBreakSpeedMs, getToughnessUnits — useful for your own tooltips or ballistics.
  • isRegistered / unregister for runtime control.
  • Thread-safe, idempotent, last-write-wins.
  • API_VERSION = 1, covered by SemVer. Anything outside the api package is internal and may change without notice.

New — Persistent Config

  • Tunables now live in config/sabledestructive-common.toml. Every value set via /sable-dv set … survives server restarts.
  • Live auto-reload: edit the TOML on disk and the change applies within ~250 ms — no restart, no command, no reconnect.
  • /sable-dv config reset now actually restores defaults (was a no-op in 1.0.0).
  • Config writes are debounced and the watcher ignores its own writes, so toggling values from chat doesn't trigger a redundant reload.

New — Hand-Tuned Block Table

  • ~70 of the most relevant 1.21.1 blocks — every wood species and the full stone family — carry their own hand-tuned mass and toughness rather than being lumped into a generic "wood" or "stone" bucket.
  • Cherry is softer than oak. Mangrove is denser than spruce. Mossy bricks crack a hair sooner than fresh ones. Slabs, stairs, walls, fences, doors, trapdoors, signs and pressure plates each get their own entry.
  • All other vanilla blocks continue to use the existing classification pipeline (tag → registry path → vanilla material), so behaviour is unchanged for blocks not in the override table.

Tweaks

  • Modded blocks default break-speed halved (2.0 m/s → 1.0 m/s) — even more fragile than vanilla leaves, encouraging addons to register explicit values via the new API.
  • Modded max break-speed cap halved (V_CLAY → V_CLAY / 2) — modded blocks can no longer silently rival vanilla wood without explicit registration.

Tooltip

  • F3+H now shows "Toughness: N units" instead of "Mass: X kg / Impact strength: Y m/s". Mass is no longer surfaced in the tooltip — it's an internal physics input, not a durability measure. N = break-speed × 10.

Documentation

  • Full API documentation added to the long Modrinth description, including a soft-dependency setup snippet for neoforge.mods.toml.
  • New sections covering Persistent Config, the Block Toughness table, and Inertial Penetration semantics.

License

  • Switched from All-Rights-Reserved to MIT.

No breaking changes for end users. Existing 1.0.0 worlds load as-is. Disable inertial penetration with /sable-dv set inertialPenetrationEnabled false to restore the pre-1.1.0 "one block per contact" behaviour.

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