InvWrapper

基本信息

属性 值
路径 mrtjp.core.inventory.InvWrapper
源码 src/main/scala/mrtjp/core/inventory/invwrapper.scala

为 IInventory 提供「按多种规则匹配槽位」的能力,是机器自动化 / 管道逻辑的基础。

静态工具

方法 说明
register(w: IInvWrapperRegister) 注册自定义 wrapper
wrap(inv) 取最匹配的 wrapper(无匹配则回退默认)
areItemsStackable(s1, s2) 是否可合并
areItemsSame(s1, s2) 是否同一物品
getInventory(world, wc) 按 BlockCoord 取方块实体的 IInventory

IInvWrapperRegister

子类需实现 wrapperID: String、matches(inv): Boolean、create(inv): InvWrapper。 注册时 wrapperID 重复会 log.error。

InvWrapper 实例方法

方法 说明
setSlotsFromSide(s: Int) 只暴露某个面的槽位
setSlotsFromRange(r: Range) 只暴露槽位区间
setSlotsAll() 暴露全部槽位
setSlotSingle(s: Int) 只暴露单个槽位
setMatchOptions(meta, nbt, ore) 委托给 ItemEquality
setDamageGroup(percent: Int) 按损坏值百分比分组
slots 当前暴露的槽位集合

HashableLargeChest

把两个 IInventory 组合成一个「大型箱子」并实现 hashCode / equals(异或组合), 用于多方容器合成。

缺陷

areItemsStackable / areItemsSame 在本文件与 ItemEquality 中各有一份实现,逻辑不完全一致,存在行为分歧风险。

相关条目