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.potionitemmeta 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)。