结构升级
基本信息
| 属性 | 值 |
|---|---|
| 注册名 | JABBA:upgradeStructural |
| 最大堆叠 | 16 |
| 附魔适用 | 否(setMaxDamage(0)) |
| 变体 | 7 种,物品 metadata i 对应材质等级 i+1 |
功能
结构升级把桶的材质等级往上提一级。等级决定桶能装多少核心升级(槽位数), 间接决定能装多大的存储升级。
材质等级(metadata → 等级 → 槽位)
| 元数据 | 材质(ore dict) | 材质等级 | 最大核心槽位 = 2^等级 - 1 |
|---|---|---|---|
| 0 | Ore.plankWood |
1 | 1 |
| 1 | Ore.ingotIron |
2 | 3 |
| 2 | Ore.ingotGold |
3 | 7 |
| 3 | Ore.gemDiamond |
4 | 15 |
| 4 | Ore.obsidian |
5 | 31 |
| 5 | Ore.whiteStone |
6 | 63 |
| 6 | Ore.gemEmerald |
7 | 127 |
等级 0 是没有材质的素桶(material = null),槽位 0,没有对应物品。
材质列表由配置项 materialList 决定(默认上表 7 项,上限 18 项)。
maxCraftableTier(默认 = 材质数量 = 7,且被 Math.min(18, ...) 夹紧)
控制为前多少级生成合成配方。
使用方式
| 使用方式 | 触发条件 | 使用效果 | 条件/限制 |
|---|---|---|---|
| 潜行右键点击桶 | 手持结构升级 | levelStructural += 1 |
物品 metadata 必须恰等于当前等级;有 BSpace 链接时拒绝 |
| 潜行右键(metadata == 当前等级 − 1) | 已有同级升级 | 拒绝,提示 UPGRADE_EXISTS |
— |
| 潜行右键(metadata < 当前等级) | — | 拒绝,提示 DOWNGRADE |
结构升级不能降级 |
| 潜行右键(metadata > 当前等级) | — | 拒绝,提示 UPGRADE_REQUIRED |
不能跳级 |
潜行右键持桶形锤子(STRUCTURAL 模式) |
等级 > 0 | levelStructural -= 1 并掉落对应结构升级 |
新等级的槽位数不够放下已装核心升级时拒绝(UPGRADE_REMOVE) |
合成配方
addStructuralUpgrade 模板:
PBP P = tierUpgradeItem(配置项,默认 minecraft:fence 原版栅栏)
B B B = 该等级的材质
PBP
i 从 0 到 min(LEVELS.length - 1, maxCraftableTier) - 1,即默认生成
metadata 0~6 共 7 种配方。
RecipeHandler 启动时若找不到配置指定的物品,会回退到原版栅栏并记一条
ERROR 日志。
相关条目
审计订正记录
[!WARNING] 2026-10-01 回源码核对,以下为已订正的事实错误
| 原文 | 正确值 | 证据 |
|---|---|---|
| 最大堆叠 64 | 16 | ItemUpgradeStructural.java:21 setMaxStackSize(16) |
| 材质等级表「元数据 0 木板 → 最大槽位 0 / 1 铁 → 1 / 2 金 → 3 / 3 钻石 → 7 / 4 黑曜石 → 15 / 5 圆石 → 31 / 6 绿宝石 → 63」 | 槽位列整体错位一级。正确:0 木板 → 1、1 铁 → 3、2 金 → 7、3 钻石 → 15、4 黑曜石 → 31、5 圆石 → 63、6 绿宝石 → 127。「0 槽」属于没有材质的素桶(等级 0),没有对应物品 | ItemUpgradeStructural.java:27,38,45-47(metadata i → LEVELS[i+1]);StructuralLevel.java:12-13,27-30,45-48 |
| 「每级增加 1/2/4/8/16/32/64」列 | 该列是 2^等级,即槽位公式的推导中间量,非「每级增加量」;已删除以免误读 |
StructuralLevel.java:30 |
| 「降级需要使用桶形锤子的 NORMAL 模式」 | 降级用锤子的 STRUCTURAL 模式(NORMAL 模式确实也会一路降到等级 −1,但它先拆核心升级和存储升级) |
BarrelCoreUpgrades.java:167-169,213-233 |
| 「SHIFT+右键:只能升级,不能降级」 | 正确,且必须 metadata 恰等于当前等级才生效,否则按 UPGRADE_EXISTS / DOWNGRADE / UPGRADE_REQUIRED 分别拒绝 | BarrelCoreUpgrades.java:344-355 |
「最大可升级到配置 maxCraftableTier 指定的等级」 |
maxCraftableTier 只控制合成配方的生成范围;实际可安装等级由 materialList 长度(≤18)与物品 metadata 上限决定 |
RecipeHandler.java:114-117;BetterBarrels.java:140-148 |
| 缺合成配方 | 已补全模板与回退逻辑 | RecipeHandler.java:103-142 |