sophisticatedbuilding-fabric-4.1.0
Curse Maven Snippet
What's new
Sophisticated Building Update – 4.1.0
Supported versions
- Minecraft 1.21.1
- NeoForge (see
gradle.propertiesneo_versionin the NeoForge project) - Fabric Loader + Fabric API (see Fabric project
gradle.properties) - Sophisticated Backpacks / Sophisticated Storage — Fabric now compiles and runs against the real 1.21.1 unofficial Fabric ports (Sophisticated Core 1.2.9.21.168, Sophisticated Backpacks 3.23.4.3.106, Sophisticated Storage 1.3.7.9.139); NeoForge continues to use the official Modrinth port (Sophisticated Core 1.4.38.1847, Sophisticated Backpacks 3.25.44.1736).
Artifacts
sophisticatedbuilding-neoforge-<version>.jar— NeoForgesophisticatedbuilding-fabric-<version>.jar— Fabric
Major changes
Survival mass breaking (Fabric + NeoForge)
The mod could previously only place blocks in bulk; breaking in bulk only worked in Creative. That is now fixed:
- How to break at all: hold a non-block item (a tool, or nothing) and the crosshair outline turns red instead of the placing outline — left-click to break. Multi-click build modes (Line, Wall, Floor, Fill, Filter, Diagonal Line/Wall...) work exactly the same way for breaking as they already do for placing.
- Survival is now supported, with rules chosen to match vanilla balance:
- You need a suitable tool: in your main hand, hotbar, main inventory, offhand, or inside a backpack that has an enabled Tool Swapper or Advanced Tool Swapper upgrade whose mode is not "No swap" (Advanced Tool Swapper's item filters are respected).
- Durability, drops, and hunger cost are exactly like vanilla mining (
mineBlock,Block.getDrops,causeFoodExhaustion). Silk Touch and Fortune apply normally. - A block that requires the correct tool for its drops (e.g. a pickaxe for ore) is only ever broken by a correct tool — a wrong-tier tool skips that block instead of destroying it without its drops.
- Tools are never broken by the mod: a damageable tool with 1 use left is skipped in favour of the next candidate.
- Unbreakable blocks (bedrock, etc.) are always skipped. Hardness-0 blocks (grass, torches, redstone dust, ...) are broken with the empty hand for free, exactly like vanilla.
- A short mining delay applies (up to 2 seconds per operation, scaling with how long vanilla mining would take for the blocks and tools involved) — mass-breaking is not instant in survival. Creative stays instant. An on-screen countdown with a progress bar shows how long until the blocks break, and the estimated time is shown next to the tool icons before you click; the red outline stays on the selected blocks until they break.
- Spawn protection and adventure-mode restrictions are respected; all the existing survival
limits (blocks per click/axis, reach by power level,
allowInSurvival, whitelist, protected tile entities) are unchanged.
- HUD: while breaking in survival, the tools that will be used are shown near the crosshair with the number of blocks each will take; a red barrier icon shows the count of blocks that cannot be broken with anything currently available. Those un-breakable blocks are outlined in grey instead of red in the preview.
- Build-mode breaking replaces vanilla mining while a build mode is active — the mod's rules above apply, in Creative and Survival alike. Switch to Disable mode (radial menu or its keybind) for plain vanilla mining/placing.
Disable mode fix
- Disable mode is now re-synced to the server every time you join a world, so it can no longer get stuck blocking vanilla placing/breaking after a rejoin (the client's Disable/build-mode and quick-replace state used to only be sent when changed in-game, never on join).
Building Upgrade actually works now (Fabric + NeoForge)
The Building Upgrade (installed as a Sophisticated Backpacks upgrade item) previously had no effect: blocks could not be placed from the backpack even with the upgrade installed and enabled. Root-caused and fixed:
- Worn backpacks are now found. Backpacks worn in a Trinkets/Accessories/Curios slot (not just
held or in the main inventory) are now scanned via Sophisticated Backpacks'
PlayerInventoryProvider.runOnBackpacks, which already covers main inventory, offhand, the worn chest slot, and any compat layer (Trinkets/Curios) the backpacks mod itself registers. - The server is now authoritative for upgrade state and backpack counts. The client no longer
ever inspects a backpack's upgrade inventory directly — that inventory is not reliably synced to
the client outside of an open backpack menu, so the client's own item-availability check could
silently drop backpack blocks before they ever reached the server. A new
BuildingUpgradeStatePacketsyncs the player's best upgrade tier and effective max-blocks limit on join, respawn, dimension change, and whenever it changes; a new per-item backpack count sync carries the unclamped total, with the client applying the synced max-blocks clamp itself (Fabric) or gating access the same way (NeoForge, which keeps its existing non-clamping "tier only gates access, doesn't cap the amount" semantics). - Enabling/disabling the upgrade is now reliable.
BuildingUpgradeWrappernow extends Sophisticated Core'sUpgradeWrapperBaseinstead of managing its ownenabledflag, so toggling the upgrade (from our tab or Core's own per-slot switch) refreshes Core's internal upgrade-type cache immediately instead of only after an unrelated slot change. Migration note: because of this, a Building Upgrade you had previously turned off will come back enabled after updating (the old custom-tag flag is no longer read). - The Building Upgrade settings tab now has its own title ("Building Upgrade" instead of reusing "Modifier Settings") and shows the upgrade's tier and max-blocks limit.
Radial build menu (Alt key)
- Fixed: rebinding the radial-menu key to something other than the default now works — the menu no longer falls back to checking a hard-coded Left Alt while a screen is open.
- Fixed: opening the radial menu (to change an option, undo/redo, or just look) no longer discards an in-progress multi-click build. The build is only cancelled when the build mode itself is actually changed.
Line Thickness and Diagonal Wall fill (previously advertised, not implemented)
- Line and Diagonal Line now support the Line Thickness option (1/3/5 blocks wide) that was already documented and had UI/icons but no effect.
- Diagonal Wall now supports Hollow/Filled: Hollow keeps only the diagonal line at the bottom and top plus the two vertical end columns in between; Filled is the previous always-solid behaviour.
Fabric build/dependency fixes
- Fabric now compiles against the correct CurseMaven coordinates for all three Sophisticated 1.21.1 ports (the previous Backpacks coordinate resolved to a 1.20.1 build).
- Fixed a dev-runtime crash (
NoClassDefFoundErrorforporting_libclasses,Failed to start the minecraft server) caused by Sophisticated Core's bundled porting_lib jar-in-jar modules not being placed on the runtime classpath.
Server config
Four new server config keys govern survival breaking (ServerConfig.survivalBreaking):
enabled (default true), stopBeforeToolBreaks (default true), maxDelayTicks (default
40), exhaustionPerBlock (default 0.005). Caveat: on Fabric these are in-memory defaults
only — Fabric's config loading is not implemented yet, so the values above always apply regardless
of any config file. On NeoForge they are real, file-backed config options.
This mod has no additional files

