Hotfix for "модовые блоки не ломаются" — the callback was silently
skipping every block with an attached `BlockEntity`, which is the
overwhelming majority of modded machinery (Create cogwheels and
shafts, Mekanism cables, Applied Energistics buses, every chest /
furnace / hopper, etc.). That made the addon visually a no-op
against most non-vanilla builds.
Why it was skipped originally
- Pre-1.6.1 the callback assumed BE teardown was always fragile —
Sable's sub-level assembler doesn't preserve BE NBT cleanly, and
peeling a half-built contraption can corrupt its kinetic-network
state on the modded side.
What changed
- `allowBlockEntityBreaks` (new, default `true`). BE-bearing blocks
ARE now broken on contact. The block is removed via an explicit
`level.removeBlockEntity(pos)` BEFORE the `setBlock(AIR)`, so the
BE's saved NBT is discarded cleanly and no vanilla on-remove
side-effect can throw out of the callback.
- `allowBlockEntityDetach` (new, default `false`). Even when BE
breaks are allowed, the outcome is forced to VANISH — never
DETACH. Reason: Sable's assembler doesn't carry BE NBT into the
new sub-level, so peeling a Create gearbox would instantly
desync its kinetic network. VANISH discards the BE cleanly. Set
to `true` if you want the experimental "peel BEs too" behaviour
(expect cosmetic issues on Create/Mekanism).
- `safeSetAir` now explicitly removes any attached BlockEntity
before airing the cell. Catches any throwable from the BE's own
remove handler (Create kinetic teardown, Mekanism cable rebuild,
etc.) so a third-party mod's on-remove bug can never escape into
Sable's native bridge.
Compatibility
- Set `allowBlockEntityBreaks=false` in
`config/sabledestructive-common.toml` to restore the pre-1.6.1
"skip every BE block" behaviour.
- All other 1.6.0 knobs and behaviour unchanged.
Requirements
- Minecraft 1.21.1, NeoForge 21.1.227+, Sable 1.1.3+
MIT License
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" }