功能升级(Status / Void / Creative / Redstone / Downgrade / Template)
ModItems 注册的 6 个非存储升级物品。它们与 Upgrade(7 级存储容量升级)共用同一套 5 个升级槽,但作用完全不同。
基本信息
| 注册名 | 类 | 子类型 | 贴图 | 注册行 |
|---|---|---|---|---|
StorageDrawers:upgradeTemplate |
Item(裸 new Item()) |
无 | storagedrawers.upgradeTemplate |
core/ModItems.java:52 |
StorageDrawers:upgradeStatus |
ItemUpgradeStatus |
2(meta 1 / 2) | upgrade_status_level1 / upgrade_status_level2 |
core/ModItems.java:57 |
StorageDrawers:upgradeVoid |
ItemUpgradeVoid |
无 | storagedrawers.upgradeVoid |
core/ModItems.java:58 |
StorageDrawers:upgradeCreative |
ItemUpgradeCreative |
2(meta 0 / 1) | upgrade_creative_store / upgrade_creative_vend |
core/ModItems.java:59 |
StorageDrawers:upgradeRedstone |
ItemUpgradeRedstone |
3(meta 0 / 1 / 2) | upgrade_redstone_combined / _max / _min |
core/ModItems.java:60 |
StorageDrawers:upgradeDowngrade |
ItemUpgradeDowngrade |
无 | storagedrawers.upgradeDowngrade |
core/ModItems.java:67 |
全部 setMaxDamage(0)(不可损坏)、未调 setMaxStackSize(堆叠 64)。每个注册都套一个配置开关(core/ModItems.java:56-66):
| 物品 | 配置项(ConfigManager.java) |
默认 |
|---|---|---|
upgrade |
enableStorageUpgrades(:342) |
true |
upgradeStatus |
enableIndicatorUpgrades(:340) |
true |
upgradeVoid |
enableVoidUpgrades(:346) |
true |
upgradeCreative |
enableCreativeUpgrades(:348) |
true |
upgradeRedstone |
enableRedstoneUpgrades(:358) |
true |
upgradeLock |
enableLockUpgrades |
true |
upgradeSorting |
enableSortingUpgrades(:356) |
true |
upgradeTemplate / upgradeDowngrade |
无开关,永远注册 | — |
⚠️ 子类型数与分类页记载不一致:本条目的数据以源码为准。
ItemUpgradeCreative.iconNames = { "store", "vend" }只有 2 项,不是 3;ItemUpgradeStatus.iconNames = { null, "level1", "level2" }有效子类型为 2(meta 0 的图标为null,getSubItems跳过)。
功能
| 升级 | 生效判定 | 效果 | 源码 |
|---|---|---|---|
upgradeVoid |
TileEntityDrawers.isVoid() → 逐槽 DrawerData.isVoid() / CompDrawerData.isVoid() |
槽位进入 void(虚空) 状态:StorageInventory 取物时不再回写数量(inventory/StorageInventory.java:193)、RR 分拣器按整叠接收(DrawerSortingInventory.java:69)、AE2 桥接视为无限(DrawerMEInventory.java:53,74,98) |
block/tile/TileEntityDrawers.java:477-485;api/storage/attribute/IVoidable.java |
upgradeCreative(任意 meta) |
TileEntityDrawers.isUnlimited() |
存取不扣物品,等同无限复制 | block/tile/TileEntityDrawers.java:486-494 |
upgradeCreative(仅 meta 1) |
TileEntityDrawers.isVending() |
售货机模式:TileEntityDrawersComp 的 getMaxCapacity 返回 Integer.MAX_VALUE,且取出分支直接 return |
block/tile/TileEntityDrawers.java:495-503;block/tile/TileEntityDrawersComp.java:537,546,599 |
upgradeRedstone(任意 meta) |
TileEntityDrawers.isRedstone() |
让方块变成红石信号源 | block/tile/TileEntityDrawers.java:504-512 |
upgradeStatus(meta 1 / 2) |
TileEntityDrawers.getEffectiveStatusLevel() |
在抽屉正面渲染红石指示灯;等级由装入的 upgradeStatus 的 metadata 决定(取所有已装 upgradeStatus 的最大 metadata,缺省 0) |
block/tile/TileEntityDrawers.java:162-169 |
upgradeDowngrade |
TileEntityDrawers 的容量回退分支 |
拆掉存储升级,降低容量 | block/tile/TileEntityDrawers.java:385 |
upgradeTemplate |
仅作合成材料 | 无功能 | core/ModItems.java:52 |
⚠️
upgradeCreative会锁死升级槽:SlotUpgrade.canTakeStack对upgradeCreative返回false,除非玩家处于创造模式 ⇒ 生存模式下装上去就取不下来了(inventory/SlotUpgrade.java:23-25)。这与upgrade(canRemoveStorageUpgrade可拆)不同。
数值
红石升级的三档输出(TileEntityDrawers.getRedstoneLevel())
先按 stack.getItemDamage() 选模式,只取第一个 upgradeRedstone(break):
| meta | 模式 | 算法 | 输出 |
|---|---|---|---|
| 0 | combined |
所有启用槽填充率的平均值 ceil(Σratio / active × 14);全满时 15 |
0–15 |
| 1 | max |
最大填充率 ceil(maxRatio × 14);全满时 15 |
0–15 |
| 2 | min |
最小填充率 ceil(minRatio × 14);恰好装满时 15 |
0–15 |
源码:block/tile/TileEntityDrawers.java:514-533(分派)、:536-554(combined)、:575-585(min)、:587-596(max)。容量为 0 的槽不参与统计;min 模式下容量为 0 的槽直接令 minRatio = 0。
升级槽
| 属性 | 值 | 来源 |
|---|---|---|
| 每抽屉升级槽 | 5 | TileEntityDrawers.java:83 new ItemStack[5] |
| 超过 5 个 | addUpgrade 返回 false,发 storagedrawers.msg.maxUpgrades,不消耗 |
block/BlockDrawers.java:346-348 |
| 创造模式安装 | 不消耗升级物品 | block/BlockDrawers.java:358-360 |
| 允许装入的升级 | upgrade / upgradeStatus / upgradeVoid / upgradeCreative / upgradeRedstone / upgradeDowngrade |
block/BlockDrawers.java:346-351 |
合成配方
全部为 ShapedOreRecipe(core/ModRecipes.java)。通用骨架 x y x / y z y / x y x:x=主材料 ×4、y=stickWood ×4、z=upgradeTemplate ×1。
| 产物 | 图案 | x |
额外 | 来源 |
|---|---|---|---|---|
upgradeVoid |
yyy / xzx / yyy |
Blocks.obsidian |
y 木棍 ×6 |
:339-350 |
upgradeRedstone meta 0(combined) |
xyx / yzy / xyx |
dustRedstone |
— | :354-365 |
upgradeRedstone meta 1(max) |
xxx / yzy / yyy |
dustRedstone |
— | :366-377 |
upgradeRedstone meta 2(min) |
yyy / yzy / xxx |
dustRedstone |
— | :378-389 |
upgradeStatus meta 1 |
wyw / yzy / xyx |
w=Blocks.redstone_torch、x=dustRedstone |
y 木棍、z 模板 |
:293-306 |
upgradeStatus meta 2 |
wyw / yzy / xyx |
w=Items.comparator、x=dustRedstone |
y 木棍、z 模板 |
:307-320 |
upgradeDowngrade |
xyx / yzy / xyx |
Items.flint ×4 |
— | :278-289 |
upgradeTemplate |
x x x / x y x / x x x |
x=stickWood ×8、y=drawerBasic ×1 → 产出 2 |
— | :205-214 |
⚠️
upgradeCreative全仓库没有任何配方。grep -rn "upgradeCreative" --include=*.java .(在 StorageDrawers 源码根下)只命中ModItems.java的声明/实例化/注册、SlotUpgrade.java:23、TileEntityDrawers.java:490,500、BlockDrawers.java:348—— 没有一处addRecipe。即:默认配置下它只出现在创造模式物品栏,无法合成。
交互
| 触发 | 行为 |
|---|---|
| 右击抽屉装入升级 | 成功才消耗 1 个;创造模式不消耗;槽位满则拒绝 |
| 在升级 GUI 中取出 | upgradeCreative 在生存模式下不可取出;upgrade 受 canRemoveStorageUpgrade 约束 |
| 拆存储升级 | 手持 upgradeDowngrade 右击已升级的抽屉 |
| 密封的抽屉 | 装升级仍可用,但存取会被 BlockDrawers.onBlockActivated 的密封分支拒绝 |
相关条目
- Upgrade - 7 级存储容量升级(metadata 2–8,斐波那契倍率)
- Key Items -
upgradeLock/shroudKey/quantifyKey/personalKey/tape - Full Drawers 4x4 - 5 槽升级的宿主
- Comp Drawers - 同样支持 5 槽升级
- 分类抽屉 -
upgradeSorting不在本页(那是 Refined Relocation 集成)