Sophisticated Backpacks InventoryWeight
Accurate MT Inventory Weight support for Sophisticated Backpacks (Unofficial Fabric port).
MT Inventory Weight ships a generic backpack calculator that reads container NBT, but Sophisticated Backpacks assigns each backpack a UUID and stores its real contents in world BackpackStorage (PersistentState) — not always in the item NBT. Generic NBT reading therefore under- or mis-counts SB backpacks. This add-on fixes that by reading the actual contents through the Sophisticated Backpacks API.
It registers an Inventory Weight item weight provider (via the inventoryweight entrypoint) at priority 8500 — above the built-in generic backpacks provider (8000) — so SB backpacks are handled by this accurate provider while everything else falls through to the defaults.
To read contents it uses the SB wrapper API. This resolves UUID-backed contents from BackpackStorage automatically, so equipped, held, and stored backpacks are all weighed correctly.
Weight model
Matches the built-in backpack model:
effectiveWeight = emptyBackpackWeight + (contentsWeight / 2)
contentsWeightis computed by recursing each inner stack through Inventory Weight's own lookup (context.nested()), so datapack weights, nested containers, and other add-ons all apply.- The result's base weight carries the full (undivided) contents weight for display.
Notes
- If Sophisticated Backpacks is not installed, the provider is inactive (a warning is logged) and Inventory Weight uses its default behavior.
nested()is used when recursing to avoid runaway depth with nested backpacks.- The empty-backpack base weight is a single constant (
SophisticatedBackpacksInventoryWeight#EMPTY_BACKPACK_WEIGHT); wire it to fzzy_config if you want it user-configurable.
