Bow
基本信息
| 属性 | 值 |
|---|---|
| 注册名 | battlegear2:bow.iron、battlegear2:bow.diamond |
| 类 | mods.battlegear2.items.ItemBowIron、mods.battlegear2.items.ItemBowDiamond |
| 继承 | net.minecraft.item.ItemBow |
| 注册方式 | BattlegearConfig 反射循环(BattlegearConfig.java:293-306) |
| 贴图 | battlegear2:bow.iron、battlegear2:bow.diamond(ItemBowIron.java:133、ItemBowDiamond.java:129) |
| 专用渲染器 | BowRendererIron、BowRendererDiamond(ClientProxy.java:98,100) |
功能
本模组提供 2 把自制弓。它们不是替换原版弓,而是额外注册的物品,可在副手使用。
核心特性:
- 满蓄力可长期保持:
getMaxItemUseDuration返回 72000(远超原版的 72000 蓄力窗口设计),两把弓一致(ItemBowIron.java:100-102、ItemBowDiamond.java:96-98) - 不可食用:
onEaten被覆写为原样返回,防止弓被当作食物吃掉(ItemBowIron.java:94-97、ItemBowDiamond.java:90-93) - Forge 事件支持:覆写
onPlayerStoppedUsing时构造并触发ArrowLooseEvent(ItemBowIron.java:28-36),onItemRightClick触发ArrowNockEvent(ItemBowIron.java:110-115) - 附魔支持:
getItemEnchantability返回 1(ItemBowIron.java:125-127、ItemBowDiamond.java:121-123),故可接受 Power / Punch / Flame / Infinity 等原版弓附魔(ItemBowIron.java:59-73) - 蓄力曲线:沿用原版
f = (f*f + f*2)/3,f < 0.1不发射,上限 1.0,满蓄力时箭矢setIsCritical(true)(ItemBowIron.java:42-57) - 原版弓渲染器接管:若
disabledRenderers不含bow,模组为原版Items.bow注册BowRenderer(ClientProxy.java:96-97)—— 这是对原版弓的渲染替换,与本模组的两把自制弓是不同条目
未注册的金弓与 Greg 弓
en_US.lang 中存在 item.battlegear2:bow.gold.name=Gold Bow 与 item.battlegear2:bow.greg.name=Greg's Bow 两条本地化字符串,但这两个物品从未被注册。BattlegearConfig 中相关代码整段被注释:
public static ItemBow mobBowIron, modBowDiamond; // modBowGold ,modBowGreg;
...
// modBowGold = (ItemBow) new ItemBowGold().setUnlocalizedName(...)
// modBowGreg = (ItemBow) new ItemBowGreg().setUnlocalizedName(...)
(BattlegearConfig.java:73, 210-213)
ClientProxy 中对应的渲染器注册同样被注释(ClientProxy.java:99-101)。全仓库检索 ItemBowGold / ItemBowGreg 仅命中上述注释行,ItemBowGold.java 与 ItemBowGreg.java 两个源文件不存在。这两个物品属于死代码,不构成注册内容。
数值
两把弓的差异仅在耐久与每发损耗:
| 数值 | Iron Bow | Diamond Bow | 来源 |
|---|---|---|---|
| 最大耐久 | 576 | 768 | ItemBowIron.java:24、ItemBowDiamond.java:24 |
| 每发耐久损耗 | 1 | 2 | ItemBowIron.java:75、ItemBowDiamond.java:75 |
| 最大使用时长 | 72000 | 72000 | ItemBowIron.java:101、ItemBowDiamond.java:97 |
| 附魔能力 | 1 | 1 | ItemBowIron.java:126、ItemBowDiamond.java:122 |
| 堆叠上限 | 1 | 1 | ItemBowIron.java:23、ItemBowDiamond.java:23 |
箭矢伤害、击退、燃烧时间由原版
Enchantment.power/punch/flame与EntityArrow决定,不在本仓库中实现,具体数值无法从本仓库核实。
交互
| 触发 | 行为 |
|---|---|
| 右键 | 触发 ArrowNockEvent;创造模式或背包有箭时进入蓄力(ItemBowIron.java:110-122) |
| 松开右键 | 触发 ArrowLooseEvent,按蓄力计算箭矢速度 f * 2.0F(ItemBowIron.java:28-91) |
| 蓄力 < 0.1 | 不发射(ItemBowIron.java:45-47) |
| 拥有 Infinity 或创造模式 | 箭矢设为 canBePickedUp = 2,不消耗箭(ItemBowIron.java:38-39, 82-83) |
| 右键食用 | 无效果(onEaten 原样返回,ItemBowIron.java:94-97) |
合成配方
两把弓共用形状 ShapedOreRecipe,仅材料不同(BattlegearConfig.java:357-380):
#I
# I
#I
| 字符 | 物品 |
|---|---|
# |
Items.iron_ingot(铁弓)/ Items.diamond(钻石弓) |
I |
Items.string(线) |
两者均可被 Disabled Recipies 中的 bow 关闭。
相关条目
- Battlegear 附魔 - Bow Luck 与 Bow Drawnback 仅作用于弓
- MB Arrow - 本模组的 9 种箭矢
- Quiver - 副手箭袋可替代副手弓