Backhand 集成
基本信息
| 属性 | 值 |
|---|---|
| 依赖等级 | api(编译期 + 运行期强依赖) |
| 声明位置 | dependencies.gradle:5 |
| 坐标 | com.github.GTNewHorizons:Backhand:1.8.8:dev |
| 上游仓库 | https://github.com/GTNewHorizons/Backhand |
| Java 包 | xonin.backhand.* |
| 引用文件数 | 21 |
功能
这是本 fork 的核心。 README 明确说明:
This version depends on Backhand and doesn’t have any dedicated equipment slots. (
README.md)
上游 Battlegear 2 原本有自带的 battle 背包槽位,本 fork 移除了这些专用槽位,改由 Backhand 提供副手。因此本模组所有「副手」相关逻辑都改为调用 BackhandUtils,而不是自己的槽位系统。
使用的 Backhand API
| API | 用途 | 示例位置 |
|---|---|---|
BackhandUtils.getOffhandItem(player) |
读副手物品 | BattlegearUtils.java:82, 452、SpecialActionPacket.java:44 |
BackhandUtils.setPlayerOffhandItem(player, stack) |
写副手物品 | BattlegearUtils.java:104 |
BackhandUtils.getOffhandSlot(player) |
取副手槽位 | BattlegearRenderHelper.java:210 |
BackhandUtils.isUsingOffhand(player) |
判断是否正在使用副手 | ItemShield.java:110、QuiverItremRenderer.java:73 |
player.battlegear2$getOffhandSlot() |
混注入的副手槽位访问器 | BattlemodeHookContainerClass.java:363 |
按功能分类的调用点
| 子系统 | 调用点 |
|---|---|
| 格挡 / 体力条 | BattlegearClientTickHandeler.java:63, 98(ItemShield 必须在副手才生效) |
| 盾击 | SpecialActionPacket.java:44(从副手取盾计算击退与伤害) |
| 战斗模式 / 双持 | BattlemodeHookContainerClass.java:94, 107, 316, 411 |
| 箭袋 | ItemQuiver.java:67(在副手时禁用「潜行右键吐箭」) |
| 射箭 | BowHookContainerClass2.java:48、QuiverArrowRegistry.java:132, 183 |
| 掉落物 / 战利品 | BattlemodeHookContainerClass.java:404-412(先查主手再查副手) |
| 动画 | EnumBGAnimations.java:23 |
| 渲染 | BattlegearRenderHelper.java:210, 253, 291、ShieldRenderer.java:104、QuiverItremRenderer.java:73 |
| HUD | BattlegearInGameGUI.java:59, 78 |
| 客户端事件 | BattlegearClientEvents.java:88、BattlegearClientTickHandeler.java:63, 98、ClientProxy.java:73 |
| 箭矢实体 | AbstractMBArrow.java:107 |
| 玩家 tick | BattlegearTickHandeler.java:54 |
| 生物 hook | MobHookContainerClass.java:99 |
| 渲染器兼容 | ShieldRenderer.java:16 导入 xonin.backhand.compat.IOffhandRenderOptOut |
渲染器退出机制
ShieldRenderer 导入 Backhand 的 IOffhandRenderOptOut 接口(ShieldRenderer.java:16),并在 !BackhandUtils.isUsingOffhand(Minecraft.getMinecraft().thePlayer) 时走不同渲染分支(ShieldRenderer.java:104)—— 即盾牌不在副手时由 Backhand 接管其第一人称渲染。
数值
本条目不含独立数值页 —— Backhand 自身的副手槽位、按键等参数属于 Backhand 模组,不在本仓库范围内。
跨界内容隔离说明:
backhand分类是另一个条目,记录的是 Backhand 模组本身。本条目只记录 Battlegear2-for-Backhand 调用 Backhand API 的位置。Backhand 自身的配置项、键位、槽位规则请查阅 backhand 分类,本条目不复制其内容。
交互
| 条件 | 行为 |
|---|---|
副手为 IShield |
启用格挡体力条与盾击(BattlegearClientTickHandeler.java:98-137) |
| 副手为箭袋 | 「潜行右键吐箭」被禁用(ItemQuiver.java:67) |
副手为非 IShield |
盾牌潜行右键的接箭开关才会生效(ItemShield.java:110) |
| 客户端渲染 | 盾牌不在副手时交由 IOffhandRenderOptOut 机制处理(ShieldRenderer.java:104) |
合成配方
不适用。
相关条目
- 盾牌 - 副手防御装备
- Spear - 唯一允许副手持盾的武器
- Quiver - 副手行为与 Backhand 绑定
- Special 键位 - 两条分支都依赖副手判定