Storage Crate
基本信息
| 属性 | 值 |
|---|---|
| 注册名 | betterstorage:crate |
| 类 | net.mcft.betterstorage.tile.crate.TileCrate |
| TileEntity | net.mcft.betterstorage.tile.crate.TileEntityCrate(GameRegistry.registerTileEntity,id container.betterstorage.crate) |
| 材质 | Material.wood |
| 硬度 | 2.0 |
| 脚步声 | soundTypeWood |
| 收获等级 | 斧 0(setHarvestLevel("axe", 0)) |
| 创造标签 | BetterStorage.creativeTab(继承自 TileBetterStorage 构造函数) |
来源:src/main/java/net/mcft/betterstorage/tile/crate/TileCrate.java:25-36;TileEntity 注册见 src/main/java/net/mcft/betterstorage/content/BetterStorageTileEntities.java:28。
功能
存储木箱是本 mod 的核心存储方块,也是唯一采用**堆叠池(pile)**模型而非固定槽位的容器:可自由堆叠成 1×1 到 3×3 的任意立方体区域,同一堆的所有木箱共享一份物品数据。
- 每个木箱提供
TileEntityCrate.slotsPerCrate = 18个槽位(src/main/java/net/mcft/betterstorage/tile/crate/TileEntityCrate.java:34) - 堆叠容量
getCapacity() = numCrates * 18(src/main/java/net/mcft/betterstorage/tile/crate/CratePileData.java:53-55) - 物品以
CrateItems的Map<ItemIdentifier, ItemStack>存储,单堆上限 64(getInventoryStackLimit()返回 64,TileEntityCrate.java:289-292),同种物品数量可远超 64 - 相邻木箱自动合并为同一堆,可跨越材质差异(材质只影响贴图与配方,见
ContainerMaterial) - 支持 Applied Energistics 风格的存储接口(
ICrateStorage/ICrateWatcher,src/main/java/net/mcft/betterstorage/api/crate/) - 实现了
ILaputaImmobile(Botania 魔力场接口),使木箱不会在魔力场中移动
数值
| 数值名 | 值 | 来源 |
|---|---|---|
| 单箱槽位 | 18 | TileEntityCrate.java:34 |
| 单堆最小规模 | 1 箱 | CratePileData.getCapacity() |
| 单堆最大规模 | 3×3 = 9 箱(容量 162) | TileEntityCrate.java:237 的 2 * Math.min(data.getNumCrates(), 3) 行数上限 |
| 单堆物品数量上限 | 64(每种物品一个栈) | TileEntityCrate.java:291 |
| 比较器输出 | 0–15,占用槽位比例 | TileEntityCrate.java:256 1 + occupiedSlots * 14 / capacity |
交互
| 触发 | 行为 |
|---|---|
| 右键 | 打开木箱 GUI(openGui → ContainerCrate),GUI 行数为 2 * min(箱数, 3),列数取自容器 |
| 比较器读取 | 返回 1 + 已占用槽位 * 14 / 容量(无物品时 0) |
| 破坏 | 堆叠内容按 getRandomStacks 随机化掉落 |
| 与相邻木箱合并 | 自动检测并加入同一堆(CratePileCollection) |
合成配方
ShapedOreRecipe(src/main/java/net/mcft/betterstorage/misc/Recipes.java:58-67):
o/o
/ /
o/o
| 字符 | 物品 |
|---|---|
o |
木板(物品字典 plankWood) |
/ |
木棍(物品字典 stickWood) |