跳到正文
烈焰甘蔗Wiki

桶形存储物品效果

基本信息

属性 值
来源物品 桶形存储方块(TileEntityBarrel / StorageLocal)
触发条件 存入 / 取出 / 漏斗自动传输 / 红石判定
存储模型 同一时刻只存一种物品,按物品数量(totalAmount)而非组数记账

效果

物品存储

  • 桶的存储由 StorageLocal 实现,只维护一个 itemTemplate + totalAmount: 不能混装多种物品,存入不同物品会替换物品类型
  • 容量判定:totalCapacity = maxstacks × 该物品最大堆叠数, maxstacks = stacksSize × (累计 STORAGE 升级点 + 1)
  • 溢出处理:装不下的部分由 Utils.dropItemInWorld(2% 掉率)掉在地面
  • 服务器 tick 完成后通过 Message0x06FullStorage / Message0x01ContentUpdate 向该维度广播内容,Message0x02GhostUpdate 同步幽灵态

物品提取

  • 提取量为 getStack(amount):非创造模式下 amount = min(amount, totalAmount) 且上限一组的最大堆叠数
  • 潜行右键(空手)切换 ghosting:取出后保留物品类型(keepLastItem), 与 STICKER 侧面升级无关
  • 漏斗升级每 8 tick 向该面相邻的容器推 / 拉,单次最多 16 个

⚠️ 不是 FIFO 队列:因为只能存一种物品,不存在多种物品的先进先出排序。

虚空模式(VOID 核心升级)

deleteExcess = true 时,容量判定放宽到 getMaxStoredCount() = totalCapacity + stackAmount,超出的新物品被静默删除, 不产生掉落物。

创造模式(CREATIVE 核心升级)

alwaysProvide = true 时,getStack() 直接返回请求数量且不扣减 totalAmount, 桶相当于无限供应。

末影网络(ENDER 核心升级 + 调谐叉)

  • 安装 ENDER 升级时 BSpaceStorageHandler.registerEnderBarrel() 把桶注册进末影网络
  • 调谐叉(damage 0)把 tuneID / structural / storage / void / creative 写入叉子 NBT(damage → 1)
  • 再次用该叉子潜行右键另一个桶:目标桶的四个结构字段必须与快照一致, 之后 linkStorages() 把两桶存储互链;源桶消失则提示 BSPACE_FORK_LOST
  • 服务端 → 客户端同步节奏由 ServerTickHandler.timer 控制,间隔来自配置项 packetLimiterDelay(默认 500 毫秒)
  • ENDER / STORAGE / STRUCTURAL / VOID / CREATIVE 之间互斥:桶有 BSpace 链接时, 这些升级的安装与结构变更都会被 BSPACE_PREVENT 拒绝

数值

属性 值
基础最大组数 64(stacksSize 默认值)
基础最大物品数 64 组 × 64 = 4096 个(随物品最大堆叠数变化)
单桶最大组数 419648(默认 64 × (6561+1),全 STORAGE6561)
存储升级加成 加法:每 1 升级点 +1×stacksSize 组
材质等级影响 仅影响核心槽位数(可装多少升级),不改变基础组数
漏斗传输间隔 8 tick
漏斗单次传输上限 16 个物品
BSpace 同步间隔 500 ms(配置 packetLimiterDelay)
溢出掉率 0.02(2%)

相关条目

审计订正记录

[!WARNING] 2026-10-01 回源码核对,以下为已订正的事实错误

原文 正确值 证据
「优先提取最先存入的物品(FIFO)」 桶只存一种物品(单个 itemTemplate + totalAmount),不存在 FIFO 队列 StorageLocal.java:67-71,86-88,228-247
「最大存储槽 127×64(基础)」 基础容量 = stacksSize 64 组 × 64 = 4096 个物品;127×64 对应的是材质等级 7 的核心槽位数,与存储量无关 StorageLocal.java:30-31,301-303;StructuralLevel.java:30
「存储升级倍数 3^n(n = 升级等级)」 加法:maxstacks = basestacks × (upgCapacity + 1),与 3 的幂无关 StorageLocal.java:301-303
「应用 STICKER 标签限制(提取时)」 STICKER 不影响提取;提取限制来自 CREATIVE(不减数量)与 ghosting 状态 BlockBarrel.java:423-426;TileEntityBarrel.java:505-508
「末影网络延迟:取决于服务端 tick」(含糊) 配置项 packetLimiterDelay,默认 500 ms,由 ServerTickHandler.timer 节流 BetterBarrels.java:118-123;ServerTickHandler.java:21,38
「虚空模式:无任何提示」 订正:溢出物被删除且不产生掉落物(Utils.dropItemInWorld 不参与),这一点正确;但容量判定会 +1 组缓冲 StorageLocal.java:526;TileEntityBarrel.java:253
缺漏斗 / 红石 / 溢出 / 同步的具体数值 已补 8 tick、16 个、2% 掉率、500 ms TileEntityBarrel.java:184,220-226,282;Utils.java dropItemInWorld
缺「装不下时溢出掉地」与「只存一种物品」这两条关键行为 已补 TileEntityBarrel.java:279-284;StorageLocal.java:86-88
浏览全部模组