跳到正文
烈焰甘蔗Wiki

StorageDrawers

[!INFO] Git Commit: b8c869a4 | Updated: 2026-09-24

Minecraft 储物抽屉模组,提供多种规格的方块储物容器,支持锁定、密封、标签显示和自定义材质。

[!IMPORTANT] 本次审计订正(回源码核对)

  • modid = StorageDrawers(大写 S / 大写 D),来自 StorageDrawers.java:47 public static final String MOD_ID = "StorageDrawers"; 与 @Mod(modid = StorageDrawers.MOD_ID, ...)。原 15 条目全部误写为小写 storagedrawers:。注意 ModItems.makeName() 里的 MOD_ID.toLowerCase() 只影响未本地化名(storagedrawers.xxx)与贴图路径,不是注册名。
  • 本 mod 实为 6 个 @Mod 实体(主 mod + 5 个材质包),modid 分别为 StorageDrawers、StorageDrawersNatura、StorageDrawersBop、StorageDrawersForestry、StorageDrawersErebus、StorageDrawersMisc。
  • 全仓库从未调用过 setResistance,"爆炸抗性"一栏的所有"随矿石/木材变化"说法均无源码依据。
  • 不存在红石比较器支持(无 IComparator / getComparatorOutput)。

方块列表

架构

TileEntity 对应关系

来源:ModBlocks.java:120-146(共注册 6 个 TileEntity 类)

方块 TileEntity 注册方式
fullDrawers1/2/4, halfDrawers2/4 TileEntityDrawersStandard registerTileEntityWithAlternatives(5 个名字)
compDrawers TileEntityDrawersComp registerTileEntityWithAlternatives
controller TileEntityController registerTileEntityWithAlternatives
controllerSlave TileEntitySlave registerTileEntityWithAlternatives
framingTable TileEntityFramingTable registerTileEntity
trim ⚠️ 无 TileEntity ⚠️ 订正:ModBlocks.java:146 虽执行了 registerTileEntity(TileEntityTrim.class, "StorageDrawers:trim"),但 BlockTrim 未实现 ITileEntityProvider,也没有 createNewTileEntity,实际永远不会生成 TE。该注册只是分配了 TE 类 ID
trimCustom TileEntityTrim 由 BlockTrimCustom implements ITileEntityProvider 提供(isBlockContainer = true)
fullCustom1/2/4, halfCustom2/4 TileEntityDrawersStandard ⚠️ 订正:这两个类未出现在 ModBlocks.java:120-146 的 registerTileEntityWithAlternatives 名单里;它们靠 BlockDrawers.createNewTileEntity 覆写与 pack 侧 addAlternativeTileEntityMappings(反射写 nameToClassMap)生效
5 个 pack 的全部方块 TileEntityDrawersStandard(Natura 显式调用 addAlternativeTileEntityMappings) pack 各自 core/ModBlocks.java

核心属性

  • 满深(Full Depth):halfDepth = false,碰撞盒占满 1 格
  • 半深(Half Depth):halfDepth = true,碰撞盒按 setBlockBoundsBasedOnState 缩到 depth = 0.5,朝向哪面就贴哪面
  • 压缩抽屉(Comp Drawers):⚠️ 订正——原文"9 个物品压缩为 1 个,最多 4 级压缩"源码中完全不存在。压缩能力来自 CompTierRegistry 的 8 条成对记录(clay→clay_ball、snow→snowball、glowstone→glowstone_dust、brick_block→brick、nether_brick→netherbrick、quartz_block→quartz、melon_block→melon、sandstone→sand),每条带一个 convRate(除 melon 为 9 外均为 4)。只有一级压缩,没有 4 级、没有 9⁴
  • 锁定 / 密封:⚠️ 原文把二者混为一谈。锁定(upgradeLock)控制 ILockable 的存取属性 LOCK_POPULATED / LOCK_EMPTY;密封(tape)由 ISealable.setIsSealed(true) 实现,密封后 BlockDrawers.onBlockActivated 在存取分支直接 return false。两者是独立属性
  • 升级槽位:每个抽屉有 5 个升级槽(TileEntityDrawers.java:83),可混装存储 / 状态 / 虚空 / 创造 / 红石 / 降级升级
  • 标签显示:显示抽屉内物品图标和数量,可由 shroudKey(遮蔽)与 quantifyKey(量化)切换

物品列表

ModItems.java:52-67 共注册 12 个物品,现有 2 条目仅覆盖 7 个。

  • Upgrade - 存储容量升级(StorageDrawers:upgrade,metadata 2–8 共 7 种;默认倍率 2/3/5/8/13/21/34,斐波那契数列)
  • Key Items - shroudKey / quantifyKey / personalKey / tape / upgradeLock
  • 功能升级 - upgradeTemplate / upgradeStatus / upgradeVoid / upgradeCreative / upgradeRedstone / upgradeDowngrade

6 个非存储升级物品

已建条目:功能升级。下表为注册对照(数据以源码为准):

注册名 类 说明
StorageDrawers:upgradeTemplate Item(裸 new Item()) 升级模板,所有升级的共同材料;8 木棍围 1 抽屉 → 2 个
StorageDrawers:upgradeStatus ItemUpgradeStatus 指示器升级,iconNames = {null, "level1", "level2"} → 2 个子类型(meta 1/2)
StorageDrawers:upgradeVoid ItemUpgradeVoid 虚空升级(1 种)
StorageDrawers:upgradeCreative ItemUpgradeCreative 创造模式升级,iconNames = {"store", "vend"} → 2 个子类型(meta 0/1)
StorageDrawers:upgradeRedstone ItemUpgradeRedstone 红石升级,iconNames = {"combined", "max", "min"} → 3 个子类型(meta 0/1/2)
StorageDrawers:upgradeDowngrade ItemUpgradeDowngrade 降级升级(1 种,4 燧石 + 4 木棍 + 1 模板)

⚠️ 订正:upgradeCreative 原文写"3 个子类型(配方 meta 0/1/2)"。源码里 ItemUpgradeCreative.iconNames 只有 {"store", "vend"} 2 项,且全仓库没有任何 addRecipe 涉及它——默认配置下无法合成。详见条目。

多方块结构

⚠️ 订正:这不是"几×几×几"的刚性多方块。真实机制是 TileEntityController.populateNodes 的 BFS 洪泛填充:沿 6 个正交邻面遍历所有 INetworked 方块,距离以切比雪夫距离计且 ≤ range(配置 controller.range,默认 12)。原文的"5 格半径"“16 槽”“10 控制器”"160 总槽位"均无源码依据。

第三方集成(IntegrationRegistry.java:29-39)

实际注册了 11 个集成模块,原条目的第三方表格遗漏 4 个:

探测的 modid 模块
appliedenergistics2 AppliedEnergistics
Waila Waila
Thaumcraft Thaumcraft
MineTweaker3 MineTweaker
RefinedRelocation RefinedRelocation(同时注册 7 个"分类"方块 + upgradeSorting 物品)
NotEnoughItems NotEnoughItems
ThermalExpansion ThermalExpansion
ThermalFoundation ThermalFoundation
chisel ChiselIntegrationModule
dreamcraft GTNHIntegrationModule(注意探测的是 dreamcraft,不是 GTNH)
backhand BackhandIntegrationModule

Chisel 走 FMLInterModComms 的 variation:add(ChiselIntegrationModule.java:20-52),为 6 种基础方块 × BlockWood 的每个 meta 注册材质变体,不是注册新方块。

覆盖率实测(250 个 java 文件 / 现有 18 条目)

初版为只审计;本轮已把「材质包」「分类抽屉」「6 个功能升级」三块空白补成条目。

实际注册量

维度 实测总数 来源
@Mod 实体 6 主 mod + 5 个材质包
方块 65 见下方拆分
物品 13 ModItems.java:52-67 12 个 + RefinedRelocation.java:105 的 upgradeSorting
TileEntity 类 6 ModBlocks.java:120-146
升级/钥匙物品种类 13 7 种存储升级 + 1 状态(2 子型) + 1 虚空 + 1 创造(2 子型) + 1 红石(3 子型) + 1 降级 + 1 模板 + 3 钥匙 + 1 锁 + 1 胶带 + 1 upgradeSorting
GUI ID 2 drawersGuiID=0、framingGuiID=1(GuiHandler.java:22-23)

方块 65 个的拆分:

来源 数量 模组 id
主 mod ModBlocks 16(ModBlocks.java 共 16 处 registerBlock:fullDrawers1/2/4、halfDrawers2/4、compDrawers、controller、controllerSlave、trim、trimCustom、framingTable、fullCustom1/2/4、halfCustom2/4) StorageDrawers
Natura pack 6 StorageDrawersNatura
Bop pack 6 StorageDrawersBop
Erebus pack 6 StorageDrawersErebus
Misc pack 12(2 个 resolver × 6 种,注册名带 _0 / _1 后缀) StorageDrawersMisc
Forestry pack 12(2 个 resolver × 6 种,注册名带 A / B 后缀,无下划线) StorageDrawersForestry
RefinedRelocation 集成 7(fullDrawersSort1/2/4、halfDrawersSort2/4、compDrawersSort、trimSort) 挂在 StorageDrawers 下

⚠️ 订正:原文写 “5 个 pack 的 36 个方块”,并把 Misc 记为 6、Forestry 后缀记为 _0/_1。实际 packs/misc/StorageDrawersPack.java:28 与 packs/forestry/StorageDrawersPack.java:29 都是 2 个 resolver({ DataResolver(MOD_ID,0), DataResolver(MOD_ID,1) }),所以两个 pack 各 12 个方块,pack 方块合计 42。Forestry 的后缀来自 char[] tail = {'A','B'}(packs/forestry/core/ModBlocks.java:51),拼出 fullDrawers1A / fullDrawers1B;只有 Misc 才是 fullDrawers1_0 / fullDrawers1_1。

现有 18 条目的覆盖

维度 已覆盖 覆盖率 缺口
方块 14(主 mod 11 个中覆盖 11;compDrawers 记为 1 条) 11 / 65 ≈ 17% 5 个 pack 的 42 个方块 + RefinedRelocation 的 7 个 sorting 方块 已各建 1 条汇总页(见 材质包抽屉、分类抽屉)
物品 8(upgrade 1 种 + 5 把钥匙/工具 + 6 个功能升级汇总 1 条 + upgradeSorting 计入分类抽屉页) 8 / 13 ≈ 62% 仅 upgradeSorting 无独立条目(在分类抽屉页内说明)
TileEntity 5 5 / 6 ≈ 83% TileEntityTrim 只在 trim-custom 顺带提到,无独立说明
升级种类 6(存储 1 + 状态/虚空/创造/红石/降级/模板 汇总 1 条) 6 / 7 类 —
多方块 1 100%(仅 1 个网络系统) —
设置 / 配置项 0 0% StorageDrawers.cfg 有 20+ 个开关(enableDrawerUI / enableSidedInput / enableSidedOutput / enableFramedDrawers / enableTape / invertShift / itemRenderType / breakDrawerDropMode …)+ 6 个升级类开关 + 12 个 levelNMult,setting/ 目录为空
AE2 集成 0 0% integration/ae2 有独立包,无条目

结论:主 mod 本体(16 方块 / 12 物品)覆盖良好;材质包、分类抽屉、功能升级三块空白已用 3 条汇总页补齐。仍未覆盖的是整个配置维度与 AE2 集成包。

浏览全部模组