法杖组件占位物品

基本信息

属性 值
注册名 capPlaceholder / rodPlaceholder
完整名 salisarcana:capPlaceholder / salisarcana:rodPlaceholder
基类 common/item/PlaceholderItem.java(128 行,抽象类)
端盖子类 PlaceholderItem.WandCapPlaceholderItem(PlaceholderItem.java:106-115)
核心子类 PlaceholderItem.WandRodPlaceholderItem(PlaceholderItem.java:117-126)
注册入口 PlaceholderItem.registerPlaceholders(),由 CommonProxy.java:79 在 preInit 调用
端盖开关 enhancements.replaceWandCaps
核心开关 enhancements.replaceWandCore

功能

这是本模组注册的两个纯展示用物品。它们没有堆叠实体、没有用途、不参与任何合成, 存在的唯一目的是在泰奥纳米肯(Thaumonomicon)的研究页面上充当一个图标代表一整类物品。

Thaumcraft 4 的泰奥纳米肯按 WandCap / WandRod 的注册顺序显示法杖组件, 一次只能画一个代表性物品。本模组把「原版」法杖组件收拢进两个占位物品:

  • capPlaceholder 覆盖 WandHelper.allVanillaCaps() 返回的全部原版端盖
  • rodPlaceholder 覆盖 WandHelper.allVanillaRods() 返回的全部原版核心

由于对应功能启用了「用已有法杖的魔力替换组件」, 原版组件的配方入口被这两条新配方取代,占位物品即新配方的产物。

数值

属性 值 源码
最大耐久 0(不可损耗) PlaceholderItem.java:43
启用子类型 setHasSubtypes(true) PlaceholderItem.java:44
元数据范围 0 到「基础物品数 - 1」,越界时 getIconFromDamage 返回 null PlaceholderItem.java:74-80
元数据 → 名称 越界时 getUnlocalizedName 返回 null PlaceholderItem.java:92-99

两个占位物品的元数据没有固定上界:变种数量等于 WandHelper.allVanillaCaps() / allVanillaRods() 实际返回的元素个数, 在 postInit 由 WandHelper.loadWandParts()(CommonProxy.java:143)加载完成后才确定。 因此变种数无法从源码静态核实——它取决于运行时注册了哪些端盖/核心。

物品数量是动态的:任何一个模组通过 Thaumcraft API 注册新的 WandCap, capPlaceholder 就会多出一个元数据变种,且自动沿用那个新组件的贴图与本地化名 (getUnlocalizedName 直接透传 cachedItems[damage].getUnlocalizedName())。

交互

无。占位物品不响应任何右键/左键,不入合成栏之外的功能路径。 它们是「只读」的展示条目。

PlaceholderItem.java:87 的创意模式列举使用了 new ItemStack(item, 0, index)—— 第二个参数写作栈大小 0 而非常见的 1。此处为源码原样,未见注释说明是否有意, 也未发现相关缺陷证据,仅作记录。

注册条件

两个物品分别受各自的研究设置控制,且这两个设置本身就是 ReplaceWandComponentSettings(CustomResearchSetting 的子类):

物品 注册条件 对应研究
capPlaceholder SalisConfig.features.replaceWandCapsSettings.isEnabled()(PlaceholderItem.java:30) REPLACEWANDCAPS,前置 CAP_gold,自动解锁
rodPlaceholder SalisConfig.features.replaceWandCoreSettings.isEnabled()(PlaceholderItem.java:33) REPLACEWANDCORE,前置 ROD_greatwood,自动解锁

未开启时对应物品根本不注册,其静态字段 capPlaceholder / rodPlaceholder 保持 null。详见 自定义研究。

合成配方

两物品本身不参与合成;产出它们的是 CustomRecipes.replaceWandCapsRecipe 与 replaceWandCoreRecipe (CustomRecipes.java:35-36),由 replaceWandCapsSettings / replaceWandCoreSettings 两个设置分别控制启用。

相关条目