Skip to content

猎人实体

文档版本:基于 2026-06-01 代码分析

面向对象:开发者 | 本文档描述猎人实体的AI配置和渲染技术细节。

概述

逃走中MOD包含两种自定义猎人实体:A型猎人RfmHunterEntity,可抓捕逃走者)和 B型通报猎人RfmAnnounceHunterEntity,仅通报不攻击)。两者均继承自 Minecraft 的 Zombie 类,使用自定义 Slim 玩家模型渲染,共享破门 AI(NfaBreakDoorGoal),具有免疫伤害、不可推动、永不下线等特性。


核心概念

两种猎人对比

特性A型(RfmHunterEntity)B型(RfmAnnounceHunterEntity)
攻击能力有(doHurtTarget调用抓捕逻辑)无(doHurtTarget返回false)
AI目标canBeHunted() 过滤canBeAnnounced() 过滤
通报功能8格内每500ms发射烟花
全局冷却抓捕后10秒
纹理rfm_hunter_cc.pngrfm_hunter_bb.png
NBT键RfmHunterActiveRfmHunterBActive
生成方式指令/系统逻辑神秘道具/指令

架构设计

AI Goal 配置

mermaid
graph TD
    subgraph A型["RfmHunterEntity AI"]
        A1["优先级1: NfaBreakDoorGoal"]
        A2["优先级2: ZombieAttackGoal(速度1.0)"]
        A3["优先级6: MoveThroughVillageGoal"]
        A4["优先级7: WaterAvoidingRandomStrollGoal"]
        AT1["Target1: HurtByTargetGoal"]
        AT2["Target2: NearestAttackableTargetGoal(canBeHunted)"]
    end

    subgraph B型["RfmAnnounceHunterEntity AI"]
        B1["优先级1: NfaBreakDoorGoal"]
        B2["优先级7: WaterAvoidingRandomStrollGoal"]
        BT1["Target1: HurtByTargetGoal"]
        BT2["Target2: NearestAttackableTargetGoal(canBeAnnounced)"]
    end

    A1 --> A2 --> A3 --> A4
    AT1 --> AT2
    B1 --> B2
    BT1 --> BT2

关键文件

文件说明
com/chenxi/chenxi_rfm/common/entity/RfmHunterEntity.javaA型猎人实体
com/chenxi/chenxi_rfm/common/entity/RfmAnnounceHunterEntity.javaB型通报猎人实体
com/chenxi/chenxi_rfm/common/entity/goal/NfaBreakDoorGoal.java自定义破门 AI(100tick=5秒)
com/chenxi/chenxi_rfm/client/model/entity/RfmHunterSlimModel.javaSlim 玩家模型(64x64纹理)
com/chenxi/chenxi_rfm/client/render/entity/RfmHunterEntityRenderer.javaA型渲染器
com/chenxi/chenxi_rfm/client/render/entity/RfmAnnounceHunterEntityRenderer.javaB型渲染器
com/chenxi/chenxi_rfm/common/registry/ModEntityTypes.java实体类型注册

关键流程

NfaBreakDoorGoal(破门 AI)

  1. 检测导航路径前方是否有关闭的 DoorBlock
  2. 检查是否有替代路径绕过门
  3. 无替代路径 → 开始破坏(100 tick = 5 秒)
  4. 破坏期间播放破坏动画和敲击音效
  5. 完成后 removeBlock 移除门的上半和下半

实体属性

属性说明
FOLLOW_RANGE64.0极远的索敌范围
MOVEMENT_SPEED0.28略快于普通僵尸(0.23)
伤害免疫hurt() 返回 false完全免疫所有伤害
推动免疫isPushable() 返回 false不可被推动
自然消失removeWhenFarAway() 返回 false永不自动消失
和平模式shouldDespawnInPeaceful() 返回 false和平模式不消失
音效全部返回 null完全静音
阳光敏感isSunSensitive() 返回 false白天不燃烧

渲染

  • 模型:RfmHunterSlimModel(继承 PlayerModel,slim 臂)
  • 盔甲层:HumanoidArmorLayer(inner + outer slim 盔甲)
  • 阴影半径:0.5F
  • 无 ear/cloak 部件

注意事项

  1. 两个实体共享相同的 Slim 模型,仅纹理不同
  2. A 型猎人的攻击不造成伤害,而是触发抓捕逻辑
  3. 猎人实体需 setChunkForced(true) 保证区块加载
  4. B 型猎人的烟花通报仅在距离 ≤ 8 格时触发
  5. 实体管理器每 tick 遍历并重新寻的

相关文档

最后更新: