Drinking Helmet

基本信息

属性 值
注册名 betterstorage:drinkingHelmet
类 net.mcft.betterstorage.item.ItemDrinkingHelmet(继承 ItemArmorBetterStorage)
护甲材料 EnumHelper.addArmorMaterial("drinkingHelmet", 11, new int[] { 3, 0, 0, 0 }, 15)
护甲位置 头盔槽(super(material, 0, 0))
稀有度 基础 rare;有 Lore 时为 epic(ItemDrinkingHelmet.java:83)
创造标签 BetterStorage.creativeTab

来源:src/main/java/net/mcft/betterstorage/content/BetterStorageItems.java:61;src/main/java/net/mcft/betterstorage/item/ItemDrinkingHelmet.java:41-48, 83。

功能

Drinking Helmet 是一个装药水的头盔:右键喝下头盔内的药水,效果与药水本身完全一致。它也是本 mod 的「战利品展示品」——地牢中生成的特殊头盔带有名牌、Lore 与附魔。

  • 护甲值 3(仅头盔位),耐久 11,可附魔值 15(ItemDrinkingHelmet.java:41-42)
  • 内部最多存放 2 组药水(StackUtils.getStackContents(drinkingHelmet, 2),ItemDrinkingHelmet.java:111)
  • 头盔内的药水效果通过 NBT Effects 列表保存,右键饮用
  • 图标根据剩余药水切换(ItemDrinkingHelmet.java:60)
  • 定制模型:ModelDrinkingHelmet(ItemDrinkingHelmet.java:77)

地牢战利品(src/main/java/net/mcft/betterstorage/misc/DungeonLoot.java:23-46):

战利品 生成位置 权重
普通头盔 DUNGEON_CHEST 1.0
普通头盔 PYRAMID_DESERT_CHEST 2.0
普通头盔 PYRAMID_JUNGLE_CHEST 2.0
普通头盔 STRONGHOLD_CORRIDOR 1.0
普通头盔 STRONGHOLD_CROSSING 1.0
特殊头盔「Nishmet」 PYRAMID_DESERT_CHEST 0.2

「Nishmet」是硬编码的传奇头盔(DungeonLoot.java:35-45):

  • 名字 Nishmet
  • 内含抗火药水(Items.potionitem meta 8259)与治疗药水(meta 8229)
  • 附魔:火焰保护 V、火焰附加 III、耐久 II
  • Lore:"i fail at names for items" -Nishtown

数值

数值名 值 来源
护甲值(头盔) 3 ItemDrinkingHelmet.java:42 new int[] { 3, 0, 0, 0 }
护甲耐久 11 同上第 2 个参数
护甲可附魔值 15 同上第 4 个参数
内部药水槽数 2 ItemDrinkingHelmet.java:111
基础稀有度 rare ItemDrinkingHelmet.java:83
带 Lore 稀有度 epic 同上

交互

触发 行为
佩戴 提供 3 点护甲
右键 喝下头盔内的药水并产生对应效果
装备栏满 需先卸下头盔

合成配方

由自定义 DrinkingHelmetRecipe 合成(src/main/java/net/mcft/betterstorage/misc/Recipes.java:204;实现见 src/main/java/net/mcft/betterstorage/item/recipe/DrinkingHelmetRecipe.java:15-21,继承 ShapedRecipes),形状为 3×1:

P H P
字符 物品
P 药水(Items.potionitem,接受物品字典 WILDCARD_VALUE,即任意药水)
H 已有的 Drinking Helmet(接受 WILDCARD_VALUE,任意 NBT 的头盔)

成品头盔会把左右两侧的药水写回 NBT(DrinkingHelmetRecipe.getCraftingResult,:24-37:扫描合成栏找到头盔后,读取其左右相邻槽 i + 1 与 i - 1,经 ItemDrinkingHelmet.setPotions 存入)。因此在合成台中用 2 个药水包住 1 个头盔即可装填,最多装 2 组药水。

该配方在 RecipeSorter 中注册为 betterstorage:drinkinghelmetrecipe(src/main/java/net/mcft/betterstorage/misc/Recipes.java:46)。

相关条目