BetterStorage
[!INFO] Git Commit:
fae479b| Updated: 2026-10-02
BetterStorage 是一个面向 Minecraft 1.7.10 / Forge 10.13.4.1614 的存储与容器模组,由 GTNewHorizons 维护(上游仓库 GTNewHorizons/BetterStorage)。它提供 12 个方块、19 个物品、12 个 TileEntity、2 个实体变种、7 个自定义附魔与 41 个配置项,核心是可自由堆叠的存储木箱与可被其它模组扩展的合成台。
modid 为 betterstorage,与分类名一致。该值有两处来源,源码中以 BetterStorage.MODID 常量为准:
src/main/java/net/mcft/betterstorage/BetterStorage.java:36—public static final String MODID = "betterstorage";gradle.properties—modId = betterstorage(用于 mcmod.info 与 mixin JSON 生成)
模组主类为 net.mcft.betterstorage.BetterStorage,@Mod 注解声明 modid = BetterStorage.MODID、name = BetterStorage.MODNAME、依赖 required-after:Forge; after:Thaumcraft; after:NotEnoughItems(BetterStorage.java:29-33)。Thaumcraft 与 NotEnoughItems 为软依赖(after 而非 required-after),未安装时相关附属内容不注册。
注册内容总览
| 类别 | 数量 | 说明 |
|---|---|---|
| 方块 | 12 | 全部受 tile.* 开关控制 |
| 物品 | 19 | 含 9 件纸板装备;「圣诞书」无开关 |
| TileEntity | 12 | 核心 10 + Thaumcraft 附属 2 |
| 实体 | 2 | Frienderman、Cluckington;无开关 |
| 附魔 | 7 | 钥匙 3 + 锁 4,ID 170–176 |
| 配置项 | 41 | 28 个内容开关 + 13 个行为/数值项 |
| GUI 类 | 5 | 客户端 |
| 容器类 | 7 | 含槽位类 |
| 网络封包 | 10 | network/packet/ |
| 内置附属 | 4 | Thaumcraft / NEI / Armorer’s Workshop / MineTweaker3 |
方块与 TileEntity 的 12 → 10 对应:燧石块 无 TileEntity,末影背包 复用 TileEntityBackpack,因此核心只注册 10 个。
核心机制
可堆叠的存储木箱
存储木箱 是本 mod 唯一的堆叠式容器:可堆成 1×1 到 3×3 的立方体,同堆共享一份数据,每箱提供 18 槽位,单种物品上限 64(可远超 64)。实现见 木箱堆叠逻辑。
它同时实现 ILaputaImmobile(Botania 魔力场接口),并通过 木箱存储 API 的 ICrateStorage / ICrateWatcher 供外部模组调用——这是与 Applied Energistics 类存储模组对接的契约。
锁系统
钥匙 / 锁 / 主钥匙 / 钥匙环 四件物品构成完整的 ID 匹配锁体系,可用于箱子、储物柜与 锁定铁门。7 个自定义附魔挂在该体系上(见 钥匙附魔 / 锁附魔)。扩展契约见 锁与钥匙 API。
合成台扩展
合成台 使用独立于工作台的配方系统,第三方模组可通过 合成配方 API 的 IStationRecipe 把配方接入,且支持物品字典等宽松输入匹配。本 mod 自带 3 条合成台专属配方(见 合成台配方)。
附属系统
本 mod 有内部附属机制(附属系统),与面向第三方的 api/ 包不同:4 个内置附属按 modid 条件化加载,Thaumcraft 附属会追加 2 方块、1 物品、2 TileEntity 与 1 条研究。
方块列表
- Storage Crate - 可堆叠的存储木箱,每箱 18 槽位,单种物品上限 64,支持 AE 类存储接口
- Reinforced Chest - 8 种材质的强化箱子,可横向连成大箱,列数 9/11/13 可配
- Reinforced Locker - 强化箱子的竖柜变体,同材质系统
- Locker - 3×3 基础储物柜,碰撞箱 14/16 见方
- Armor Stand - 双模式盔甲架(meta 0 站立 / 墙上),4 槽 GUI
- Backpack - 可穿戴的方块背包,胸甲槽位,1–6 行可配
- Ender Backpack - 末影背包,右键把内容传到附近另一个背包
- Cardboard Box - 唯一有使用次数的容器,1–3 行,使用次数可配
- Crafting Station - 3×3 合成 + 3×3 输出 + 9×2 存储,支持模组自定义配方
- Block of Flint - 9 个燧石压成一块,可拆回
- Locked Iron Door - 可上锁的铁门,是锁系统的载体之一(无合成配方)
- Present - 由装满物品的纸板箱合成,图案由羊毛颜色决定(无创造标签)
物品列表
- Key - ID 匹配钥匙,可染色,可附 3 种附魔
- Lock - 64 耐久,可染色,可附 4 种附魔,合成时复制钥匙 ID
- Keyring - 9 格钥匙收纳包,贴图 4 档,逐个尝试开锁
- Master Key - 可开所有普通锁,rare 稀有度,不可附魔(无合成配方)
- Cardboard Sheet - 全部纸板系物品的基底,8 纸 + 1 史莱姆球得 4 个
- Cardboard Armor Set - 4 件纸板护甲,永不损毁但耐久 0 时护甲归零
- Cardboard Tool Set - 5 种纸板工具(11 条配方),攻击力 -0.5
- Drinking Helmet - 装药水头盔,3 护甲,可装 2 组药水,地牢有特殊战利品
- Slime in a Bucket - 6 种史莱姆的桶装形态,可放置、食用(无合成配方)
- Present Book - 圣诞书面物品,rare 稀有度,显示名含年份(无合成配方)
TileEntity 列表
- TileEntity 注册表 - 核心 10 + 附属 2 的完整注册表与方块对应关系
- 木箱堆叠逻辑 -
CratePileData/CrateItems的容量、随机掉落与落盘机制
附魔列表
- 钥匙附魔 - Unlocking / Lockpicking / Morphing,ID 170–172,Lockpicking 与 Morphing 互斥
- 锁附魔 - Persistance / Security / Shock / Trigger,ID 173–176
附魔 ID 可在配置中改为 0 或负数以完全禁用对应附魔。
设置列表
- 内容开关设置 - 28 个方块/物品注册开关,全部需重启 MC
- 容器设置 - 强化箱子列数与木箱的 2 个自动化接口
- 背包设置 - 行数 1–6、开启方式、死亡掉落
- 纸板箱设置 - 行数 1–3、使用次数、内容显示
- 合成台设置 - 自动合成与原版配方开关、合成间隔
- 附魔 ID 设置 - 7 个附魔 ID,0 或负数即禁用
- 钥匙/锁设置 -
lockBreakable控制能否用工具打掉锁 - 杂项设置 - 新手 tooltip、控制台警告、圣诞活动
全部 41 个设置通过 配置 GUI 访问,配置文件为 config/betterstorage.cfg。
配方列表
- 容器配方 - 12 类方块配方,含 8 材质变体与回退逻辑
- 物品配方 - 钥匙、锁、钥匙环、头盔与全局染料配方
- 纸板配方 - 16 条纸板配方 + 2 条合成台专属配方
- 合成台配方 - 3 条合成台专属配方与容器槽位布局
GUI 列表
- 容器 GUI 体系 - 动态宽度机制(
14 + 列数 × 18)与 5 个 GUI / 7 个容器 - 合成台 GUI - 进度条、清空按钮、Inventory Tweaks 与 NEI 集成
- 配置 GUI - Forge
guiFactory接入的 41 项配置界面
第三方模组集成
- 附属系统 - 内部附属机制、8 个生命周期钩子与 4 个内置附属
- Thaumcraft 集成 - 追加 2 方块 / 1 物品 / 2 TileEntity 与
ARTIFICE研究 - NotEnoughItems 集成 - 合成台 GUI 的 NEI 覆盖层,不添加内容
- Armorer’s Workshop 集成 - 盔甲架的自定义盔甲渲染
- MineTweaker 集成 - 合成台配方的脚本支持
API 列表
- 合成配方 API -
IStationRecipe/IRecipeInput/StationCrafting,12 个类 - 木箱存储 API -
ICrateStorage(12 方法)/ICrateWatcher,供存储模组对接 - 锁与钥匙 API -
IKey/ILock/ILockable/EnumLockInteraction - 盔甲架 API -
IArmorStand/IArmorStandRenderHandler,7 个类
gradle.properties中apiPackage =为空值,api/包未被 build 脚本标记为 API 包,第三方引用需自行处理依赖。
实体列表
- 实体注册表 - 2 个实体的注册参数与说明
- Frienderman - 友好末影人变种,40 血,只偷末影箱,不主动攻击
- Cluckington - 迷你 Boss 鸡,30 血 2 攻自愈,用
Cluckington名牌右键成年鸡触发
无法核实的获取途径
以下已注册内容在 src/main/java/net/mcft/betterstorage/misc/Recipes.java 中没有合成配方(字段名搜索 0 命中),游戏内获取方式无法从源码确证:
| 内容 | 搜索字段 | 命中数 |
|---|---|---|
| Locked Iron Door | lockableDoor |
0 |
| Ender Backpack | itemEnderBackpack |
0 |
| Master Key | masterKey |
0 |
已确证无配方的还有 Slime in a Bucket(空桶装取)与 Present Book(圣诞活动发放),二者获取途径在源码中有对应实现。