Quiver

基本信息

属性 值
注册名 battlegear2:quiver
类 mods.battlegear2.items.ItemQuiver
继承 net.minecraft.item.Item
接口 IArrowContainer2、IDyable、IBaubleExpanded(@Optional.Interface)
注册方式 BattlegearConfig 反射循环(见下)
箭槽数 4(ItemQuiver.java:93-95)
堆叠上限 1(ItemQuiver.java:48)
贴图 battlegear2:quiver/quiver-details、battlegear2:quiver/quiver-arrows(ItemQuiver.java:86-90)

功能

箭袋是 4 槽的箭容器,可装在副手或作为 Baubles Expanded 饰品使用。

核心特性:

  • 射箭:作为箭袋容器向 QuiverArrowRegistry 注册(BattlegearConfig.java:223),并注册弹射器行为 DispenseQuiverArrow(Items.bow, 1.0F)(BattlegearConfig.java:223)
  • 弹射器兼容:箭袋物品注册进 BlockDispenser.dispenseBehaviorRegistry(BattlegearConfig.java:223)
  • 一键取箭:潜行右键把所有槽位内的箭吐回地面;若箭袋在副手上则不触发(ItemQuiver.java:67)
  • Baubles Expanded:未潜行右键时转交 BaubleItemHelper.onBaubleRightClick(ItemQuiver.java:64-66)
  • 选中槽位:NBT 键 current 记录当前选中的箭槽(ItemQuiver.java:98-105)
  • 槽位存储:每个槽位以 NBT 键 Slot<索引> 保存(ItemQuiver.java:108-115)

注册方式说明

ItemQuiver 的构造函数不调用 GameRegistry.registerItem。它作为 BattlegearConfig 的标量 Item 字段 quiver,由 getConfig 末尾的反射循环统一注册(BattlegearConfig.java:293-306)。该循环只匹配 Item.class.isAssignableFrom(f.getType()) 的标量字段,因此 dagger / warAxe / mace / spear / shield / knightArmor 这些数组字段不在其列 —— 它们各自在构造函数内注册。

数值

数值 值 来源
槽位数 4 ItemQuiver.java:93-95
堆叠上限 1 ItemQuiver.java:48
弹射器行为 DispenseQuiverArrow,使用 Items.bow 作为弓,系数 1.0F BattlegearConfig.java:223
初始选中槽 0(新建 NBT 时写入 current = 0) ItemQuiver.java:53-55

交互

触发 行为
右键(未潜行) 若加载 Baubles Expanded,转交饰品交互(ItemQuiver.java:63-66)
右键(潜行,且不在副手) 把 4 个槽位中的箭全部吐回地面并清空槽位(ItemQuiver.java:67-79)
右键(潜行,且在副手) 无吐箭行为(ItemQuiver.java:67)
弹射器发射 通过 DispenseQuiverArrow 按选中槽位射箭(BattlegearConfig.java:223)

提示文本:Shift + right click to retrieve all arrows.(en_US.lang 的 attribute.quiver.tooltip.retrieve)。

合成配方

配方 形状 字符 来源
箭袋本体 X X/X X/XXX X = Items.leather(皮革) BattlegearConfig.java:339-340
装箭 QuiverRecipie2,无序,after:minecraft:shapeless 箭袋 + 箭 BattlegearConfig.java:342-347

相关条目