跳到正文
烈焰甘蔗Wiki

Storage Drawers Key Items

Key items are special tools used to modify and interact with drawer behavior. Each serves a distinct purpose.

本条目聚合了 5 个注册为 Item 的钥匙/工具。StorageDrawers 共注册 12 个物品,其余 7 个(upgradeTemplate / upgradeStatus / upgradeVoid / upgradeCreative / upgradeRedstone / upgradeDowngrade / upgrade)属于升级系统,目前无独立条目(见覆盖率报告)。

注册一览

物品 注册名 类 关键属性
遮蔽钥匙 StorageDrawers:shroudKey ItemShroudKey +2 攻击,全 3D,setMaxDamage(0)
数量钥匙 StorageDrawers:quantifyKey ItemQuantifyKey setMaxDamage(0)
个人钥匙 StorageDrawers:personalKey ItemPersonalKey setHasSubtypes(true),setMaxDamage(0)
胶带 StorageDrawers:tape ItemTape 堆叠 1,setMaxDamage(8)
升级锁 StorageDrawers:upgradeLock ItemUpgradeLock +2 攻击,全 3D,setMaxDamage(0)

所有注册名均取自 GameRegistry.registerItem(item, "<name>") 的字符串实参(ModItems.java:52-67),modid 前缀为 StorageDrawers(StorageDrawers.java:47)。注意 makeName() 用的是 MOD_ID.toLowerCase(),那只影响未本地化名(storagedrawers.xxx)与贴图路径,不是注册名。


Shroud Key

A key used to toggle the “shroud” mode on a drawer, hiding its contents from view.

基本信息

属性 值
注册名 StorageDrawers:shroudKey
最大堆叠 64(未调用 setMaxStackSize)
耐久度 setMaxDamage(0) → 无
附魔适用 否
攻击伤害加成 +2.0(AttributeModifier 硬编码)
全 3D 渲染 isFull3D() = true
贴图 StorageDrawers:drawer_key_shroud
合成 无序:upgradeLock + Items.ender_eye

功能

切换抽屉的"遮蔽"模式。启用后,抽屉不再显示内部物品的图标。

使用方式

使用方式 触发条件 使用效果 条件/限制
右键点击抽屉方块 手中持有该物品 tileDrawers.setIsShrouded(!tileDrawers.isShrouded()) 切换该抽屉的遮蔽 需先通过 SecurityManager.hasAccess
右键点击控制器 手中持有该物品 te.toggleShroud(profile) 切换整个网络的遮蔽 判定在方向检查之前,任意面都生效
作为武器攻击 — +2 攻击伤害(getAttributeModifiers) 无消耗

数值

属性 值 来源
攻击伤害加成 +2.0 ItemShroudKey.java:41-47
全 3D 渲染 isFull3D() = true ItemShroudKey.java:35-38
贴图 StorageDrawers:drawer_key_shroud ItemShroudKey.java:24

耐久与消耗

项目 值
最大耐久 无
每次使用消耗 无
使用后是否消失 否

相关条目


Quantify Key

A key used to toggle item count display mode on drawers.

基本信息

属性 值
注册名 StorageDrawers:quantifyKey
最大堆叠 64(未调用 setMaxStackSize)
耐久度 setMaxDamage(0) → 无
附魔适用 否
攻击伤害加成 无(ItemQuantifyKey 未覆写 getAttributeModifiers)
全 3D 渲染 否
合成 无序:upgradeLock + Items.writable_book

功能

切换抽屉的物品数量显示模式。在显示数量和不显示数量之间切换。

使用方式

使用方式 触发条件 使用效果 条件/限制
右键点击抽屉方块 手中持有该物品 tileDrawers.setIsQuantified(!tileDrawers.isQuantified()) 切换该抽屉的数量显示 需先通过 SecurityManager.hasAccess
右键点击控制器 手中持有该物品 te.toggleQuantify(profile) 切换整个网络的数量显示 任意面都生效

耐久与消耗

项目 值
最大耐久 无
每次使用消耗 无
使用后是否消失 否

相关条目


Personal Key

A key used to set personal ownership on a drawer, restricting access to specific players.

基本信息

属性 值
注册名 StorageDrawers:personalKey
最大堆叠 64(未调用 setMaxStackSize)
耐久度 setMaxDamage(0) → 无(此处 damage 字段被当作子类型用)
子类型 setHasSubtypes(true)
附魔适用 否
合成 无序:upgradeLock + Items.name_tag

功能

为抽屉设置个人所有权。不同颜色的 Personal Key 对应不同的安全提供者 (security provider),通过 metadata (damage) 值区分。

使用方式

使用方式 触发条件 使用效果 条件/限制
右键点击抽屉方块 getOwner() == null setOwner(player.getPersistentID()) + setSecurityProvider(provider) 首次点击 = 认领
右键点击抽屉方块 getOwner() != null 且 SecurityManager.hasOwnership 通过 setOwner(null) + setSecurityProvider(null) → 解除保护 非所有者点击 return false
右键点击控制器 手中持有该物品 te.toggleProtection(profile, provider) 切换整个网络的保护 任意面都生效

数值

属性 值 来源
metadata 含义 安全提供者字符串键,经 getSecurityProviderKey(meta) 解析后再查 StorageDrawers.securityRegistry.getProvider(key) BlockDrawers.java:421-422
provider 数量上限 无法核实——ItemPersonalKey 未在本仓库中展开显式 subtype 表,实际 provider 数取决于 security 包的动态注册 —

⚠️ 订正:原文"通过 metadata (damage) 值区分安全提供者索引"方向对,但源码是先用 metadata 取字符串键,再在 SecurityRegistry 里查 ISecurityProvider,并非直接拿 metadata 当数组索引。原文"需要对应的安全系统支持"也过于含糊:未注册 provider 时 getProvider 返回 null,仍会写入 owner,只是保护能力为空。

耐久与消耗

项目 值
最大耐久 无
每次使用消耗 无
使用后是否消失 否

相关条目


Tape

An item used to visually mark drawers as “taped”.

基本信息

属性 值
注册名 StorageDrawers:tape
最大堆叠 1(setMaxStackSize(1))
耐久度 / 可用次数 8(setMaxDamage(8))
贴图 StorageDrawers:tape_roll
开关 enableTape(默认 true,需重启)
合成 " x " / "yyy":'x' = "slimeball" ×1,'y' = Items.paper ×3
附魔适用 否

功能

胶带不是装饰品,而是"密封"工具。 ⚠️ 订正(严重):原文"为抽屉添加胶带视觉标记效果,属于纯装饰性功能"“使用后是否消失:否”"最大堆叠 64""耐久度 无"四项全错。

ItemTape.onItemUse(ItemTape.java:38-59)的真实逻辑:

  1. player.canPlayerEdit(...) 不通过 → return false
  2. 取 world.getTileEntity(...);若为 IProtectable 先校验 SecurityManager.hasOwnership
  3. 若为 ISealable 且 isSealed() 已为 true → return false(不能重复封)
  4. 否则 setIsSealed(true) + stack.damageItem(1, player),每次使用消耗 1 点耐久(共 8 次)
使用方式 触发条件 使用效果 条件/限制
右键点击抽屉方块 目标 TE 实现 ISealable 且未密封 密封该抽屉(setIsSealed(true)),阻止放物 需通过 canPlayerEdit 与所有权校验;已密封则无效
右键点击控制器 — 无效果:BlockController.onBlockActivated 不处理 tape —
拿着胶带对抽屉按 useKey 路径 — 无效果:if (item.getItem() == ModItems.tape) return false; 显式排除 BlockDrawers.java:433

耐久与消耗

项目 值 来源
最大耐久 / 使用次数 8 ItemTape.java:26
每次使用消耗 1 点耐久 ItemTape.java:53
使用后是否消失 8 次用尽后消失(堆叠上限 1) —

解除密封

  • 空手 + 潜行右键抽屉:若 isSealed() 为 true,则 setIsSealed(false) 并直接返回(BlockDrawers.java:368-370)——这才是解除密封的唯一方式,胶带不能用来解封
  • 被密封的抽屉同时拒绝升级以外的存取:if (tileDrawers.isSealed()) return false;(BlockDrawers.java:379)

相关条目

  • Drawer Network - 密封状态是逐方块的,不随网络整体切换

Upgrade Lock

An item used to lock or unlock drawers, preventing accidental upgrades or changes.

基本信息

属性 值
注册名 StorageDrawers:upgradeLock
最大堆叠 64(未调用 setMaxStackSize)
耐久度 setMaxDamage(0) → 无
攻击伤害加成 +2.0(AttributeModifier 硬编码)
全 3D 渲染 isFull3D() = true
贴图 StorageDrawers:drawer_key(与通用钥匙同贴图)
开关 enableLockUpgrades(默认 true)
合成 "xyx" / "yzy" / "xyx":'x' = Items.flint ×4,'y' = "stickWood" ×4,'z' = upgradeTemplate ×1
附魔适用 否

功能

锁定 / 解锁抽屉的存取操作。

使用方式

使用方式 触发条件 使用效果 条件/限制
右键点击抽屉方块 手中持有该物品 同时切换 LockAttribute.LOCK_POPULATED 和 LockAttribute.LOCK_EMPTY 为 !locked 需先通过 SecurityManager.hasAccess
右键点击抽屉且当前已锁定,命中槽位 getStoredItemCount() == 0 且 getStoredItemPrototype() != null 先执行 drawer.setStoredItemRedir(null, 0) 清除该空槽记录,然后 return true(不切换锁定状态) 特殊分支 BlockDrawers.java:400-408
右键点击控制器 手中持有该物品 te.toggleLock(EnumSet.allOf(LockAttribute.class), LockAttribute.LOCK_POPULATED, profile) —— 锁定全部属性 任意面都生效

⚠️ 订正(语义写反):原文"锁定或解锁抽屉的升级功能""锁定的抽屉无法安装或移除升级"写反了。升级安装走 addUpgrade 分支,位于 useKey 与 isSealed() 判定之前,不受这把锁影响。这把锁控制的是 ILockable 的存取属性(LOCK_POPULATED / LOCK_EMPTY),约束"已装满的抽屉 / 空抽屉"的插入提取。

耐久与消耗

项目 值 来源
最大耐久 无(setMaxDamage(0)) ItemUpgradeLock.java:25
每次使用消耗 无(切换不消耗) —
使用后是否消失 否 —

衍生物品

upgradeLock 是三把钥匙的共同材料(ModRecipes.java:392-403):

产物 配方
StorageDrawers:shroudKey 无序:upgradeLock + Items.ender_eye
StorageDrawers:personalKey 无序:upgradeLock + Items.name_tag
StorageDrawers:quantifyKey 无序:upgradeLock + Items.writable_book

相关条目

  • Drawer Network - 锁定状态按网络整体切换
  • Upgrade - 存储升级物品(不受本锁影响)

第三方集成

集成 Mod 集成类型 功能
Waila 工具提示 显示钥匙类型和效果
NEI 配方/隐藏 物品显示和隐藏
MineTweaker 脚本集成 OreDictionary 黑/白名单
GTNH 配方注册 GTNH/dreamcraft 配方系统
Backhand 副手兼容 副手交互兼容性
浏览全部模组