Backhand
[!INFO] Git Commit:
e794e2e| Updated: 2026-09-28
1.7.10 的副手(offhand)实现,modid 为 backhand。把原版 1.9 才有的副手系统完整回移植到 1.7.10,
并对外提供 xonin.backhand.api.core 供下游模组接入。
[!IMPORTANT] 定位:本体,不是 Battlegear2 的附属 本仓库是 Backhand 本体 + API 提供方。方向已实测确认:
battlegear2(battlegear2-for-backhand) 在其dependencies.gradle中写有api('com.github.GTNewHorizons:Backhand:1.8.8:dev'), 并import xonin.backhand.api.core.BackhandUtils/IOffhandInventory。 反向看,本仓库只在runtimeOnlyNonPublishable里拉 Battlegear2, 且带exclude module: "Backhand"——即为了避免自依赖而排除。 所以 Backhand 是上游,battlegear2 才是附属。
[!NOTE] 分类名 ≠ modid 下游那个仓库的 wiki 分类名是
battlegear2-for-backhand(relation.md), 但它的实际 modid 是battlegear2。 引用时用分类名链接,不要拿 modid 当分类名。 本仓库自身分类名与 modid 均为backhand。
依赖关系(实测 dependencies.gradle)
| 依赖 | 作用域 | 说明 |
|---|---|---|
| GTNHLib | api |
唯一硬依赖(required-after:gtnhlib@[0.6.34,)),提供配置系统 |
| TinkersConstruct / Thaumcraft / IC2 / Draconic Evolution / Galacticraft / Et-Futurum-Requiem / inventory-tweaks / Minecraft-Backpack-Mod / Baubles-Expanded / IndustrialCraft-2 | compileOnly |
仅为 late mixin 与 compat 提供编译期类型 |
| WirelessCraftingTerminal | compileOnly |
注释写明「pulls in ae2 for the mixin dep」 |
| Battlegear2-for-Backhand | runtimeOnlyNonPublishable |
仅开发运行时,且排除 Backhand |
| Curse 上的 TFC / TFC+ / Bibliocraft / Extra Utilities / Witchery | compileOnly (deobfCurse) |
curse.maven 坐标 |
除 GTNHLib 外没有任何 mod 进入 FML 依赖串——第三方适配全部由 mixin 按目标是否存在动态开关,见 TargetedMod。
结构特征
72 个 Java 文件中 42 个是 mixin,分 early(原版类,21+6)与 late(第三方 mod,15)两组, 由 BackhandLoadingPlugin 在 coremod 阶段控制。 真正的业务代码只有 28 个文件。
配置项默认值一律读自 @Config.Default* 注解,
见 BackhandConfig 与
BackhandConfigClient。
源码:/Users/evlos/a/mirror/Backhand/
关系登记:见 data/relation.md(全局 Wiki 分类映射表)
核心
- BackhandLateMixins - Late mixin 的统一开关类
- Backhand - 模组主类:modid、配置注册与副手黑名单查询
- CommonProxy - 服务端 proxy
API(对外)
- BackhandSlot - 副手容器槽位
- BackhandUtils - Backhand API 主入口:读写副手物品与副手使用回调
- EnumHand - 主手 / 副手枚举
- IBackhandPlayer - 玩家侧 Backhand 能力接口
- IOffhandInventory - 副手库存接口,含槽位切换校验
Coremod
- BackhandLoadingPlugin - IFMLLoadingPlugin:分组控制 early/late mixin 加载
Mixin 清单
- Mixins - early / late 两组 mixin 的类名清单
- TargetedMod - late mixin 的目标 mod 枚举(11 项)
Mixin(early)
- MixinContainerPlayer - 玩家容器中的副手槽位
- MixinContainer - 容器同步:把副手槽位纳入标准同步流程
- MixinEntityAITempt - 生物被物品引诱时的副手手持物品识别
- MixinEntityFishHook - 钓鱼钩的副手收线
- MixinEntityLivingBase - 生物实体层面的副手攻击处理
- MixinEntityOtherPlayerMP - 他人玩家的副手状态渲染
- MixinEntityPlayerClient - 客户端 EntityPlayer 的副手同步处理
- MixinEntityPlayerMP - 服务端玩家的副手状态同步
- MixinEntityPlayer - 向 EntityPlayer 注入副手相关字段与方法
- MixinEntityRenderer - 第三人称副手模型渲染
- MixinFMLNetworkHandler - FML 网络处理器层的副手同步
- MixinFMLOpenGui - 打开 GUI 时的副手同步
- MixinGuiContainerCreative - 创造模式物品栏的副手槽位
- MixinGuiInventory - 物品栏 GUI 的副手槽位绘制
- MixinInventoryPlayer - 扩展玩家背包,容纳第 9 个副手槽位
- MixinItemBow - 弓的副手蓄力兼容
- MixinItemRenderer - 第一人称副手物品渲染
- MixinItemStack - ItemStack 层面的副手标记
- MixinItemSword - 剑的副手攻击兼容
- MixinMinecraft - Minecraft 主类的副手输入处理
- MixinModelBiped - 玩家 biped 模型的副手臂
- MixinNetHandlerPlayClient - 客户端收包时的副手状态应用
- MixinNetHandlerPlayServer - 服务端收包时的副手状态应用
- MixinOpenGuiHandler - GUI 打开处理器层的副手同步
- MixinPlayerControllerMP - 容器修复子组的玩家控制器补丁
- MixinPlayerControllerMP - 玩家控制器:副手右键 / 攻击分派
- MixinRenderPlayer - 玩家模型的副手渲染
Mixin(late)
- MixinContainerWirelessCraftingTerminal - 无线 crafting terminal 的容器兼容
- MixinGuiHelper - 背包模组 GUI 辅助
- MixinMessageOpenBackpack - 打开背包的网络消息处理
- MixinContainerArmor - BiblioCraft 护甲容器兼容
- MixinGuiToolConfig - 龙之进化工具配置 GUI 兼容
- MixinContainerExtendedInventory - Galacticraft 扩展背包容器兼容
- MixinSlotArmor - IC2 护甲槽位兼容
- MixinClientTickEventsFML - Thaumcraft 客户端 tick 事件
- MixinEntityAspectOrb - Thaumcraft 要素球实体
- MixinTileNodeRenderer - Thaumcraft 节点渲染器
- MixinHarvestTool - TConstruct 收获工具的副手兼容
- MixinContainerPlayerTFC - TFC 玩家容器
- MixinEntityLivingHandler - TFC 生物生命值处理器
- MixinPlayerInventory - TFC 玩家背包
- MixinInventoryBrewBag - Witchery 药剂包副手槽位兼容
兼容层
- BibliocraftCompat - BiblioCraft 兼容:把其物品加入副手规则
- EFRCompat - Et-Futurum-Requiem 兼容:其方块允许副手破坏
- ExtraUtilsCompat - Extra Utilities 兼容
- IOffhandRenderOptOut - 副手渲染退出标记接口
- TConstructCompat - TConstruct 兼容:工具的副手使用行为
客户端
- BackhandRenderHelper - 副手渲染辅助工具
- ClientEventHandler - 客户端事件处理器
- ClientProxy - 客户端 proxy:注册渲染钩子与事件
- ItemRendererHooks - 物品渲染钩子:副手第一人称 / 第三人称绘制
网络包
- BackhandPacketHandler - 4 个副手数据包的注册入口
- OffhandAnimationPacket - 同步副手挥动动画
- OffhandCancelUsage - 取消正在进行的副手使用(如松开蓄力)
- OffhandSyncItemPacket - 同步副手物品内容
- OffhandSyncOffhandUse - 同步副手使用状态
配置
- BackhandConfigClient - 纯客户端配置:空副手渲染与槽位偏移
- BackhandConfig - 服务端配置:副手行为开关与物品名单
- Mods - modid 常量集合
钩子
- IContainerHook - 容器同步修复接口
- TorchHandler - 火把方块的副手放置兼容