DoxHitbox

DoxHitbox

精确的逐部位OBB命中盒(头部/躯干/手臂/腿部),与渲染姿态相匹配。

简短描述

一个独立引擎,为类人实体提供每个身体部位的精确有向包围盒(OBB)命中判定——包括头部、躯干、手臂和腿部——这些判定会跟随实际渲染姿态(站立、潜行、游泳、爬行、鞘翅飞行、睡觉、骑乘、攻击,以及这些状态之间的过渡)。命中通过射线/平板测试与这些包围盒进行解析,因此所见即所击。该引擎本身提供命中盒几何体、调试线框和调整工具;其他模组可在此基础上构建基于部位的伤害系统。

特性

  • 为类人生物(玩家、僵尸/骷髅,以及带有标签的自定义类人生物)提供每部位OBB命中盒,根据原版姿态数学重现。
  • 渲染精确——捕捉实际渲染的部位矩阵;对于服务器无法复现的动画(例如玩家动画模组),观察中的客户端会流式传输部位快照,使命中检测仍然匹配(“射击者优先”)。
  • 每实体统一缩放配置,适用于超大型生物(例如巨人)——命中盒随渲染模型缩放。
  • 开发者钩子(DoxPoseHooks):注入上半身扭转/滚动(倾斜)、手臂覆盖(武器姿态)、爬行标志和流式传输谓词——基于服务器同步状态的纯函数。
  • 非类人部位——牛、鸡、蜘蛛、铁傀儡和其他非双足生物获得从其渲染模型捕捉的每部位命中盒(无需每实体配置,无距离限制)。
  • 近战、箭矢和子弹判定——引擎也负责所有非枪械类部位的判定:近战和箭矢通过DoxAttackJudge解析部位;安装TACZ后,子弹命中也在此解析(射击方权威,空位瞄准=穿透)。
  • 武器刀刃近战——安装Better Combat后,挥砍的部位由实际武器(剑/斧)的刀刃位置决定,该位置从其渲染模型捕捉——每种武器使用自己的刀尖/长度,无需硬编码。
  • 调试工具: /doxhitbox debug线框叠加层,以及可摆姿势的无敌假人(/doxhitbox dummy <stand|crouch|swim|elytra|sleep|...>)用于对齐调整。配置热重载。

需求

  • Forge 1.20.1。无需其他模组。(TACZ / Better Combat为可选——存在时自动集成。)

给模组开发者的信息

  • DoxObbHit.resolveHit(target, p0, p1) → 返回部位ID或"MISS";resolveHitContact(从不MISS,吸附最近点);hasObbHitbox(target),clipStanding/clipProne。
  • DoxAttackJudge.resolvePart(damageSource, victim) —— 近战/箭矢部位判定入口点(消费模组读取部位字符串并应用倍率/肢体生命值)。
  • DoxClaimBus —— 注册处理器以应用射击方权威判定的伤害(此处判定,在你的模组中造成伤害)。
  • DoxGenericParts —— 服务端存放客户端解析的部位(射击者优先近战和普通生物)。
  • DoxPoseHooks —— armOverride,upperBodyTwist,upperBodyRoll,extraCrawl,poseSyncPredicate。
  • 标签 doxhitbox:obb_humanoid(entity_types)可将实体纳入类人OBB命中盒。

所有项目均由AI制作。