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
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