open-hands-lib

Open Hands Lib 是一个 Minecraft 的库。每只手都有各自的攻击冷却时间,伤害和工具会通过你的模组所选择的手来传递;同样也可用于破坏方块。

基础库

Open Hands Lib

为 NeoForge 内容模组提供逐手近战冷却与挖掘功能。

如果你不是模组开发者,这是一个依赖模组。
仅当其他模组将 open_hands_lib 列为必需依赖时才安装它。它本身不添加物品、方块或游戏玩法。


Open Hands Lib 是什么?

一个 NeoForge 库,将攻击和挖掘逻辑拆分到主手副手。每只手都有自己的冷却计时器;你的内容模组决定系统何时激活以及使用哪只手。

该库管理计时器、混入和状态。你的模组注册启用条件并处理事件——库不会替你选择决斗者逻辑。


功能

战斗(为玩家启用时)

  • 每只手独立的冷却时间
  • 攻击仅在完全充能时生效——部分挥击会被有意拒绝
  • 通过 ResolveAttackHandEvent 选择手部(交替、最佳武器等)
  • 伤害、附魔和武器效果使用解析出的手部
  • 可选规则:副手正在使用物品时,允许使用主手攻击

任一注册条件为真(OR)时,战斗激活。

挖掘(启用时)

  • 工具、采掘检测、速度和耐久跟随解析出的手部
  • 通过 ResolveMiningHandEvent 选择手部
  • 按方块会话缓存,直到挖掘停止

任一注册条件为真(OR)时,挖掘激活。


要求

Minecraft 1.21.1
Java 21+
模组 ID open_hands_lib
版本 0.1.1
作者 Thow New Error
NeoForge 21.1.219+ · Kotlin for Forge 5.9.0+
Fabric Loader 0.16.14+ · Fabric API · Fabric Language Kotlin

安装

  1. 安装 NeoForge
  2. 安装 Kotlin for Forge
  3. 安装 Open Hands Lib 和依赖它的内容模组

在公开整合包中,不要重命名模组或将 jar 替换为非官方构建版本。


面向模组开发者

注册你的游戏玩法何时应激活,然后监听手部事件:

OpenHandsLib.registerEnableCondition(
    ResourceLocation.fromNamespaceAndPath("your_mod", "dual_wield"),
) { player -> /* 你的检查 */ true }

NeoForge.EVENT_BUS.register(object {
    @SubscribeEvent
    fun onResolveAttackHand(event: ResolveAttackHandEvent) {
        event.hand = InteractionHand.MAIN_HAND
    }

    @SubscribeEvent
    fun onAttackHandCompleted(event: AttackHandCompletedEvent) {
        // 交替逻辑等
    }
})

挖掘:registerMiningEnableCondition + ResolveMiningHandEvent

公共 API

  • mod.openhandslib.api.OpenHandsLib — 入口点
  • ResolveAttackHandEvent, AttackHandCompletedEvent, OpenHandsCombatStateClearEvent
  • ResolveMiningHandEvent