
精密背包 - MT背包负重
为精致背包(非官方 Fabric 移植版)提供准确的 MT 背包重量支持,通过 SB 封装 API 读取真实的背包内容。
Sophisticated Backpacks InventoryWeight
为 Sophisticated Backpacks(非官方 Fabric 移植版) 提供精确的 MT Inventory Weight 支持。
MT Inventory Weight 自带一个通用的背包计算器,它读取容器 NBT,但 Sophisticated Backpacks 为每个背包分配了一个 UUID,并将其真实内容存储在世界的 BackpackStorage(PersistentState)中——并非始终位于物品 NBT 中。因此,通用的 NBT 读取会低估或错误计算 SB 背包的重量。此附加组件通过 Sophisticated Backpacks API 读取实际内容,解决了这一问题。
它注册了一个 Inventory Weight 物品重量提供者(通过 inventoryweight 入口点),优先级为 8500——高于内置的通用 backpacks 提供者(8000)——因此 SB 背包由这个精确的提供者处理,而其他物品则回退到默认逻辑。
为了读取内容,它使用了 SB 包装器 API。这将自动从 BackpackStorage 解析 UUID 支持的内容,从而正确计算装备、手持和存放的背包重量。
重量模型
与内置背包模型一致:
有效重量 = 空背包重量 + (内容物重量 / 2)
内容物重量通过 Inventory Weight 自身的查找(context.nested())递归每个内部堆叠来计算,因此数据包重量、嵌套容器和其他附加组件均适用。- 结果的基底重量保留完整(未除以 2 的)内容物重量用于显示。
备注
- 如果未安装 Sophisticated Backpacks,该提供者将处于非活动状态(会记录一条警告),且 Inventory Weight 使用其默认行为。
- 递归时使用
nested()以避免嵌套背包导致无限深度。 - 空背包的基底重量是一个常量(
SophisticatedBackpacksInventoryWeight#EMPTY_BACKPACK_WEIGHT);如果你想让它可配置,可以连接到 fzzy_config。
正在加载版本记录…
正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。