文件柜(Filing Cabinet)
基本信息
| 属性 | 值 |
|---|---|
| 注册名 | utilitiesinexcess:filing_cabinet |
| 类 | com.fouristhenumber.utilitiesinexcess.common.blocks.BlockFilingCabinet(extends BlockContainer) |
| 注册方块数 | 1(用 meta 表示 3 个档位) |
| ItemBlock | BlockFilingCabinet.ItemBlockFilingCabinet(ModBlocks.java:184) |
| TileEntity | 3 个内部类:Basic / Advanced / Elite |
| 配套物品 | utilitiesinexcess:capacity_upgrade(容量升级) |
| 开关 | BlockConfig.filingCabinets.enableFilingCabinets(默认 true) |
功能
文件柜是本模组功能最复杂的存储方块:它不是"一个箱子加大",而是按物品类型分槽的智能容器——每种物品类型占一个独立槽位,槽位内堆叠到上限。GUI 由 ModularUI2 构建(compat/mui/cabinet/ 下 5 个类),带设置页与升级页。
方块 meta 决定档位,每个档位绑定不同的 TileEntity 内部类:
| meta | 档位 | TileEntity 内部类 | 槽位(numSlots) | 容量(numItems) |
|---|---|---|---|---|
| 0 | Filing Cabinet | TileEntityFilingCabinet.Basic |
256 | 8192 |
| 1 | Advanced Filing Cabinet | TileEntityFilingCabinet.Advanced |
512 | 8192 |
| 2 | Elite Filing Cabinet | TileEntityFilingCabinet.Elite |
128 | 8192 |
来源:FilingCabinetsConfig.java:30-45 三个 CabinetConfig 构造实参(new CabinetConfig(256, 8192, true) / (512, 8192, true) / (128, 8192, true));TileEntity 注册见 ModTileEntities.java:87-89。
注意 Elite 档的槽位数(128)少于 Basic(256)——这是 Extra Utilities 的原始设计,不是笔误。
GUI 的同步使用 GTNHLib 的方块状态注册表:BlockFilingCabinet.CabinetOrientationProperty.instance 在 preInit 注册(CommonProxy.java:122-126)。
数值
| 项目 | 值 |
|---|---|
| 三档基础容量(numItems) | 均为 8192 |
| 槽位数(numSlots) | Basic 256 / Advanced 512 / Elite 128,不因升级而改变 |
| 单个容量升级物品增加的总容量 | +4096(upgradeCapacity = 4096,FilingCabinetsConfig.java:20) |
| 升级数量上限 | 14(upgradeCountMax = 14,FilingCabinetsConfig.java:28) |
| 满级总容量 | 8192 + 14 × 4096 = 65536 个物品 |
| 每档独立启停 | 三个 CabinetConfig 各有 enable 字段,默认全 true |
升级机制:GUI 的升级槽放多少个 capacity_upgrade,总容量就增加 数量 × 4096。等级由 getNumberOfUpgrades() 读升级槽的 stackSize 得到(TileEntityFilingCabinet.java:126-129),并被 upgradeCountMax 截断(TileEntityFilingCabinet.java:65, 70)。CabinetInventory 构造时同时收到 numSlots、numItems(基础容量)与 upgradeCapacity 三个参数(TileEntityFilingCabinet.java:109-113、:363-365)——numSlots 是固定的槽位类型上限,升级只扩容量不扩槽位。
getMinimumUpgrades() 会根据已存物品量反推"至少需要几个升级才装得下",用于防止玩家拆掉升级后数据溢出(TileEntityFilingCabinet.java:131-137)。
配置注释明确警告:调小 numSlots 或 numItems 会导致已有文件柜数据丢失(FilingCabinetsConfig.java 的 CabinetConfig 字段注释)。
交互
| 触发 | 行为 |
|---|---|
| 右键 | 打开 ModularUI2 文件柜 GUI,含状态页 / 升级页 / 设置页 |
| 放入容量升级 | 每 1 个提升总容量 +4096,最多 14 个 |
| 方块状态 | 朝向属性通过 GTNHLib BlockPropertyRegistry 注册 |
| Waila | 由 IWailaDataProvider 相关集成提供信息 |
合成配方
| 产物 | 配方 | 开关 |
|---|---|---|
filing_cabinet meta 0 |
ici ×3 行:i=铁锭、c=箱子 |
RecipeConfig.enableFilingCabinetRecipes |
filing_cabinet meta 1 |
mcm ×3 行:m=魔法木材、c=meta 0 |
同上 |
filing_cabinet meta 2 |
ici ×3 行:i=反转金属锭、c=meta 1 |
同上 |
capacity_upgrade ×1 |
d / gcg / d:d=钻石、g=金锭、c=meta 0 |
RecipeConfig.enableFilingCabinetUpgradeRecipe |
来源:RecipeLoader.java:551-595。两个开关默认全为 true。
相关条目
- 箱子三档 - 传统存储方案对照
- TileEntity 注册总表 - 三个文件柜 TileEntity 内部类
- 物品注册总表 - 容量升级物品
- 配置总览 -
FilingCabinetsConfig全部字段